新服务器部署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
- 首先安装最新版docker,执行下方命令:
- 关闭服务器的自带防火墙
- 关闭防火墙
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内的容器就能发现一切功能都正常了. 好了,完结,撒花!!!