部署步骤

  • 首先在服务器上安装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内的容器就能发现一切功能都正常了. 好了,完结,撒花!!!