如何继续已退出的Docker容器

Dan*_*Lin 232 docker

考虑:

docker run -it centos /bin/bash
Run Code Online (Sandbox Code Playgroud)

我按了Ctrl+ D退出它.

我想继续运行这个容器,但我发现我不能.

唯一的方法是

docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Run Code Online (Sandbox Code Playgroud)

我对吗?有更好的方法吗?(我使用的是docker 0.8.0.)

BBJ*_*BJ3 254

您可以在退出后重新启动现有容器,并且您的更改仍然存在.

docker start  `docker ps -q -l` # restart it in the background
docker attach `docker ps -q -l` # reattach the terminal & stdin
Run Code Online (Sandbox Code Playgroud)

  • 对于那些刚接触Linux的人来说,`\`docker ps -q -l \``位是一个扩展.它将替换为创建的最后一个(-l)docker容器的id.-q仅抑制通常由`\`docker ps \``输出的其他信息(床边的id).---- _note:_ Backtick不是引号,它有一个非常特殊的含义.你在反引号之间键入的所有东西都会在主命令之前由shell评估(执行) - http://unix.stackexchange.com/questions/27428/what-does-backquote-backtick-mean-in-bash (84认同)
  • 简要说一句:`docker start -i $(docker ps -q -l)`.;-)命名可以帮助更好地控制选择哪个容器.`-l`得到最后一个,好吧...... (7认同)
  • 简要说一句:```docker start`泊位的ps -q -l` && docker attach`docker ps -q -l```` (3认同)
  • 我发现容器进入了一种名为“已创建...”的状态,无法使用“docker start ...”启动它。然而,它可以使用`docker restart ...`重新启动 (2认同)
  • 注意:`-l` 只获取“最新的”docker。如果你和我一样,`docker ps -a` 显示了不止一个你需要启动的东西,那么你可以通过将上面的命令更改为 `docker start \`docker 来重新启动“所有”(-a) ps -q -a\``。`-q` 只是让它“安静”(不是输出日志)。 (2认同)

Pag*_*ian 130

docker start -a -i `docker ps -q -l`
Run Code Online (Sandbox Code Playgroud)

说明:

docker start启动容器(需要名称或ID)
-a附加到容器
-i交互模式
docker ps列表容器
-q列表仅容器ID
-l列表仅最后创建容器


kgs*_*kgs 43

使用:

docker start $(docker ps -a -q --filter "status=exited")
Run Code Online (Sandbox Code Playgroud)

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

docker exec -it <container-id> /bin/bash
Run Code Online (Sandbox Code Playgroud)

这将连接到特定容器.

  • 我发现这是唯一对我有用的...由于关键的第二行。`docker exec -it &lt;container id&gt; /bin/bash`(或只是 bash)。 (2认同)

kri*_*anp 15

如果您想在多个易于记忆的命令中执行此操作:

  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
Run Code Online (Sandbox Code Playgroud)

/bin/sh通常可与基于高山图像的壳.

  • `来自守护程序的错误响应:容器 &lt;id&gt; 未运行` (4认同)

小智 14

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

docker start  `docker ps -a -q --filter "name=elas"`
Run Code Online (Sandbox Code Playgroud)


小智 11

跟着这些步骤:

  1. 在以下命令中运行,以查看所有容器服务都在运行和停止。可以选择-a看到容器也停止

    docker ps -a
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后通过container_id或容器标签名称启动Docker容器

    docker start <CONTAINER_ID> or <NAMES>
    
    Run Code Online (Sandbox Code Playgroud)

    在此处输入图片说明

    从上图说,容器ID为4b161b302337,
    因此要运行的命令是

    docker start 4b161b302337
    
    Run Code Online (Sandbox Code Playgroud)
  3. 可以验证容器是否正在运行

    docker ps
    
    Run Code Online (Sandbox Code Playgroud)


Gau*_*pta 8

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

docker container start container_name
Run Code Online (Sandbox Code Playgroud)

其中container_name是创建容器时必须给出的容器的名称.如果container_name未命名容器,则可以使用容器ID 替换.可以通过运行以下命令找到容器ID:

docker ps -a
Run Code Online (Sandbox Code Playgroud)


小智 8

这些命令适用于任何容器(不仅是最后退出的容器)。即使在您的系统重新启动后,这种方式也将起作用。为此,这些命令将使用“容器 ID”。

脚步:

  1. 使用此命令列出所有 docker,并记下要重新启动的容器的容器 ID: docker ps -a

  2. 使用容器 ID 启动您的容器: docker start <container_id>

  3. 附加并运行您的容器: docker attach <container_id>

注意:适用于 linux


归档时间:

查看次数:

172134 次

最近记录:

5 年,11 月 前