Docker退出容器不关闭容器

 2023-12-24  阅读 2  评论 0

摘要:进入后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢? 如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器,这一点很重要,请牢记! 以下示例为退出容器但不关闭容器 [root@localhost ~]# attach c600c4519fc8 [root@c600c4519fc8 /]# exit ex

Docker退出容器不关闭容器

进入后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢?

如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器,这一点很重要,请牢记!

以下示例为退出容器但不关闭容器

[root@localhost ~]#  attach c600c4519fc8  [root@c600c4519fc8 /]# exit  exit  [root@localhost ~]# docker ps -a  CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS          PORTS        NAMES  c600c4519fc8    centos       "/bin/bash"     3 hours ago     Exited (0) 1 second ago            pensive_jackson  5a7a0d694651    busybox       "sh"        20 hours ago    Exited (0) 20 hours ago            hungry_vaughan  4b0296d18849    hello-world     "/hello"      46 hours ago    Exited (0) 46 hours ago            hopeful_yonath  [root@localhost ~]# docker start pensive_jackson  pensive_jackson  [root@localhost ~]# docker attach c600c4519fc8    Ctrl + P + Q     [root@c600c4519fc8 /]# read escape sequence  [root@localhost ~]# docker ps -a  CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS          PORTS        NAMES  c600c4519fc8    centos       "/bin/bash"     3 hours ago     Up 22 seconds                 pensive_jackson  5a7a0d694651    busybox       "sh"        20 hours ago    Exited (0) 20 hours ago            hungry_vaughan  4b0296d18849    hello-world     "/hello"      46 hours ago    Exited (0) 46 hours ago            hopeful_yonath

事实上我们可以在启动容器的时候就进行配置,加入-d参数来启动容器,当然,这条命令仅限于启动全新的容器,启动关闭的容器是不可以的。

Tips 1

docker run -d: 后台运行容器,并返回容器ID

以下示例为使用docker -d启动容器并退出

[root@localhost ~]# docker run -i -t -d centos /bin/bash  8521b11d5d98835d4cb0080adc5a58a4dd018ecd0751d9945f7da7ab01bec330  [root@localhost ~]# docker ps -a  CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS           PORTS        NAMES  8521b11d5d99    centos       "/bin/bash"     4 seconds ago    Up 4 seconds                  eager_goldwasser  c600c4519fc8    centos       "/bin/bash"     3 hours ago     Exited (0) 28 seconds ago            pensive_jackson  5a7a0d694651    busybox       "sh"        20 hours ago    Exited (0) 20 hours ago             hungry_vaughan  4b0296d18849    hello-world     "/hello"      46 hours ago    Exited (0) 46 hours ago             hopeful_yonath  [root@localhost ~]# docker attach 8  [root@8521b11d5d99 /]# uname -r  3.10.0-514.el7.x86_64  [root@8521b11d5d99 /]# exit  exit  [root@localhost ~]# docker ps -a  CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS           PORTS        NAMES  8521b11d5d99    centos       "/bin/bash"     2 minutes ago    Exited (0) 2 seconds ago            eager_goldwasser  c600c4519fc8    centos       "/bin/bash"     3 hours ago     Exited (0) 2 minutes ago            pensive_jackson  5a7a0d694651    busybox       "sh"        20 hours ago    Exited (0) 20 hours ago            hungry_vaughan  4b0296d18849    hello-world     "/hello"      46 hours ago    Exited (0) 46 hours ago            hopeful_yonath  

在这里你可能会发现,使用了-d的命令退出后容器依然还是死了,动手型的朋友可能会发现只是用docker run -d去启动容器也一样是死的

这里其实需要了解的是容器的运行机制,Docker容器在后台运行,必须要有一个前台进程,这里我们让容器有前台程序运行,就可以实现容器的-d 启动后存活

[root@localhost ~]# docker ps -a  CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS           PORTS        NAMES  c600c4519fc8    centos       "/bin/bash"     3 hours ago     Exited (0) 4 minutes ago            pensive_jackson  5a7a0d694651    busybox       "sh"        21 hours ago    Exited (0) 21 hours ago            hungry_vaughan  4b0296d18849    hello-world     "/hello"      47 hours ago    Exited (0) 47 hours ago            hopeful_yonath  [root@localhost ~]# docker run -d centos /bin/bash -c "nohup ping -i 1000 www.baidu.com"  8aa19c9604382bc019797ccda831ae1bcebd81d86380b6040d636e03000b440a  [root@localhost ~]# docker ps -a  CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS           PORTS        NAMES  8aa19c960438    centos       "/bin/bash -c 'nohup…"  2 seconds ago    Up 2 seconds                  adoring_wing  c600c4519fc8    centos       "/bin/bash"       3 hours ago     Exited (0) 5 minutes ago            pensive_jackson  5a7a0d694651    busybox       "sh"           21 hours ago    Exited (0) 21 hours ago            hungry_vaughan  4b0296d18849    hello-world     "/hello"         47 hours ago    Exited (0) 47 hours ago            hopeful_yonath

我这里使用nohup在后台运行一个每1000秒ping一次百度的进程,另外你也可以使用”while true; do echo hello world; sleep 1; done”,无限输出hello world。

另外即便是有进程在后台运行,你进入了容器,输入exit退出,依然会终止容器的运行,请谨记。

Ctrl+P+Q依然是我认为的最佳用法。

提示:现在腾讯云新人点击注册然后实名认证后,可以点此一键领取2860元代金券,然后点此进入腾讯云活动页面参加优惠力度非常大的腾讯云3年和5年时长服务器活动,一次性买多年,免得续费贵,这样就可以获得最大的优惠折扣,省钱。

版权声明:xxxxxxxxx;

原文链接:https://lecms.nxtedu.cn/yunzhuji/130907.html

发表评论:

验证码

管理员

  • 内容1196554
  • 积分0
  • 金币0
关于我们
lecms主程序为免费提供使用,使用者不得将本系统应用于任何形式的非法用途,由此产生的一切法律风险,需由使用者自行承担,与本站和开发者无关。一旦使用lecms,表示您即承认您已阅读、理解并同意受此条款的约束,并遵守所有相应法律和法规。
联系方式
电话:
地址:广东省中山市
Email:admin@qq.com
注册登录
注册帐号
登录帐号

Copyright © 2022 LECMS Inc. 保留所有权利。 Powered by LECMS 3.0.3

页面耗时0.0102秒, 内存占用358.89 KB, 访问数据库18次

  • 我要关灯
    我要开灯
  • 客户电话
    lecms

    工作时间:8:00-18:00

    客服电话

    电子邮件

    admin@qq.com

  • 官方微信

    扫码二维码

    获取最新动态

  • 返回顶部