没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
详解详解docker 容器不自动退出结束运行的方法容器不自动退出结束运行的方法
本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容
器可以常驻运行。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容器可以常驻运
行。
docker 容器的生命周期是同容器中的前置进程相关在一起的,这也是我们平时可能会遇到一些容器只是运行几秒便自动结束
的原因:因为容器中没有一个常驻的前置进程,前置进程运行结束后,容器便自动退出了。
比如 docker hello-world
# 一闪而过 输出一堆东西
docker run --name hello-world hello-world
# 可以看到 hello-world 容器已经退出了
docker ps -a
那怎样可以让容器不自动退出呢?如果我们想登入一个纯净的容器 alpine/centos/ubuntu 之类的,在其基础上安装一些服务组
件,然后在 commit 成自己的镜像。
看网上有不少方法是创建容器时执行一个 while(true) 的死循环(当然,sleep 一下)或者用 tail -f /dev/null 一类的,反正就是
以开启一个可以常驻的前置进程为目的。其实我们可以更优雅的使用 docker 容器的 interactive 和 tty 参数来将 sh/bash (*nix
系统必有)命令作为前置命令开启,这样容器就不会自动退出了。
例如使用 alpine 镜像做为基础镜像,创建一个 alpine 系统小容器,让其可以常驻运行,以便我们登录交互执行某些命令。
# 使用 alpine 系统镜像创建容器
# -i interactive=true 开启 stdin
# -t tty=true 分配会话终端
# -d 守护模式 不加也可以 不加就直接进入容器中了 需要 ctrl+p+q 切出
# 不能 exit 哟, exit 相当于结束 sh 会话了 容器会退出的
docker run -it -d --name alpine alpine sh
# alpine 肯定在运行
docker ps
# 登入容器
docker exec -it alpine sh
# apline 使用的 apk 作为包管理
# 安装个小火车
# 后续可以使用 docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl 生成新的镜像
apk add sl
# 退出容器 注:-d 启动的才可以,如果没有 -d 启动直接进入的 sh终端 则不能退出,否则容器也会退出
exit
提交容器变更生成新的镜像
docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl
docker images
# 有账号的话发布到 docker hub 上去
docker push big_cat/alpine_sl
# 后续停止/启动容器时就不需要在指定 -it 参数了
docker stop alpine
docker start alpine
提交容器变更生成新的镜像
docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl
docker images
# 有账号的话发布到 docker hub 上去
docker push big_cat/alpine_sl
以上命令其实是借助 sh/bash 会话终端作为前置进程,使得容器不会自动退出。
如果你觉得在创建容器时如此书写会很粗陋,没关系,我们可以将这些都推给 docker-compose
docker-compose.yml
version: '3'
services:
big_cat_alpine:
container_name: big_cat_alpine
image: alpine
stdin_open: true # -i interactive
资源评论
- 杜拉拉到杜拉拉2023-07-28这篇文章真实解决了我在使用docker容器时遇到的问题,非常有用。
- 萱呀2023-07-28作者用简练的语言解释了容器不自动退出的原因和解决方法,对初学者非常友好。
- lirumei2023-07-28文章从实际出发,给出了简单易懂的解决方案,让我省了不少时间和精力。
- 山林公子2023-07-28作者提供了几种不同的方法,让容器能够持续运行,非常实用。
- 实在想不出来了2023-07-28这篇文章对于docker容器持续运行的问题做了很好的总结和解答,推荐给大家阅读。
weixin_38641876
- 粉丝: 2
- 资源: 942
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功