日常遇见的docker问题汇集

本文解决Docker挂载目录权限受限问题,提供三种解决方案,包括使用--privileged参数、临时关闭或永久禁用selinux,以及通过chcon命令调整安全上下文。同时介绍查看Docker容器运行参数的方法,利用rekcod工具或直接运行Docker命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:挂载路径后,出现Permission denied

Q1.Docker -v 对挂载的目录没有权限 Permission denied

原因:
centos7中安全模块selinux把权限禁掉了。

有三种方法解决:
1.在运行时加 --privileged=true (亲测可行)

2.临时关闭selinux然后再打开 (亲测可行)

个人建议还直接sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

3.添加linux规则,把要挂载的目录添加到selinux白名单 (未测试,不明)

# 更改安全性文本的格式如下
chcon [-R] [-t type] [-u user] [-r role] 文件或者目录

选顷不参数:
-R :该目录下的所有目录也同时修改;
-t :后面接安全性本文的类型字段,例如 httpd_sys_content_t ;
-u :后面接身份识别,例如 system_u;
-r :后面街觇色,例如 system_r
执行:
chcon -Rt svirt_sandbox_file_t /home/xuhaixing/docker/tomcat/webapps/

Q2:如何查看docker run的运行参数呢?

方法一:使用pip 安装 runlike

方法二:

安装:(不推荐)

rpm:

yum install npm -y

npm i -g rekcod

docker pull nexdrew/rekcod

$ alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod"

命令:

rekcod <container-name>

不安装的方法:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod <container>

拉下镜像之后 将alias rekcod="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nexdrew/rekcod" 放入/etc/profile钟

则就可使用:rekcod <container-name>

Q3:查看Dockerfile构建过程

docker history --format {{.CreatedBy}} --no-trunc=true 想查看镜像|sed "s?/bin/sh\ -c\ \#(nop)\ ??g"|sed "s?/bin/sh\ -c?RUN?g" | tac

 

 

知识在于积累,生命在运动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值