我有一个带PHP的容器和一个带MySQL数据库的链接容器,因为我需要能够运行PHPUnit和数据库(集成测试)。
基本命令如下所示:
docker run -i --rm --link db binarydata/phpunit php script.php
我创建了db
容器并在运行此命令之前启动它。
binarydata/phpunit
容器被删除。但是db
容器保持正常运行。
问题是:如何在链接容器上实现--rm
功能,因此在执行命令后它也会被删除?
答案 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但是很混乱 测试的退出状态也将丢失,而是打印到屏幕上。