all

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

发布于 2022-03-22 23:01:02

我创建了一个容器,-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 条。我赢不了。

关注者
0
被浏览
65
1 个回答
  • 面试哥
    面试哥 2022-03-22
    为面试而生,有面试问题,就找面试哥。

    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) 的命令将在后台运行,并且容器不会
    立即停止



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看