栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Error response from daemon: devmapper: Error mounting ‘/dev/mapper/docker 容器无法启动

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Error response from daemon: devmapper: Error mounting ‘/dev/mapper/docker 容器无法启动

目录

一,问题描述二,问题原因

1,排查2,原因 三,解决方案

1,方案一

方案利弊 2,方案二

方案利弊 知识点补充

一,问题描述

物理机(或虚拟机)重启后,之前创建的容器启动报错,无法启动。
报错如下

Error response from daemon: devmapper: Error mounting '/dev/mapper/docker-253:0-674-
95585c503aef3448b0531bc24ab0c4bbc6ad4af2df0a2fe3c18ada4f1348f26c' on 
'/var/lib/docker/devicemapper/mnt/95585c503aef3448b0531bc24ab0c4bbc6ad4af2df0a2fe3c18ada4f1348f26c': 
invalid argument
Error: failed to start containers: d70791db5636

二,问题原因 1,排查

使用 getenforce 命令可以发现 selinux(是 Linux 的一个安全子系统,有权限管理的作用)是disabled的状态

并且在 /var/lib/docker/containers/你的容器id/ 目录下,查看 config.v2.json 文件

可以看到MountLabel和ProcessLabel都携带了selinux的参数

2,原因

在 selinux 为 开启 的时候,创建了容器,这个容器的MountLabel和ProcessLabel配置有了selinux的参数。之后因为某些原因将 selinux 修改为 disabled(重启后生效)。然后物理机(虚拟机)重启之后,selinux 为disabled状态,这个时候启动容器,导致容器创建时和启动时selinux上下文不一致,所以出错

三,解决方案 1,方案一

如下图,修改 config.v2.json 文件,把MountLabel和ProcessLabel设置为空


然后重启docker(重启后配置才生效)

systemctl restart docker

现在启动容器就可以成功了

方案利弊

不用重启物理机或虚拟机,但是如果出现问题的容器过多,手动修改很耗时

2,方案二

将selinux设置为permissive
selinux三种模式简介:

Enforcing:强制模式。代表SELinux在运行中,且已经开始限制domain/type之间的验证关系Permissive:宽容模式。代表SELinux在运行中,不过不会限制domain/type之间的验证关系,即使验证不正确,进程仍可以对文件进行操作。不过如果验证不正确会发出警告Disabled:关闭模式。SELinux并没有实际运行

//编辑配置文件
vim /etc/sysconfig/selinux

//重启机子
reboot
//重启后查看selinux状态就不是disabled了 这时候启动容器就可以成功了
getenforce

方案利弊

这个方案可以一次性解决出现这个问题的所有容器,就是需要重启,有特殊原因不能重启还是采用方案一吧

知识点补充

在selinux开启时切换状态,可以使用命令:

// 切换到permissive
setenforce 0
// 切换到enforcing 
setenforce 1

注意在开启状态不能直接切换到关闭状态,反过来也一样,切换需要修改配置文件后重启

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734534.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号