Docker安装Redis,让宿主机可以访问

摘要:
--namemyredis指定该容器名称,查看和进行操作都比较方便。-v挂载目录,规则与端口映射相同。为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。

一、拉取镜像

docker pull redis #后面可以带上tag号, 默认拉取最新版本

二、查看镜像

docker images #查看容器中的镜像

三、启动并做映射(以配置文件方式启动)

1、创建配置文件目录存放redis.conf,文件从官网下载http://download.redis.io/redis-stable/redis.conf

2、创建文件夹,新建配置文件贴入从官网下载的配置文件并修改

1)创建redis.conf文件

mkdir -p /usr/local/docker/conf #创建文件夹

vi /usr/local/docker/conf/redis.conf #创建文件

2)创建redis保存数据的data文件

mkdir /usr/local/docker/data  #启动容器时自动创建,可以不自己创建

3、修改启动默认配置(从上至下依次):

bind 127.0.0.1#注释掉这部分,这是限制redis只能本地访问

protected-mode no#默认yes,开启保护模式,限制为本地访问

daemonize no #默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选)

dir ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

4、docker启动redis命令

docker run -p 6379:6379 --name myredis -v /usr/local/docker/conf/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis(镜像ID/name) redis-server /etc/redis/redis.conf --appendonly yes

命令解释说明:

-p 6379:6379端口映射:前表示主机部分,:后表示容器部分。

--namemyredis指定该容器名称,查看和进行操作都比较方便

-v挂载目录,规则与端口映射相同。

为什么需要挂载目录:个人认为docker是个沙箱隔离级别的容器,这个是它的特点及安全机制,不能随便访问外部(主机)资源目录,所以需要这个挂载目录机制。

-dredis表示后台启动redis

redis-server /etc/redis/redis.conf以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/conf/redis.conf

Docker安装Redis,让宿主机可以访问第1张

--appendonly yes开启redis 持久化

5、查看是否运行成功

docker ps

Docker安装Redis,让宿主机可以访问第2张

6、docker基本命令:

  • 查看所有镜像docker images
  • 删除镜像(会提示先停止使用中的容器)docker rmi 镜像name/镜像id
  • 查看所有容器docker ps -a
  • 查看容器运行日志docker logs 容器名称/容器id
  • 停止容器运行docker stop 容器name/容器id
  • 终止容器后运行docker start 容器name/容器id
  • 容器重启docker restart 容器name/容器id
  • 删除容器docker rm 容器name/容器id

四、安装过程中可能会出现的问题

1、Docker容器做端口映射报错:Error response from daemon: driver failed programming external connectivity on endpoint myredis (1a4bb4e9227ae5f65

63b016c03c50a2b53174cae6b6ecd9f750b8fd6ce458c8e): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6379 -j DNAT --
to-destination 172.17.0.2:6379 ! -i docker0: iptables: No chain/target/match by that name.

解决:docker服务启动时定义的自定义链DOCKER被清除
重启即可

systemctl restart docker

2、docker容器启动失败,查看日志报错:chown: changing ownership of '.': Permission denied

# 查看日志
docker logs -f containerNmae

解决方法有这么三个:

  • 在docker run中加入 --privileged=true 给容器加上特定权限
  • 关闭selinux
  • 在selinux添加规则,修改挂载目录

关闭selinux

[root@localhost ~]# getenforce

Enforcing

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce

Permissive

永久关闭:

[root@localhost ~]# vi /etc/sysconfig/selinux

SELINUX=enforcing 改为SELINUX=disabled

Docker安装Redis,让宿主机可以访问第3张

重新启动容器已经正常

Docker安装Redis,让宿主机可以访问第4张

参考:https://www.cnblogs.com/shihuibei/p/10663112.html

https://blog.csdn.net/weixin_42456466/article/details/87270959

免责声明:文章转载自《Docker安装Redis,让宿主机可以访问》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇71.Ext.form.ComboBox 完整属性Mysql数据库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

20200311 5. Response

5. Response 响应( response)对象封装了从服务器返回到客户端的所有信息。在 HTTP 协议中,从服务器传输到客户端 的信息通过 HTTP 头信息或响应的消息体。 5.1 缓冲 Servlet 容器允许但不必为了提高效率而缓冲到客户端的输出。典型的服务器默认都是缓冲的,但允许 servlet 指定缓冲参数。 ServletResponse...

完美日记:实现高弹性高稳定电商架构

公司简介 完美日记(Perfect Diary)是广州市“独角兽”创新企业——广州逸仙电子商务有限公司旗下首个美妆品牌,创立于2017年,用心为新生代女性开发高品质、精设计、易上手的彩妆及护肤产品,立志于打造有国际影响力的Chinese Beauty Icon。 完美日记上线不到两年即成为天猫彩妆销冠,2019年成为11年来第一个登上天猫双十一彩妆榜首的国...

docker添加sshd 服务

1、docker run -it centos /bin/bash 2、yum install openssh-server 3、/usr/sbin/sshd -D 会提示报错先 /usr/sbin/sshd-keygen -A 即可 passwd root 给root创建密码 [root@localhost ~]# docker ps -a CON...

java操作Redis

Java访问redis Java操作redis string(字符串) hash(哈希) list(列表) set(集合)  zset(sorted set:有序集合) package com.cjh; import redis.clients.jedis.Jedis; /** * @author * @site * @company * @...

Docker是什么

Docker是世界领先的软件容器平台,所以想要搞懂Docker的概念我们必须先从容器开始说起。如果你想和更多Docker技术专家交流,可以加我微信liyingjiese,备注『加群』。群里每周都有全球各大公司的最佳实践以及行业最新动态。 先从认识容器开始 什么是容器? 先来看看容器较为官方的解释:一句话概括容器:容器就是将软件打包成标准化单元,以用于开发...

Android layout属性之gravity和layout_gravity

1. gravity用来描述当前view的内容在view中的位置。 gravity是控制其内容或者包含的views在该view(或view group)中的位置 2. layout_gravity是表示该view在其父容器view group中的位置。 该属性只在父容器是LinearLayout和FrameLayout时有效 gravity的中文意思就是...