Str*_*ger 63 docker docker-container
我完全是码头工人的新手.我尝试启动一个像以下一样的退出容器,
docker ps -a.它列出了以下内容,

我输入以下命令来启动处于退出阶段的容器并进入该图像的终端.
docker start 79b3fa70b51d
docker exec -it 79b3fa70b51d \bin\sh
它抛出以下错误.
FATA[0000] Error response from daemon: Container 79b3fa70b51d is not running
但是当我开始使用容器时docker start 79b3fa70b51d.它将容器ID作为输出抛出,如果一切正常,则是正常的.我不确定导致此错误的原因.任何关于这个的原因和建议的想法对我来说都会有很大帮助.提前致谢.
Dio*_*ung 42
默认情况下,如果您没有在容器上运行任何任务,则docker容器将立即退出.
要使容器在后台运行,请尝试使用--detach(或-d)参数运行它.
举些例子:
docker pull debian
docker run -t -d --name my_debian debian
e7672d54b0c2
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7672d54b0c2 debian "bash" 3 minutes ago Up 3 minutes my_debian
#now you can execute command on the container
docker exec -it my_debian bash
root@e7672d54b0c2:/#
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 21
容器79b3fa70b51d似乎只做一个echo.
这意味着它启动,回声然后立即退出.
下一个docker exec命令不会发现它正在运行,以便将自己附加到该容器并执行任何命令:它为时已晚.容器已经退出.
该
docker exec命令在正在运行的容器中运行新命令.使用的命令
docker exec仅在容器的主进程(PID 1)运行时运行
Mat*_*uhn 11
如果无法再次启动主进程(足够长时间),则commit容器也可能会生成新映像并从此映像运行新容器.虽然这不是通常的最佳实践工作流程,但我发现偶尔调试失败的脚本非常有用.
docker exec -it 6198ef53d943 bash
Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running
docker commit 6198ef53d943
sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
docker run -it ace7ca65e6e bash
root@72d38a8c787d:/#
Run Code Online (Sandbox Code Playgroud)
Mic*_*zos 10
这种情况发生在脚本未启动服务等待请求的图像上,因此容器在脚本结束时退出。
大多数基本操作系统映像(centos、debian 等)或节点映像通常都是这种情况。
最好的办法是以交互模式运行图像。下面的示例与节点图像:
docker run -it node /bin/bash
Run Code Online (Sandbox Code Playgroud)
输出是
docker run -it node /bin/bash
Run Code Online (Sandbox Code Playgroud)
这对我有用。
获取容器 ID 并重新启动。
docker ps -a --no-trunc
ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
docker restart ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
Run Code Online (Sandbox Code Playgroud)
小智 6
docker run -it --entrypoint /bin/bash <imageid>
Run Code Online (Sandbox Code Playgroud)
这是由 L0j1k 在下面的帖子中发布的,对我有用。
小智 6
使用命令
> docker container ls
> docker image ls
Run Code Online (Sandbox Code Playgroud)
检查您的图片 ID 并将其记下来。这里我的图像 ID 是“6c929ca002da”,你们必须使用自己的图像 ID 而不是我的。
> docker start 6c929ca002da
Run Code Online (Sandbox Code Playgroud)
这里我们的图像处于关闭模式,我们必须首先使用图像 ID 启动它。6c929ca002da 是我的图像 ID
> `docker exec -it 6c929ca002da bash`
Run Code Online (Sandbox Code Playgroud)
运行此命令后,您可以在运行模式下看到图像文件,如下所示
根@6c929ca002da
这里我使用root模式通过使用命令进入root模式
须藤苏
小智 5
首先,我们必须启动docker容器
ankit@ankit-HP-Notebook:~$ sudo docker start 3a19b39ea021
3a19b39ea021
Run Code Online (Sandbox Code Playgroud)
之后,检查docker容器:
ankit@ankit-HP-Notebook:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a19b39ea021 coreapps/ubuntu16.04:latest "bash" 13 hours ago
Up 9 seconds ubuntu1
455b66057060 hello-world "/hello" 4 weeks ago
Exited (0) 4 weeks ago vigorous_bardeen
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令执行:
ankit@ankit-HP-Notebook:~$ sudo docker exec -it 3a19b39ea021 bash
root@3a19b39ea021:/#
Run Code Online (Sandbox Code Playgroud)
原因就是接受的答案所说的。我添加一些额外的信息,这可能会提供对这个问题的进一步理解。
\n\nCreated、Running、Stopped、\nExited等。Deaddocker create,docker 守护进程将创建一个\n容器,其状态为Created。docker start,docker 守护进程将启动一个现有容器\n其状态可能为Created或Stopped。docker run,docker 守护进程将分两步完成:docker create和docker start。docker stop,显然 docker 守护进程将停止容器。\n因此容器将处于Stopped状态。Exited。进程什么时候退出?换句话说,\xe2\x80\x99是什么进程,我们是如何启动它的?
\n答案CMD在 dockerfile 或command以下表达式中,默认bash情况下在某些镜像中,即 ubutu:18.04。
docker run ubuntu:18.04 [command]\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
102898 次 |
| 最近记录: |