场景:挂载路径后,出现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
知识在于积累,生命在运动