如何自动移植链接的Docker容器?

时间:2016-06-14 06:33:33

标签: docker

我有一个带PHP的容器和一个带MySQL数据库的链接容器,因为我需要能够运行PHPUnit和数据库(集成测试)。

基本命令如下所示:

docker run -i --rm --link db binarydata/phpunit php script.php

我创建了db容器并在运行此命令之前启动它。

运行命令后,

binarydata/phpunit容器被删除。但是db容器保持正常运行。

问题是:如何在链接容器上实现--rm功能,因此在执行命令后它也会被删除?

1 个答案:

答案 0 :(得分:2)

  

如何在链接容器上实现--rm功能,所以在命令执行后它也会被删除?

首先,您不必再使用hybrid clock与docker 1.10+。所有容器都看到彼此的docker-compose will create for you a network 使用docker-compose alias,您可以将--link声明为" binary/phpunit"供其他容器使用。

其次,有了该网络,如果您停止/删除php容器,它将从所述网络中删除,包括其别名' db'。

这与旧链接(docker 1.8 and before)不同,后者需要容器的modify the /etc/hosts。在这种情况下,删除链接的容器实际上不会更改db 使用new embedded docker-daemon DNS,不再需要它。

Matt在评论中建议以下命令和警告:

  

/etc/hosts否则命令永远不会返回,docker-compose up --abort-on-container-exit --force-recreate容器永远不会被删除   db虽然有点stdout但是很混乱   测试的退出状态也将丢失,而是打印到屏幕上。