首先要安装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