【发布时间】:2021-07-06 19:50:36
【问题描述】:
为了为我正在处理的项目实施集成测试,需要通过将服务作为 docker 容器来运行集成测试。因此,有 2 个服务在整个测试过程中保持固定状态,这些服务被添加到 docker-compose 文件中。我在测试开始时启动这些服务。之后,对于一组测试,我需要使用 docker run 命令启动另一个服务,并将该服务添加到我作为 docker-compose 启动前两个服务时创建的同一网络中。这可能吗?
我尝试了以下步骤以确保将 docker 容器添加到由 docker-compose 创建的网络是否可行。
- docker-compose 文件示例。
version: '3.7'
services:
backend_service_1:
image: solsson/http-echo
networks:
- envoymesh
environment:
- PORT=8000
networks:
envoymesh:
name: envoymesh
driver: bridge
- 运行另一个 docker 容器并尝试添加到同一个网络。
docker run solsson/http-echo -e PORT=9000 --network=envoymesh --driver=bridge
- 运行
docker network inspect envoymesh以查看网络中的容器。但我只看到来自 docker-compose 的容器。
"Containers": {
"bd3c1b20be141cc66144f24a7e7adeaaa894e694004139f88f2b9563c729e8e1": {
"Name": "docker-network_backend_service_1_1",
"EndpointID": "d43f97ef5f0948ed2f6c7e4045164439ebf2596176868efcf6640927c1bc376e",
"MacAddress": "02:42:ac:1b:00:02",
"IPv4Address": "172.27.0.2/16",
"IPv6Address": ""
}
},
我在这里做错了什么?能不能达到我的要求??提前致谢。
PS:docker network connect envoymesh [container id] 有效。
解决方案
这是我使用 docker run 命令的方式的问题。它应该像下面这样使用,最后带有图像名称。
docker run -e PORT=8000 --network envoymesh solsson/http-echo
【问题讨论】:
标签: docker docker-compose docker-networking