如何运行现有的已停止容器并进入 bash?

问题描述 投票:0回答:2

我是 Docker 的新手,我知道为了运行容器,我可以使用以下命令:

docker run -it --name custom-container-name --hostname custom-hostname image-name bash

上一个命令创建一个名为

custom-container-name
的容器,主机名为
custom-hostname
,并使用图像
image-name
。我知道
-it
标志可以让我访问
bash
。 (如有错误请指正)

现在,我已经停止了这个容器,但我想再次使用它,所以我应该使用什么命令来用 bash 再次打开这个容器,就像我第一次创建它时运行

docker run ...
命令一样.

docker containers
2个回答
26
投票

我认为您遇到的问题是您提供的命令立即退出,并且为了让容器继续运行,它需要一个不会退出的命令。我发现保持容器运行的一种方法是使用 -d 选项,如下所示:

docker run -dt --name custom-container-name --hostname custom-hostname image-name

这应该会启动它作为后台守护进程运行。然后您可以使用以下命令在容器中打开外壳:

docker exec -it custom-container-name /bin/bash

如果图像的默认用户是root(或未设置),这应该为您提供容器内的root shell。

可以使用 docker inform 查看镜像的详细信息,看看默认的命令和用户是什么:

docker inspect image-name | less

此外,如果您的容器存在,并且其状态为“已退出”,您可以启动该容器,然后使用

docker exec
,如下所示:

docker start custom-container-name
docker exec -it custom-container-name /bin/bash

0
投票

一个更普遍的答案作为已接受的答案对我没有帮助。就我而言,我有一个容器,它构建了运行很长时间但现在已停止的东西。我不能

docker start
它,因为它会立即退出,因为构建已经完成。我也不想再次运行它或修改它,因为构建需要超过 5 小时并且非常不稳定。进入停止的容器(在任何情况下都有效并且不假设有关容器的任何内容)的一般解决方案是仅
docker commit <CONTAINER_ID|CONTAINER_NAME>
,这会将容器转换为图像,然后您可以在其上运行任何您喜欢的命令,包括
bash 
.

© www.soinside.com 2019 - 2024. All rights reserved.