gpt4 book ai didi

docker - 谷歌云构建中两个容器之间的通信

转载 作者:行者123 更新时间:2023-12-04 08:31:33 29 4
gpt4 key购买 nike

我正在 Google 云构建中运行我的 CI/CD 管道。我的应用有 webwget容器。我正在尝试联系 web来自 wget
内部使用云构建 cloudbuild桥接网络,同时启动容器作为步骤。所以我期待这些步骤使用名称进行交流。但它的失败。

如果我创建自己的 docker 桥接网络,那么它们就会进行通信。

我想知道为什么 cloudbuild 网络没有按预期工作。

如果您知道在步骤容器之间建立通信的任何其他方法,请告诉我。

云构建.yaml

steps:

- name: 'gcr.io/cloud-builders/docker'
id: Web server
args: ["run", "-d", "--name", "mani", "manikantanr/hostname_ip"]

- name: 'gcr.io/cloud-builders/wget'
id: wget web mani:8000
args: ["-qO-", "http://mani:8000"]

为了理解 cloudbuild 内部结构,我使用了几个 docker 命令。

调试-cloudbuild.yaml
steps:

- name: 'gcr.io/cloud-builders/docker'
id: Docker Version
args: ["version"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker info
args: ["info"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker volume ls
args: ["volume", "ls"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker volume inspect homevol
args: ["volume", "inspect", "homevol"]


- name: 'gcr.io/cloud-builders/docker'
id: Docker network ls
args: ["network", "ls"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker network inspect cloudbuild
args: ["network", "inspect", "cloudbuild"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker ps before
args: ["container", "ls", "--no-trunc"]

- name: 'gcr.io/cloud-builders/docker'
id: Web server
args: ["run", "-d", "--name", "mani", "manikantanr/hostname_ip"]
# waitFor: ['-']

- name: 'gcr.io/cloud-builders/wget'
id: wget ipinfo
args: ["-qO-", "https://ipinfo.io"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker ps after
args: ["container", "ls", "--no-trunc"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker inspect mani host network
args: ["inspect", "mani"]

- name: 'gcr.io/cloud-builders/docker'
id: Docker alpine ifconfig inside container
args: ["run", "alpine", "ifconfig"]

- name: 'gcr.io/cloud-builders/wget'
id: wget mani:8000
args: ["-qO-", "http://mani:8000"]

最佳答案

我在云构建上设置集成测试时遇到了类似的问题。我试图从另一个构建器(go-builder)针对我的其他容器(通过 docker-compose 社区构建的容器开始)运行集成测试。

没有在 docker-compose.yaml 上指定任何网络,所有容器都在默认网络 ( https://docs.docker.com/compose/networking/ ) 上启动。在云构建上,它创建了一个名为 的新网络。 cloudbuild_default 并将我所有的容器放在那里。通过强制所有容器加入 cloudbuild 通过我的 docker-compose.yaml 文件建立网络,我能够建立通信并对它们运行我的测试。

#docker-compose.yaml

networks:
default:
external:
name: cloudbuild

这可能是您的替代配置。希望能帮助到你

关于docker - 谷歌云构建中两个容器之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046609/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com