如何在已经存在的Docker容器上运行命令?

我用-d创建了一个容器,因此它不是交互式的

docker运行-d shykes/pybuilder bin/bash

我看到容器已退出:

容器ID映像命令创建状态端口名称
d6c45e8cc5f0 shykes/pybuilder:41分钟前的最新“bin/bash”在2秒前退出

现在我想在机器上运行偶尔的命令并退出。只是为了得到回应

我试着启动机器。我试着连接。我想我可以使用容器调用run,但这似乎是不允许的。使用start似乎只是在运行,然后很快就存在了

退出后,我想回到交互模式

我试过:

码头工人连接d6c45e8cc5f0

但我得到:

2014/10/01 22:33:34如果无法连接到已停止的容器,请先启动它

但如果我启动它,它无论如何都会退出。第22条。我赢不了

2014年10月,Docker团队引入了Docker exec命令:https://docs.docker.com/engine/reference/commandline/exec/

因此,现在您可以在运行的容器中运行任何命令,只需知道其ID(或名称):

docker exec-it<容器标识或名称>echo“集装箱你好!”

请注意,exec命令仅对已经运行的容器有效。如果容器当前已停止,则需要首先使用以下命令运行它:

docker run-it-d shykes/pybuilder/bin/bash

这里最重要的是-d选项,它代表分离的。这意味着最初提供给容器的命令(/bin/bash)将在后台运行,容器不会立即停止

发表评论