docker ce 使用及两台docker集群通信配置详解

1 docker ce 介绍

1.1 docker ce功能

Docker CE是简单的经典OSS Docker企业版。
Docker EE是在某些系统上获得认证,并由Docker Inc.提供支持 的 Docker CE版本。
Docker CS(商业支持)是版本<= 1.13的Docker EE的旧捆绑版本。

Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。

事实上,Docker CE 17.03,可理解为Docker 1.13.1的Bug修复版本。因此,从Docker 1.13升级到Docker CE 17.03风险相对是较小的。

DockerEE强化重点:EE版本到底强化了哪些,重中之重就是安全,安全,安全。

1.2 docker ce安装

步骤0:停止已有docker,做好相关卸载工作。

docker stop d978(已有容器停止)
  service docker stop

  rpm -qa | grep docker
  rpm -e docker-client-1.12.6-32.git88a4867.el7.centos.x86_64
  yum -y remove docker.x86_64
  yum -y remove docker-selinux.x86_64
  getenforce
  setenforce 0

步骤1:停止防火墙(centos7.X)

systemctl stop firewalld
systemctl disable firewalld

步骤2:安装相关

yum install bridge-utils
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum update -y
yum install docker-ce

步骤3:docker启动:
1)daemon方式,此方式会采用docker默认配置进行启动。

systemctl start docker

2、网桥部署

Docker创建新网桥并且固定容器IP
1)、创建一个桥接网络。

docker network create -d bridge --subnet 10.0.1.0/24  net1010

2)、docker run一个image的时候,使用–ip指定IP

docker run --net= net1010 --ip=10.0.1.216 -it --privileged ab44245321a8

3)、检查设置IP是否生效
docker attach容器ID ###该容器ID是上面docker run命令时生成的。
在容器内,ifconfig或者ip a查看IP,是否与我们的–ip参数一致。

4)检查docker容器配置
docker inspect 容器ID,
然后找到NetworkSettings–>Networks–>testnet(docker network create的网桥名称)
–>IPV4Address

5)验证IP是否能永久保存

    步骤1:停止容器:docker stop 容器ID;
    步骤2:继续使用4)的docker inspect检查容器;
    步骤3:启动容器:docker start 容器ID;
    步骤4:验证IP:docker attache容器ID,进入容器ifconfig或者ip a。

3、已有容器的网络关联到网桥

1)停止已有网络连接

docker network disconnect bridge 0da1为新建的容器

2)新建网络连接

docker network connect net1010 0da1

3)检测容器

docker inspect 0da1

4、docker内部与docker宿主机通信

通过ifconfig查看各自启动的docker。
通过dockerip ping不同主机看能否ping通。

5、window机器和已有机器通信。

route add 10.0.1.0 mask 255.255.255.0 10.10.11.11 metric 2
通过如下图示通信:

docker ce 使用及两台docker集群通信配置详解

6、网络不通问题复盘

如上图所示:
问题为:宿主机2中的docker 10.0.2.2 能ping通左侧的docker集群(宿主机1上的);
宿主机1上的docker集群中的任何一台机器都不能ping通10.0.2.2,但是能ping通过宿主机2 10.0.2.1。
排查步骤:

步骤1:确认路由配置ok。
正确写法:route add -net 10.0.1.0/24 gw 10.10.11.11。(图示不严谨,会报错)

步骤2:检查防火墙是否已经关闭。

service iptables stop
chkconfig iptables off
chkconfig --list iptables  

步骤3:检查有没有ip冲突、mac冲突。

步骤4:检查路由信息

route

步骤5:检查arp信息

arp -a

步骤6:查看是否设置了ip转发
设置方法:

# echo 1 >/proc/sys/net/ipv4/ip_forward

永久设置方法:
在/etc/sysctl.conf末尾添加:

net.ipv4.ip_forward = 1

设置完确保生效,需要执行:

# sysctl -p /etc/sysctl.conf

步骤7:如果以上还不可以,那就重启吧。
最终,重启解决。耗时5h。
根因: IPv4 转发未生效,重启后生效。(总感觉不是),或者是我路由IP设置有误。(大意失荆州)

参考:https://linux.cn/article-5595-1.html

7、小结

使用docker ce的目的是:它能解决docker固定IP的问题。
早期的docker版本,每次重启后,IP都是动态变化的。尝试过N多方法,都不能有效解决。


作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/78209044

上一篇:IOS开发---菜鸟学习之路--(十二)-利用ASIHTTPRequest进行异步获取数据


下一篇:servlets的表单提交响应