我的目标是,Jenkins容器将与Ansible容器“交谈”,以便为Jenkins管道创建Jenkins文件。
我预期这两个容器将“加入”到桥接网络并获得相同网络id的两个IP地址,但相反,创建了额外的两个网络,每个容器获得不同网络id的IP。
此外,预计这两个容器将能够访问互联网。
所以,在我的Windows 10中我运行的是Desktop,我有两个Docker -come.yml文件,
第一,对于Jenkins集装箱:
version: '3.7'
services:
jenkins:
image: jenkins/jenkins:lts
privileged: true
user: root
ports:
- 8080:8080
- 50000:50000
container_name: jenkins另一种,适用于不可接受的容器:
version: '2'
services:
ansible:
container_name: ansible
hostname: ansible
image: ansible
volumes:
- ~/product/ansible:/ansible
working_dir: /ansible
build:
context: .
dockerfile: Dockerfile
dns:
- 200.20.200.20我对每个docker-compose.yml文件运行了以下命令,因此我有两台独立的机器:
docker-compose up --build我检查了容器的网络详细信息,发现每个容器都有不同的网络ID,请参见下面的内容:
PS > docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ansible
172.18.0.2
PS > docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' jenkins
172.19.0.2请查看“我的停靠网络”部分,发现除了桥接器、主机和无网络之外,还创建了两个网络:
PS > docker network ls
NETWORK ID NAME DRIVER SCOPE
8cefaed24885 ansible_default bridge local
44bedcd1622d bridge bridge local
61e1c7f7051e host host local
b5a7a7a424a4 jenkins_default bridge local
4e5d6c77cb5a none null local当然,检查桥接网络会发现容器密钥是空的:
{
"Name": "bridge",
"Id": "44bedcd1622d820ce4e29a5cd545f244ba2d303102f1956fe76069a63e7c220e",
"Created": "2021-08-25T13:13:57.6577149Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {},
"CreatedTime": 1629897237657
}我的问题是:
( a)当我运行docker-compose up --build命令时,为什么还要创建两个码头网络?
( b)如何使那些容器与桥网络一起工作,并获得相同网络id (桥网络id 172.17.x.x)的in,以便它们能够相互交谈?
发布于 2021-09-03 08:42:01
连接多个坞-组合实例的解决方案是使用外部网络。
首先,使用以下命令创建一个新网络:
docker network create my-network然后将以下内容添加到两个docker-compose.yml中:
networks:
my_network:
external: true在服务的网络部分:
(...)
networks:
- my_network
(...)詹金斯的船坞组合将变成:
version: '3.7'
networks:
my_network:
external: true
services:
jenkins:
image: jenkins/jenkins:lts
privileged: true
user: root
networks:
- my_network
ports:
- 8080:8080
- 50000:50000
container_name: jenkins对于另一个码头商-Compose.yml,请遵循相同的想法。
https://serverfault.com/questions/1076500
复制相似问题