当前位置:   article > 正文

关于Docker容器不能正常启动几种情况与解决方法_liunx创建了容器但是进不去

liunx创建了容器但是进不去

序:本文主要记录了一下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
  • 1

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

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

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

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

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

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

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

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

chcon: can't apply partial context to unlabeled file
  • 1

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

SELINUX=enforcing
  • 1

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

•enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 了;

•permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;

•disabled:关闭,SELinux 并没有实际运作。
  • 1
  • 2
  • 3
  • 4
  • 5

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/335829
推荐阅读
相关标签
  

闽ICP备14008679号