Docker后台运行的小坑

it2025-02-12  6

一个小坑(后台运行容器)

基本介绍

# 我先pull了一个centos镜像 docker pull centos centos 启动一个容器添加了-d 参数,但是docker ps 或者docker ps -a查看却已经退出了 shell>docker run -d centos a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547 shell>docker ps

原因

1. docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出 2. 容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出 3. 这个是 docker 的机制问题

解决方案

方案一

网上有很多介绍,就是起一个死循环进程,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了,以centos为例 shell>docker run -d centos /bin/sh -c “while true; do echo hello world; sleep 1; done” 缺点: 命令太冗长了,还占用一个终端

方案二

docker run -dit centos /bin/bash 添加-it 参数交互运行 添加-d 参数后台运行 这样就能启动一个一直停留在后台运行的Centos了。

docker ps 容器运行起来了

[root@iZuf61n8ywv9zx27oeoajoZ /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ca5d44e0a844 centos "/bin/bash" 2 hours ago Up 2 hours angry_albattani
最新回复(0)