实验环境
ip | 服务 | 备注(别名) |
---|---|---|
192.168.1.12 | Docker/consul | server1 |
192.168.1.13 | Docker | server2 |
实验目的
server1:运行2个容器bbox1和bbox2
server2:运行2个容器bbox3和bbox4
net1(overlay网络):bbox1和bbox4使用通信
net2(overlay网络):bbox2和bbox3使用通信,并手动指定网段为10.10.10.0,且bbox2使用10.10.10.100/24地址,bbox3使用10.10.10.100/24地址
同时bbox1也可与net2网络的容器通信
前面已经有了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker主机内容器通信的问题。
本文将介绍docker的跨主机网络的一些基础概念以及简单的结构(overlay)
现在来想一个生产环境,在生产环境中,希望每一台docker主机都只去运行一个服务的集群即可。如
一台docker主机运行web集群
一台docker主机运行mysql集群
一台docke主机运行php集群
可是如果想要这些环境像我们所需要的那样,以LNMP的架构运行,务必每台主机间的容器之间是需要通信的。就用到了本文的跨主机容器通信的方案
如果要编排的容器较多,建议使用目录将docker-compose.yml分隔开来
[root@localhost ~]# mkdir test
[root@localhost ~]# cd test/
[root@localhost test]# vim docker-compose.yml
nginx:
container_name: nginx91
image: nginx:latest
ports:
- "8091:80"
volumes:
- /www/wwwroot/8091:/usr/share/nginx/html
hostname: nginx.test.com
#
nginx-php:
container_name: nginx92
image: nginx:latest
ports:
- "8092:80"
volumes:
- /www/wwwroot/8092/:/usr/share/nginx/html
hostname: nginx-php.test.com