docker容器自动退出重启报错问题及解决

2023-12-07 0 759
目录
  • docker容器自动退出重启报错
    • 退出原因
    • 个人遇到的问题
  • docker记录启动容器的报错处理
    • 查看日志
    • 没报错,启动立马关闭
    • 容器里面的配置出错,进不去容器
    • 启动报错1
  • 总结

    docker容器自动退出重启报错

    docker容器自动退出的原因是什么

    为何docker刚启动起来就退出了

    是因为 没有一个可以支撑docker 持久运行下去的命令。

    退出原因

    1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出

    2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出

    3、这个是 docker 的机制问题

    个人遇到的问题

    我这里使用的mysql镜像,停止镜像之后输入启动命令发现报错

    docker容器自动退出重启报错问题及解决

    正确解决办法应该是

    docker restart 镜像名

    之前的启动命令没有实现交互运行,所以一旦没有前台进程执行,容器认为空闲,就会自行退出,我再次输入启动命令之后出现报错,原因是没有移除容器

    docker容器自动退出重启报错问题及解决

    输入命令

    docker ps -a

    发现容器没有移除

    docker容器自动退出重启报错问题及解决

    先停止容器,然后在移除容器

    docker stop 镜像id
    docker rm 镜像id

    移除再次输入docker ps -a 已经移除成功

    docker容器自动退出重启报错问题及解决

    重新输入启动命令

    docker run –name mysql8.0 -d -it -p 3306:3306 mysql:8.0.21 /bin/bash

    启动成功!

    docker容器自动退出重启报错问题及解决

    docker记录启动容器的报错处理

    查看日志

    语法:

    docker logs 容器ID或容器的名

    没报错,启动立马关闭

    问题:

    1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出

    2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出

    3、这个是 docker 的机制问题

    解决:

    1,把刚刚的容器删了:docker rm 容器名或ID

    2,docker run -p 6666:80 -dit –name=test nginx

    • 添加-it 参数交互运行
    • 添加-d 参数后台运行
    • 这样就能启动一个一直停留在后台运行的nginx了

    容器里面的配置出错,进不去容器

    思路:

    cd进行/var/lib/docker,这个文件是docker存的,搜索你要想必的文件,然后修改这个配置

    • 1: find . -name default.conf
    • 2: vi 查出来的路径 //修改

    启动成功,外面访问不到

    看看是不是防火器的问题:

    systemctl stop firewalld.service 停止防火墙
    systemctl disable firewalld.service 禁止防火墙开机启动
    firewall-cmd –state 检测防火墙是否关闭
    systemctl list-unit-files | grep firewalld.service 查看有没有禁止防火墙开机自启

    启动报错1

    [root@localhost ~]# docker start mynginxError response from daemon: driver failed programming external connectivity on endpoint mynginx (1f5125fc7eddc9b34ce8f8f4417186d4ce1382643b5001fc468d17dd64f34f15): (iptables failed: iptables –wait -t nat -A DOCKER -p tcp -d 0/0 –dport 8888 -j DNAT –to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.

    因为在启动docker容器的时候或者做docker配置的时候,还对防火墙设置重新启动等配置,这样会清除docker的相关配置,导致在查询防火墙规则的时候显示不到docker的链。

    解决:重启docker

    systemctl restart docker

    有时候重启没效果可以选择停止docker,在启动

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

    收藏 (0) 打赏

    感谢您的支持,我会继续努力的!

    打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
    点赞 (0)

    悠久资源 Linux服务器 docker容器自动退出重启报错问题及解决 https://www.u-9.cn/server/linux/115191.html

    常见问题

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务