如何重新运行已经退出的 Docker 容器

自己遇到了如下场景:

docker run -it centos /bin/bash

我按 Ctrl + D 退出了容器。

我想继续运行这个容器,但我发现没法继续运行这个容器。

唯一的方法是

docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash

我做的对吗?想知道有没有更好的方法?(我使用的 Docker 版本是 0.8.0)

349651 次浏览

您可以在现有容器退出后重新启动它,而您所做的更改仍然存在。

docker start  `docker ps -q -l` # restart it in the background
docker attach `docker ps -q -l` # reattach the terminal & stdin
docker start -a -i `docker ps -q -l`

解释:

docker start开始一个容器(需要名称或ID -a附加到容器
-i交互模式
docker ps列出容器
-q只列出容器id
-l只列出最后创建的容器

使用:

docker start $(docker ps -a -q --filter "status=exited")

这将启动处于退出状态的所有容器。

docker exec -it <container-id> /bin/bash

这将连接到特定的容器。

如果你想继续使用一个已知名称的Docker容器:

docker start  `docker ps -a -q --filter "name=elas"`

如果您有一个命名容器,那么可以通过运行来启动它

docker container start container_name

其中container_name是容器的名称,必须在创建容器时给出。如果容器没有命名,可以用容器id替换container_name。容器ID可以通过以下命令找到:

docker ps -a

如果你想在多个易于记忆的命令中完成:

  1. 列出停止的容器:

docker ps -a

  1. 复制你想要附加的容器的名称或容器id,并以以下方式开始容器:

docker start -i <name/id>

-i标志告诉docker附加到容器的stdin。

如果容器开始时没有连接到一个交互式shell,你需要这样做来运行一个shell:

docker start <name/id>
docker exec -it <name/id> /bin/sh

/bin/sh是通常用于基于高山的映像的shell。

遵循以下步骤:

  1. 执行以下命令,查看所有容器服务都在运行和停止。选项-a用于查看容器是否也停止

    docker ps -a
    
  2. Then start the docker container either by container_id or container tag names

    docker start <CONTAINER_ID> or <NAMES>
    

    enter image description here

    从上面的图片,容器id 4 b161b302337 < br > 所以要运行的命令是

    docker start 4b161b302337
    
  3. One can verify whether the container is running with

    docker ps
    
docker start `docker ps -a | awk '{print $1}'`

这将启动所有处于“已退出”状态的容器

这些命令将适用于任何容器(不仅仅是最后退出的容器)。 这种方法即使在系统重新启动后也可以工作。 为此,这些命令将使用"container id".

步骤:

  1. 使用此命令列出所有docker,并注意您想要重启的容器的容器id: 李docker ps -a < / p > < / > 使用容器id启动容器: 李docker start <container_id> < / p > < / > 连接并运行你的容器: 李docker attach <container_id> < / p > < / >

注意:适用于linux

的名字

sudo docker start bob_the_container

或按Id

sudo docker start aa3f365f0f4e

将重新启动停止的容器,使用-i附加容器的STDIN 或者你可以将-i附加到容器会话(如果你使用-it运行)

sudo docker attach bob_the_container

使用——privileged标志运行容器。

docker run -it --privileged ...

对于那些在2021年及以后来到这里的人来说,下面的命令将完成接受的答案将在一行中完成的工作。

$ docker start -ai $(docker ps -q -l)

如果你只想启动一个状态为“Exited”的容器,只需输入:

sudo docker start container_name

没有sudo。查看更多

docker start container_name

如果容器名称不起作用,则将名称替换为容器id

在我的例子中,当我启动docker容器时,它干净地退出了,所以上面的方法都不起作用。我需要的是一种改变要运行的命令的方法。

使用docker-compose,我可以通过运行以下命令来更改命令:

docker-compose run <container name in docker-compose.yml> bash

如。

docker-compose run app bash

注意!这实际上是重新创建容器,因此它不会在前一个实例上运行。