一尘不染

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

docker

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

docker run -d shykes/pybuilder bin/bash

我看到容器已退出:

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                      PORTS               NAMES
d6c45e8cc5f0        shykes/pybuilder:latest   "bin/bash"          41 minutes ago      Exited (0) 2 seconds ago                        clever_bardeen

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

我试图启动机器。我尝试附加。我以为我可以run用一个容器打电话,但这似乎是不允许的。使用start似乎可以运行,然后迅速存在。

我想退出后回到互动模式。

我试过了:

docker attach d6c45e8cc5f0

但是我得到:

2014/10/01 22:33:34 You cannot attach to a stopped container, start it first

但是,如果我启动它,它仍然会退出。赶上22.我赢不了。


阅读 311

收藏
2020-06-17

共1个答案

一尘不染

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

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

docker exec -it <container_id_or_name> echo "Hello from container!"

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

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

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

2020-06-17