V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
csdreamdong
V2EX  ›  Docker

docker 如何进入一个已经 Exited 的容器

  •  
  •   csdreamdong · 2016-06-07 17:38:18 +08:00 · 27094 次点击
    这是一个创建于 3128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    docker exec -it 容器名字 bash 如果这个容器因为错误 Exited 了。。就会提示这个容器没启动。这种情况下我要如何进入到这个容器内,修改下错误的部分,继续 restart 这个容器呢?

    32 条回复    2018-08-20 10:04:50 +08:00
    Accldent
        1
    Accldent  
       2016-06-07 17:43:41 +08:00
    run 一个新的
    csdreamdong
        2
    csdreamdong  
    OP
       2016-06-07 17:46:01 +08:00
    @Accldent 0 0..就是不想重新 run 一样。。还有别的办法嘛。。大神。
    csdreamdong
        3
    csdreamdong  
    OP
       2016-06-07 17:47:21 +08:00
    @Accldent 每次改掉一个 bug 。都要重新打包一个新的镜像,,在 run 一个。这样子重复比较麻烦。。有木有在这个报错的容器里,直接改改调试,看还有没有别的问题。。最后再重做一个
    dreasky
        4
    dreasky  
       2016-06-07 17:48:18 +08:00
    先 start 啊
    csdreamdong
        5
    csdreamdong  
    OP
       2016-06-07 17:49:42 +08:00
    @dreasky 就是 start 之后,因为容器里的运行的代码报错了,然后容器 Exited (1) 3 seconds ago 了。
    csdreamdong
        6
    csdreamdong  
    OP
       2016-06-07 17:50:55 +08:00   ❤️ 1
    @csdreamdong 然后 docker logs -f container_id 能看到哪里错了,,想要修改正确。。就是不知再道怎么进去。。。
    docker exec -it ***** bash
    如果是运行中的容器,,是这样子进的,,现在已经退出的容器。。怎么玩?
    Accldent
        7
    Accldent  
       2016-06-07 17:51:34 +08:00   ❤️ 1
    @csdreamdong 没有其他办法,四楼说的 start 也没有用,因为 start 之后遇到错误还是会 exit ,你的需求要满足很简单,直接用 exec /bin/bash 命令启动一个新的容器,然后你要操作什么在 bash 里面操作,最后完成之后写进 dockerfile
    Accldent
        8
    Accldent  
       2016-06-07 17:52:20 +08:00
    上面写错了 不是 exec 应该是 run
    coffin5257
        9
    coffin5257  
       2016-06-07 17:52:22 +08:00
    楼主你思路有问题。首先要看你的容器是因为什么 Exited 了,如果是 start 的时候就秒退了,那么说明你的 Dockerfile 或者应用有问题,这个 bug 你只能通过重新 build 重新 run 去调试。如果是运行中突然出错,那一般是你业务代码出错吧, docker logs 看看日志,业务相关出错了在本地开发环境调试啊,不用重新跑 docker 容器。
    csdreamdong
        10
    csdreamdong  
    OP
       2016-06-07 17:52:56 +08:00
    @Accldent 哦哦哦。好吧。谢谢啦。~
    csdreamdong
        11
    csdreamdong  
    OP
       2016-06-07 17:55:13 +08:00
    @coffin5257 啊哈哈。。是啊,道理是这样子的。。
    然后开发环境是开发机本地跑的,没有用 docker 。,,偷懒。。
    再然后想要改完直接看看效果嘛。。没问题。。再改代码提交。。
    dreasky
        12
    dreasky  
       2016-06-07 17:55:26 +08:00
    start 和 restart 都是可以重启容器的 至于为什么 Exited 才是问题所在
    docker run -it xxx /bin/bash 应该不会出什么问题吧 除非镜像本身有问题
    coffin5257
        13
    coffin5257  
       2016-06-07 17:57:37 +08:00
    @csdreamdong 难道不应该是在本地调试没问题后再通过 docker 去打包吗?本地调试更方便啊,而且能避免出现测试环境改了代码忘了同步到本地的情况
    csdreamdong
        14
    csdreamdong  
    OP
       2016-06-07 17:58:45 +08:00
    @coffin5257 最近刚开始用 docker ,然后是 python 的应用。。一些依赖包最开始都没整理过。
    然后放进 docker 后。一启动,就提示却包。。然后改,提交,重新打包。。再 run 。。。又提示缺包
    来回反复了几次。。觉得有木有。。一次性现在容器里,找到一个临时改一个。。最后全了以后。。重新打一次包。。
    啊哈哈。。就是之前开发时挖的坑。。
    csdreamdong
        15
    csdreamdong  
    OP
       2016-06-07 18:00:16 +08:00
    @dreasky 嗯嗯嗯。
    我们是 run -d 的,然后 run 完,就退出了。。确实是业务代码问题导致 exit 的。。
    就像偷偷懒。。直接在容器里看能不能改完没事后,最后再提交代码。- -
    miyuki
        16
    miyuki  
       2016-06-07 19:28:09 +08:00 via Android   ❤️ 8
    就我一个看成 Excited?
    manhere
        17
    manhere  
       2016-06-07 19:29:47 +08:00
    @miyuki +1s
    zts1993
        18
    zts1993  
       2016-06-07 19:42:10 +08:00
    @miyuki 不止你一个...
    gamexg
        19
    gamexg  
       2016-06-07 20:17:10 +08:00
    docker 学习笔记:修改无法启动的容器中的内容
    http://www.cnblogs.com/51kata/p/5276407.html
    Balthild
        20
    Balthild  
       2016-06-07 20:25:43 +08:00 via Android
    如何进入一个 Excited 的容器?
    crysislinux
        21
    crysislinux  
       2016-06-07 21:16:48 +08:00
    找本书看看。有这方面的资料的。比如 nodejs 的话,就用- v 参数挂载代码,然后 nodemon 监控,自动重启, python 也有类似的东西
    bearice
        22
    bearice  
       2016-06-07 21:24:15 +08:00
    +1s

    另外可以使用 daemontools/runit 作为入口点,就可以随时 exec 进去了
    majinjing3
        23
    majinjing3  
       2016-06-07 21:50:19 +08:00 via Android
    哎,先 commit 成新的 image ,然后再 run 不就好了。。。
    mahone3297
        24
    mahone3297  
       2016-06-07 21:54:59 +08:00
    @miyuki 你有用过 docker 吗?没看到过 exited ?
    Phariel
        25
    Phariel  
       2016-06-07 22:04:13 +08:00 via iPhone
    @miyuki 你不是一个人。。。
    UnisandK
        26
    UnisandK  
       2016-06-07 22:08:29 +08:00
    你们搞的这个容器啊。。 Excited !
    miyuki
        27
    miyuki  
       2016-06-07 22:21:28 +08:00 via Android
    @mahone3297 excited 是个梗
    little_cup
        28
    little_cup  
       2016-06-07 22:35:14 +08:00
    @miyuki 我一个好端端的容器,怎么就 excited 了呢?当场念了两句诗……
    csdreamdong
        29
    csdreamdong  
    OP
       2016-06-07 22:56:03 +08:00
    @miyuki 成功把楼歪了。。。 exicted !!
    iamwb
        30
    iamwb  
       2016-06-09 13:22:37 +08:00 via Android
    我也实在不是谦虚, docker 这个东西啊,不但要考虑到自我奋斗,也要考虑到历史的行程
    julyclyde
        31
    julyclyde  
       2016-06-09 20:14:06 +08:00
    md
    我也看成 excited 了
    我自省
    deljuven
        32
    deljuven  
       2018-08-20 10:04:50 +08:00
    excited! +1s
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1015 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:36 · PVG 05:36 · LAX 13:36 · JFK 16:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.