如何在已经存在的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.我赢不了。


慕的地6264312
浏览 1476回答 3
3回答

慕运维8079593

容器将退出,因为您给出的命令将结束。使用以下选项可以使其保持活动状态:-i 即使未连接STDIN,也请保持打开状态。-t 分配伪TTY。因此,您的新run命令是:docker run -it -d shykes/pybuilder bin/bash如果要附加到已经运行的容器:docker exec -it CONTAINER_ID /bin/bash在这些示例中,/bin/bash将其用作命令。

鸿蒙传说

因此,我认为答案比上面的许多误导性答案更简单。启动已停止的现有容器docker start <container-name/ID>停止正在运行的容器docker stop <container-name/ID>然后登录到容器的交互式外壳docker exec -it <container-name/ID> bash启动现有容器并将其附加到一个命令中docker start -ai <container-name/ID>当心,这将停止出口的容器。但是通常,您需要启动容器,完成后附加并停止它。
打开App,查看更多内容
随时随地看视频慕课网APP