新服务器部署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内的容器就能发现一切功能都正常了. 好了,完结,撒花!!!