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

Docker 容器已启动就崩溃,如何进入调试?

  •  
  •   nyse · 2021-04-15 11:19:04 +08:00 · 2130 次点击
    这是一个创建于 1305 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个运行 MySQL 的容器,由于操作失误,导致一启动就崩溃。

    运行容器中的 bash 提示容器未启动,但是容器根本就没办法启动。

    所以这种情况如何进入容器操作?

    有什么办法能把容器中的文件复制出来吗?

    10 条回复    2021-04-15 14:51:04 +08:00
    sniperking1234
        1
    sniperking1234  
       2021-04-15 11:20:16 +08:00
    启动命令那里加个 sleep 3600
    momocraft
        2
    momocraft  
       2021-04-15 11:22:09 +08:00
    试试 docker export
    或者 docker inspect 可以看到容器内文件系统在 host 的路径
    momocraft
        3
    momocraft  
       2021-04-15 11:23:09 +08:00
    如果你在用 docker-compose 不要随便改命令
    否则可能创建个新的容器 丢失你想保留的文件
    BeautifulSoap
        4
    BeautifulSoap  
       2021-04-15 11:23:17 +08:00
    虽然根本没看懂 lz 到底遇到了什么问题(连错误信息都没有),但是通过别的方式访问到容器内的文件还是有非常多方法的,搜一下就一堆
    https://stackoverflow.com/questions/20813486/exploring-docker-containers-file-system

    以及,容器崩了直接销毁重启不就好了,别说 lz 你所有数据都没持久化全塞容器里。。。。。。。
    yuanmomo
        5
    yuanmomo  
       2021-04-15 11:36:58 +08:00 via iPhone
    在命令行用 bash 命令覆盖 dockerfile 里面默认的启动命令。

    正常容器启动了过后,在 bash 执行相同的命令去排查
    Vegetable
        6
    Vegetable  
       2021-04-15 11:41:08 +08:00
    覆盖启动命令,进入容器手动启动 mysql,查看日志
    whileFalse
        7
    whileFalse  
       2021-04-15 12:07:09 +08:00
    docker run -ti --entrypoint="" 你的自定义镜像 sh

    然后敲命令启动 mysql
    cheng6563
        8
    cheng6563  
       2021-04-15 14:24:30 +08:00
    现有容器存为镜像,然后 docker run -ti --entrypoint="" IMAGE_ID sh
    killva4624
        9
    killva4624  
       2021-04-15 14:48:22 +08:00
    一个是看看上个容器出错的原因,比如 mysql 这种,出错日志会打在 stdout 里; docker ps -a 看看所有容器里刚启动就崩溃的容器,然后 docker logs 看看有没有错误输出。

    另外一个方法就是调试,如上面的大佬们说的,用 sleep xxxxx 或者 ping 127.0.0.1 作为启动命令( 1 号进程),让容器跑起来,然后 docker exec 到容器里手动拉起服务看看报错。
    nyse
        10
    nyse  
    OP
       2021-04-15 14:51:04 +08:00
    感谢各位大佬提供的思路,现在解决了。

    我用的是 docker-compose,通过删除 MySQL 的数据文件,重新初始化 MySQL,再恢复之前备份的数据库文件解决的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:01 · PVG 08:01 · LAX 16:01 · JFK 19:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.