如何在现有 Docker 容器上运行命令?

dockeroperating systemopen source更新于 2026/2/14 8:07:17

假设您之前已经创建了一个 Docker 容器并使用它。现在,您已经停止了该容器。因此,容器处于退出状态。如果您想在容器内运行命令,该怎么办?

通常有两种情况。要么使用 Docker stop 命令停止容器,要么容器当前正在后台运行。在这种情况下,您可以重新启动容器,访问它的 bash,然后执行您想要的任何命令。这对于未运行的容器非常有效。另一种解决方案是使用 Docker exec 命令在正在运行的容器中运行命令。

对于已停止的容器,您也可以使用 Docker start 命令启动容器,然后运行 ​​Docker exec 命令。让我们逐一检查一下这些场景。

让我们使用 Docker run 命令创建一个容器。

$ docker run -it --name=myubuntu ubuntu:latest bash

此命令将创建一个名为 ubuntu 的 ubuntu 容器,并打开该容器的 bash 命令,以便您在正在运行的容器内执行命令。

您可以通过列出容器来检查容器的状态。

$ docker ps -a

此命令将列出本地计算机中所有现有容器及其当前状态。

现在,执行下面提到的 Docker stop 命令来停止容器。

$ docker stop myubuntu

如果您现在执行使用 Docker ps 命令,您会发现 myubuntu 容器的状态已更改为"已退出"。现在,如果您想在这个已停止的容器内运行命令,则必须先启动该容器并使用以下命令附加 bash。

$ docker start -ai myubuntu

此命令将再次启动容器,您将可以访问该容器的 bash。您可以在此处执行任何您想要的命令。

在 Docker 容器内执行命令的另一种方法是使用 Docker exec 命令。但是,您只能在处于运行状态的容器上使用 Docker exec 命令。

让我们使用 Docker run 命令,但使用 detached 选项以后台模式运行容器。

$ docker run -itd --name=myubuntu ubuntu:latest bash

这将以后台模式运行容器。您可以通过再次列出所有现有容器来检查状态。

$ docker ps -a

现在,让我们使用 Docker exec 命令在容器内创建一个文件。Docker exec 命令的语法如下:

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]


$ docker exec myubuntu touch tutorialspoint.txt

此命令将在容器的默认工作目录中创建一个名为 tutorialspoint.txt 的文件。您还可以将 -w (workdir) 标志与 Docker exec 命令结合使用,以指定要在容器内执行命令的目录路径。

如果您想访问在后台模式下运行的容器的 bash,可以使用 -it 选项并提供 /bin/bash 命令。

$ docker exec -it ubuntu /bin/bash

这将打开容器的 bash,您将能够在其中执行命令。如果您希望更改在下次启动容器时生效,请确保在容器内进行更改后,使用 Docker commit 命令提交更改。

Docker commit 命令的语法为 -

$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

总而言之,在本教程中,您了解了两种在现有容器内运行命令的不同方法。您知道 Docker run 命令用于创建或启动新容器,然后在其中执行命令。但是,如果您的系统中已经有一个容器,并且想要在其中执行命令,则可以使用上面讨论的方法。根据您的容器是处于停止状态还是在后台运行,您可以选择上面讨论的任意一种方法。


相关文章