docker容器运行后退出,怎么才能一直运行?
原创Docker容器运行后退出?怎么才能一直运行?
在使用Docker的过程中,我们大概会遇到容器运行一段时间后自动退出的情况。这种情况通常是归因于容器内执行的程序执行完毕或者出现失误允许的。那么,怎样让Docker容器一直运行呢?本文将为您解答这个问题。
一、使用守护进程运行容器
要让容器一直运行,可以将容器内的应用作为守护进程运行。例如,使用以下命令启动一个Nginx容器:
这里的 -d
参数描述后台运行容器,容器名称为 mynginx
,将容器的80端口映射到宿主机的8080端口。
二、使用无限循环
如果您的应用没有提供守护进程模式,可以尝试在容器内使用无限循环让容器保持运行。例如,以下Dockerfile片段:
FROM ubuntu
CMD ["/bin/bash", "-c", "while true; do echo 'Hello, World!'; sleep 1; done"]
这段代码将创建一个逐步输出 "Hello, World!" 的容器。
三、使用 tini
或 dockerize
有些时候,使用无限循环大概不是最佳方案。这时,可以使用 tini
或 dockerize
这样的工具来维持容器的运行。
1. 使用 tini
:
docker run -d --init --name mycontainer myimage
2. 使用 dockerize
:
FROM mybaseimage
RUN wget https://github.com/jwilder/dockerize/releases/download/v0.6.1/dockerize-Linux-amd64-v0.6.1.tar.gz \
&& tar -C /usr/local/bin -xzvf dockerize-Linux-amd64-v0.6.1.tar.gz \
&& rm dockerize-Linux-amd64-v0.6.1.tar.gz
CMD ["dockerize", "-wait", "tcp://mydb:3306", "-timeout", "30s", "myapp"]
四、总结
通过以上几种方案,我们可以让docker容器一直运行。利用实际情况选择合适的方法,可以让我们的容器管理更加方便和高效。