我们想做的事:
我们想使用docker-compose通过容器名称将一个已经运行的容器(A)链接到另一个容器(B)。我们使用“ external-link ”,因为两个容器都是从不同的 docker-compose.yml 文件启动的。
问题:
尽管具有该名称的容器正在运行,但容器 B 无法启动并出现错误。
ERROR: for container_b Cannot start service container_b: Cannot link to a non running container: /PREVIOUSLY_LINKED_ID_container_a_1 AS /container_b_1/container_a_1
“docker ps”的输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
RUNNING_ID container_a "/docker-entrypoint.s" 15 minutes ago Up 15 minutes 5432/tcp container_a_1
示例代码:
容器 B 的 docker-compose.yml:
container_b:
external_links:
- container_a_1
这个问题与其他“如何解决”问题有什么不同:
- 我们不能使用“sudo service docker restart”(有效),因为这是一个生产环境
- 我们不想每次都手动解决这个问题,但要找到原因,以便我们可以
- 了解我们做错了什么
- 了解如何避免这种情况
假设:
- 似乎存在两个 container_a 实例(RUNNING_ID 和 PREVIOUSLY_LINKED_ID)
- 这可能会发生,因为我们
- 通过 docker-compose build 重建容器并
- 更改了容器的转发外部端口(808
01 :8080)
评论
- 不要
docker-compose down
按照评论中的建议使用,这会删除体积!