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

Gitana ·
更新时间:2024-11-10
· 770 次阅读

目录

docker容器自动退出重启报错

退出原因

个人遇到的问题

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

查看日志

没报错,启动立马关闭

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

启动报错1

总结

docker容器自动退出重启报错

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

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

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

退出原因

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

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

3、这个是 docker 的机制问题

个人遇到的问题

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

正确解决办法应该是

docker restart 镜像名

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

输入命令

docker ps -a

发现容器没有移除

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

docker stop 镜像id docker rm 镜像id

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

重新输入启动命令

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

启动成功! 

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 mynginx
Error 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,在启动

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



自动 Docker

需要 登录 后方可回复, 如果你还没有账号请 注册新账号