考虑:
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。)
考虑:
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。)
您可以在现有容器退出后重新启动它,而您所做的更改仍然存在。
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启动一个容器(需要名称或ID) -连接到容器 -i交互模式 docker ps列出容器 -q只列出容器id -l只列出上次创建的容器
Use:
docker start $(docker ps -a -q --filter "status=exited")
这将启动处于退出状态的所有容器。
docker exec -it <container-id> /bin/bash
这将连接到特定的容器。
如果您有一个命名容器,那么可以通过运行来启动它
docker container start container_name
其中container_name是容器的名称,必须在创建容器时给出。如果容器没有命名,可以将container_name替换为容器id。容器ID可以通过以下命令找到:
docker ps -a
如果你想在多个易于记忆的命令中完成:
列出停止的容器:
Docker ps a
复制你想要附加的容器的名称或容器id,并以以下方式开始容器:
Docker start -i <name/id> .使用实例
-i标志告诉docker附加到容器的stdin。
如果容器开始时没有连接到一个交互式shell,你需要这样做来运行一个shell:
docker start <name/id>
docker exec -it <name/id> /bin/sh
/bin/sh是通常可用于基于alpine的映像的shell。
遵循以下步骤:
运行以下命令查看所有容器服务都在运行和停止。选项-a用于查看容器是否也停止 Docker ps a 然后通过container_id或容器标记名启动docker容器 docker start <CONTAINER_ID>或<NAMES> 从上面的图片,容器id 4 b161b302337 所以要运行的命令是 Docker启动4b161b302337 可以验证容器是否正在运行 码头工人ps
这些命令适用于任何容器(不仅仅是最后退出的容器)。 这种方法即使在系统重新启动后也可以工作。 为此,这些命令将使用“容器id”。
步骤:
使用此命令列出所有docker,并注意要重启的容器的容器id: Docker ps a 使用容器id启动容器: Docker start <container_id> 附加并运行容器: Docker attach <container_id>
注意:适用于linux
的名字
sudo docker start bob_the_container
或按Id
sudo docker start aa3f365f0f4e
这将重新启动停止的容器,使用-i附加容器的STDIN 或者,您可以将-i附加到容器会话(如果使用-i运行)
sudo docker attach bob_the_container
对于那些在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
e.g.
docker-compose run app bash
注意!这实际上是重新创建容器,因此它不会在前一个实例上运行。