怎么启动一个不会自动退出的 docker?

2022-03-31 10:47:45 +08:00
 fstar

我最近在学 docker ,想运行个 linux 的容器耍耍。

发现 Dockerfile 里不给它整个持续运行的命令,它就自动退出了。

各位有什么办法让它常驻吗?

4124 次点击
所在节点    Docker
25 条回复
Orenoid
2022-03-31 10:51:43 +08:00
number
2022-03-31 10:55:41 +08:00
启动个 sshd 服务
bootvue
2022-03-31 11:04:25 +08:00
tail -f /dev/null
hzfyjgw
2022-03-31 11:17:23 +08:00
运行一个实际对外 提供服务的 docker 容器,比如 nginx 之类的
lululau
2022-03-31 11:34:37 +08:00
tail -f /dev/null 这个比 while true; do sleep; done 好 👍
xu45525584
2022-03-31 11:44:47 +08:00
在 docker 里跑 pm2 ? 或者 nginx
xiaoz
2022-03-31 11:47:05 +08:00
看你容器里面运行的什么程序,部分程序支持前台运行的。不支持的可以用楼上的 tail -f
plko345
2022-03-31 12:07:36 +08:00
cat 就行吧
ksc010
2022-03-31 12:15:49 +08:00
只要入口程序 不退出 容器也不会关闭
这个最好是结合你实际情况 若你只是想 临时测试啥的 可以 用 sleep 100000
若跑自己写的程序, 也可跑 supervisor 这样 通过 supervisor 管理的你程序的重启关闭,且不会导致容器关闭
vuevue
2022-03-31 12:30:21 +08:00
—restart=always
Tink
2022-03-31 12:46:21 +08:00
随便起一个服务
cjpjxjx
2022-03-31 12:55:14 +08:00
我一般用 ping 127.0.0.1 命令
tylinux
2022-03-31 13:14:26 +08:00
这题我会:docker container run -it xxx /bin/sh ,如果要 daemon 运行就在加个 -d
boris93
2022-03-31 14:09:41 +08:00
@vuevue #10 这么做的现象会是这个容器反复启动和停止
sanwe
2022-03-31 14:19:22 +08:00
好奇你跑的什么东西会自动退出
CEBBCAT
2022-03-31 14:27:20 +08:00
搞不懂楼主想问什么,发帖前阅读文档了吗?

docker run --name myAlpine -itd alpine
docker exec -it myAlpine sh
d5
2022-03-31 14:31:53 +08:00
cat 就行
segama201901
2022-03-31 14:37:43 +08:00
只要容器内 PID1 进程不退出,容器会一直保持运行,一楼链接内例子很全。但是,尽量遵守 one container one process 原则。参考 https://devops.stackexchange.com/questions/447/why-it-is-recommended-to-run-only-one-process-in-a-container
bomb77
2022-03-31 14:41:47 +08:00
@vuevue #10 你确定不加个狗头保命吗?
sadfQED2
2022-03-31 15:31:36 +08:00
CMD /bin/bash

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/844037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX