对于下面的docker-compose动态构建docker文件:
version: '2'
volumes:
jenkins_home:
external: true
services:
jenkins:
build:
context: .
args:
DOCKER_GID: ${DOCKER_GID}
DOCKER_ENGINE: ${DOCKER_ENGINE}
DOCKER_COMPOSE: ${DOCKER_COMPOSE}
volumes:
- jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "8080:8080"
创建网桥类型的网络(project1_default
)已创建:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
....
f1b7ca7c6dfe project1_default bridge local
....
在运行以下命令后:
$ docker-compose -p project1 up -d
启动并连接到主詹金斯之后,我们使用主詹金斯的EC2 plugin在单独的EC2主机上配置和创建从属詹金斯。
但是,在网络(project1_default
)上方是单主机网络,可以允许数据包在单主机内传输。下面是我对网桥类型网络(project1_default
)的可视化...
因此,我们需要启动并配置主詹金斯,以使用EC2插件在单独的EC2主机上启动从属詹金斯,
是否需要创建多主机网络(swarm
)类型?而不是网桥类型(project1_default
)...
如果是,如何创建多主机网络?
答案 0 :(得分:2)
这三个容器都应该在容器中运行吗?再加上容器在单独的ec2实例上运行,对吗?
您可以将必要的端口公开给基础主机IP。这样会将Jenkins容器公开给您的网络,您就可以与它进行交互,就像将它直接安装在ec2实例上一样(而不是在容器中)。
这里有个例子
docker run -p 80:8080 ubuntu bash
这会将容器中的端口8080暴露给主机上的端口80。从您的主服务器开始,然后是从服务器,然后像使用非容器设置一样,通过使用ec2实例的IP和为从服务器公开的端口来添加从服务器。
您可以在此处找到有关端口发布的更多信息