11月4日,Docker发布了1.9版本,实现了原本实验性的Networking组件的支持。用户可以在Swarm中使用它或者将其作为Compose 工具。创建虚拟网络并将其连接到容器上,可实现多个主机上容器相互通信,并且实现不同的应用程序或者应用程序不同部分能够相互隔离。互联子系统设计为可插拔式,兼容VXLAN或者IPVLAN等技术。
Docker 容器实现跨主机通讯主要通过几种方式:自带overlay network插件,第三方插件如weave、ovs等,docker swarm(虽然也是通过key value service进行调用)。在这里主要介绍直接使用自带插件,以及通过docker swarm的两种实现方式。
直接使用自带插件实现容器跨主机访问
测试环境为ubuntu14.04。根据docker建议要求,将内核升级到3.19.如果内核版本过低,将会出现overlay network创建失败或加入失败等一系列问题。
内核升级
#apt-get install linux-generic-lts-vivid
升级完成,重启主机。
# uname -a
Linux ukub09 3.19.0-33-generic #38~14.04.1-Ubuntu SMP Fri Nov 6 18:17:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
启动key value service
可以选择使用zookeeper、etcd、consul等多种组件。本例使用额外一台虚拟机,启用和官方文档相一致的consul镜像。
docker $(docker-machine config consul2) run -d \
-p "8501:8500" \
-h "consul" \
progrium/consul -server -bootstrap
此时可以通过ip:8501对consul服务进行访问。
将key value service信息加入docker daemon
修改希望加入docker overlay network的所有主机上docker daemon服务。
#vi /etc/dafault/docker
DOCKER_OPTS='
-H tcp://0.0.0.0:2376
-H unix:///var/run/docker.sock
--cluster-store=consul://172.25.2.43:8501
--cluster-advertise=eth0:2376
'
通过修改以下两个参数实现
--cluster-store= 参数指向docker daemon所使用key value service的地址
--cluster-advertise= 参数决定了所使用网卡以及docker daemon端口信息
重启docker服务。
#service docker restart
docker 网络的创建与操作
此时可以通过docker netwo
Docker 容器实现跨主机通讯主要通过几种方式:自带overlay network插件,第三方插件如weave、ovs等,docker swarm(虽然也是通过key value service进行调用)。在这里主要介绍直接使用自带插件,以及通过docker swarm的两种实现方式。
直接使用自带插件实现容器跨主机访问
测试环境为ubuntu14.04。根据docker建议要求,将内核升级到3.19.如果内核版本过低,将会出现overlay network创建失败或加入失败等一系列问题。
内核升级
#apt-get install linux-generic-lts-vivid
升级完成,重启主机。
# uname -a
Linux ukub09 3.19.0-33-generic #38~14.04.1-Ubuntu SMP Fri Nov 6 18:17:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
启动key value service
可以选择使用zookeeper、etcd、consul等多种组件。本例使用额外一台虚拟机,启用和官方文档相一致的consul镜像。
docker $(docker-machine config consul2) run -d \
-p "8501:8500" \
-h "consul" \
progrium/consul -server -bootstrap
此时可以通过ip:8501对consul服务进行访问。
将key value service信息加入docker daemon
修改希望加入docker overlay network的所有主机上docker daemon服务。
#vi /etc/dafault/docker
DOCKER_OPTS='
-H tcp://0.0.0.0:2376
-H unix:///var/run/docker.sock
--cluster-store=consul://172.25.2.43:8501
--cluster-advertise=eth0:2376
'
通过修改以下两个参数实现
--cluster-store= 参数指向docker daemon所使用key value service的地址
--cluster-advertise= 参数决定了所使用网卡以及docker daemon端口信息
重启docker服务。
#service docker restart
docker 网络的创建与操作
此时可以通过docker netwo