运行命令“docker-compose run web...”在Kitematic容器列表中创建一个新容器

yptwkmov  于 2023-04-20  发布在  Docker
关注(0)|答案(3)|浏览(87)

每次我运行命令“docker-compose run web...”时,它都会导致另一个容器被添加到Kitematic中,因此每次运行docker-compose时,我都有一个容器列表,如“image-name_web_run_1”等。
这是预期的行为吗?如果是,我该如何解决它?

k0pti3hp

k0pti3hp1#

这是预期的。您可以使用docker-compose run --rm在容器退出时将其删除。
您可以使用docker-compose downdocker-compose rm -a清理这些旧容器。

vlf7wbxs

vlf7wbxs2#

你的意思是新容器吗?这是docker-compose run的预期行为,请参阅:https://docs.docker.com/compose/reference/run/
你的意思是使用docker-compose exec吗?例如,docker-compose exec web /bin/sh参见:https://docs.docker.com/compose/reference/exec/

5gfr0r5j

5gfr0r5j3#

我认为这里的问题是,一些用户希望在execrun的开箱即用功能中有一些东西。
docker-compose run建立了一个新的容器,然后需要清理它。
docker-compose exec只适用于现有且正在运行的容器,如果容器未运行,则会出错。
据我所知,没有一个命令或“一行程序”可以实现启动一个可能停止的容器并运行一个一次性命令的预期效果。
如果你想避免创建一个新的容器,然后每次销毁它的费用,就像在接受的答案中建议的那样,使用--rm标志;正如X1 E0 F1 X的评论中所指出的。
然后,您必须手动启动容器,然后运行exec以获得所需的效果。
我建议使用以下串联命令:

docker-compose start web; docker-compose exec web bin/rails c

注意:假设您在docker-compose文件中设置了依赖项,这些依赖项也将使用start命令启动。

相关问题