我有以下情况,如下所示:
如您所见,我安装了两个docker主机, Dockerhost1 和 Dockerhost2 。在两台主机内部, 2 Zookeeper 容器正在运行。
我想,所有Zookeeper容器都要相互了解,因为我想构建一个集群环境。
可以使用以下网络:
Dockerizer@docker1:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
dbf91cc26912 bridge bridge local
57f38c4c93ad host host local
5d54f5ce807e none null local
我的问题是:
我必须在哪个网络中运行Zookeeper
个容器?我想在host
网络上猜测?
要在主机上运行两个容器,我将创建一个包含以下内容的撰写文件:
version: '3.1'
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888
如何配置网络,他们彼此了解?
建议安装docker swarm,使其成为群集?
答案 0 :(得分:1)
我可能实现swarm模式,不是为了群集调度和管理容器作为缩放服务,而是用于包含的覆盖网络。您可以设置自己的k / v商店并将其用于覆盖网络,但主机1运行起来要容易得多:
docker swarm init
然后在主机2上运行输出join
命令。
然后,您可以创建一个可附加并覆盖两个主机的覆盖网络:
docker network create -d overlay --attachable zookeeper
Attachable还允许您在群组服务之外使用网络。您只需将其添加为撰写文件中的外部网络:
version: '3.1'
networks:
zookeeper:
external: true
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
networks:
- zookeeper
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
networks:
- zookeeper
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888