新服务器部署docker的注意事项
部署步骤:
首先在服务器上安装docker和docker-compose,以centos为例:
首先安装最新版docker,执行下方命令
# 删除旧版本的docker
yum remove docker docker-common docker-selinux docker-engine
# 安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置Docker yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
yum install docker-ce
然后安装最新版docker-compose,执行下方命令:
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
关闭服务器的自带防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
安装iptables服务替代系统自带防火墙
# 安装
yum -y install iptables-services
# 设置开机自启
systemctl enable iptables.service
关闭selinux安全策略
# 编辑selinux配置文件,让selinux不开机自启
vim /etc/sysconfig/selinux
# 修改为
SELINUX=disabled
# 编辑完成退出后,执行
setenforce 0
# 再次查看状态
getenforce
# 此时状态值应为 Permissive
可能遇到的问题
当这些都设置好之后,docker-compose启动后发现不能正常访问docker容器中的mysql数据库,查看日志发现报错:
dial tcp 10.96.0.1:443: getsockopt: no route to host
解决方案
出现这些问题的原因主要是iptables规则乱了,需要执行以下命令解决:
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start docker
运行完上述命令之后,然后重启docker-compose内的容器就能发现一切功能都正常了. 好了,完结,撒花!!!