关于Docker容器不能正常启动几种情况与解决方法

您所在的位置:网站首页 docker修改存储目录后无法启动怎么办 关于Docker容器不能正常启动几种情况与解决方法

关于Docker容器不能正常启动几种情况与解决方法

2024-07-14 07:06| 来源: 网络整理| 查看: 265

序:本文主要记录了一下docker使用过程出现几种容器不能正常启动的情况及解决方法

1. 代码打错

首先得检察一下自己代码是否正确,特别是初学接触docker的小伙伴,更加需要注意一下这方面问题,系统会对明显错误抛出,但是小细节需要自己去注意,需要自己细细检察。例如在ES配置时通常会对内存进行设置:

docker run -d --name elasticsearch01 -p9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64 -Xmx512m" elasticsearch:7.6.2

咋一看没什么毛病,但时其实在Xms64后面是少写了一个m的,这段代码会正常执行,容器也能创建,但是启动不起来,只能删了重新建一个。

所以,首先就是得心细!!!

2. 容器挂载主机目录时启动容器失败

这个问题是我在挂载主机目录时出现的一个问题,确认语句正确情况下但是容器始终运行不起来,使用ps查看始终为空,在网上翻了挺久才找到解决方法。 出现原因:原因是CentOS7中的安全模块selinux把权限禁掉了; 解决方法:参考了一下总结了三种:

在启动容器时添加–privileged=true(推荐使用)

这种方法是通过给予容器赋予root级别权限来解决的,这样创建出来的container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

示例: docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash 临时关闭selinux: setenforce 0 添加selinux规则,将要挂载的目录添加到白名单 chcon -Rt svirt_sandbox_file_t [主机挂载目录]

我尝试使用此方法解决问题时又出现了错误

chcon: can't apply partial context to unlabeled file

找了下资料提供了一个解决方法,需要修改防火墙配置文件,文件目录为:/etc/selinux/config 在这里插入图片描述 将上图标出修改为

SELINUX=enforcing

这个操作是涉及到selinux的三种策略了,修改模式使指令能够执行。

•enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 了; •permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用; •disabled:关闭,SELinux 并没有实际运作。

参考文献: https://www.icode9.com/content-3-840572.html https://www.l1mn.com/p/f4yx81.html https://blog.csdn.net/tangsilian/article/details/80144112



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3