使用docker安装mysql、redis

首先要安装docker环境。

接着配置docker镜像源为国内镜像,提高拉取速度。

查看docker daemon.json文件内容:

cat /etc/docker/daemon.json

新增阿里镜像源库:

vim /etc/docker/daemon.json

内容为:

{
    "insecure-registries": ["192.168.107.51:5000"],
    "registry-mirrors": ["https://mltfzuzk.mirror.aliyuncs.com"],
    "dns": ["8.8.8.8","8.8.4.4"]
}

其中:insecure-registries配置的为docker私人仓库地址。没有docker仓库可以不用配置。

如果daemon.json异常的话,重启docker会提示Job......开头的异常。

如果提示没有vim,则安装vim:

yum -y install vim-enhanced

修改daemon.json后,使配置生效:

sudo systemctl daemon-reload

重启docker:

sudo systemctl restart docker

正常启动后,可以使用docker version 查看docker版本信息。
在这里插入图片描述

安装mysql 5.7.24

拉取mysql镜像

docker pull mysql:5.7.24

拉取成功后,可使用docker images 查看本地docker镜像。

拉取redis镜像,直接拉取最新版:

docker pull redis

在这里插入图片描述
安装mysql,并映射端口,挂载目录:

docker run --restart always \
	--name mysql.5.7.24 \
	-p 3306:3306 \
	-v /usr/soft/mysql-3306/data:/var/lib/mysql \
	-v /usr/soft/mysql-3306/conf.d:/etc/mysql/conf.d  \
	-v /usr/soft/mysql-3306/etc.mysql:/etc/mysql  \
	-e MYSQL_ROOT_PASSWORD=123456\
	-d mysql:5.7.24 

查看挂载目录:

docker inspect mysql.5.7.24  | grep Mounts -A 20

安装redis:

docker run --restart=always \
	--name redis \
	--privileged=true \
	-p 6379:6379 \
	-v /etc/localtime:/etc/localtime \
	-v /usr/soft/redis/redis.conf:/etc/redis/redis.conf \
	-v /usr/soft/redis/data:/data \
	-d redis redis-server /etc/redis/redis.conf \
	--appendonly yes \
	--requirepass "123456@2021" 

参数说明:

–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /usr/soft/redis/redis.conf:/etc/redis/redis.conf :映射配置文件
-v /usr/soft/redis/data:/data:映射数据目录
redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程
–appendonly yes:开启数据持久化

自定义redis.conf 文件内容:

redis.conf进行如下的修改
注释掉 bind 127.0.0.1   #注释掉这部分,这是限制redis只能本地访问
注释掉 daemonize no   #默认no
修改 protected-mode 为no 

如果启动容器时没有指定,自动重启,后面可以使用命令:

设置自动启动:docker update 应用镜像名称 --restart=always

至此,mysql和redis都已经可以使用了,或许你会发现,这里并没有修改服务器的防火墙或者端口,是不是就很神奇。

如果后续修改了防火墙的端口,或者重启了防火墙,则需要单独开放3306和2379两个端口。因为默认在启动这两个镜像的时候,容器应该是自动添加了iptables的映射规则。但是端口的映射走的是dockerId映射的规则,而重启防火墙后,这些规则就失效了。所以会导致mysql和redis连接失败的情况。

查看开放端口列表:firewall-cmd --list-ports

开放3306和6379端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=6379/tcp --permanent

开启后需要重启防火墙才生效 :firewall-cmd --reload
在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页