CentOS7.4中Docker以rw方式挂载volume报Permission denied的解决思路
一、问题背景
今天在CentOS7.4.1708上实践Docker挂载volume,一切按照正常流程进行操作,无论是创建目录、创建文件、还是查看、编辑主机上创建好的文件,都报“Permission denied”,具体如下:
[root@ChatDevOps ~]# docker run -it -v /data/chatdevops:/data/webapp:rw ubuntu /bin/bash
root@4b92ff9fbced:/data/webapp# mkdir test
mkdir: cannot create directory 'test': Permission denied
root@4b92ff9fbced:/# cd /data/webapp/
root@4b92ff9fbced:/data/webapp# ll
ls: cannot open directory '.': Permission denied
root@4b92ff9fbced:/data/webapp# exit
反复查阅各种资料,官方文档都拜读几遍了,都没找到原因。操作系统版本及docker版本信息如下:
[root@ChatDevOps ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@ChatDevOps ~]# docker --version
Docker version 1.13.1, build 94f4240/1.13.1
二、解决过程
1.在CentOS7.4上出现这个问题,换个其他发行版是不是也出现一样的问题呢?平日里最常用的发行版莫过于CentOS和Ubuntu了,何不去Ubuntu上试试看呢?
2.说干就干,看一下我的Ubuntu系统信息及Docker版本信息:
root@chatdevops:~# cat /etc/issue
Ubuntu 18.04 LTS \n \l
root@chatdevops:~# docker --version
Docker version 17.12.1-ce, build 7390fc6
居然比CentOS7.4的yum安装的docker版本号高很多!不管了,先看看是否跟操作系统有关!
3.在本机创建相关目录,并执行docker运行命令:
root@chatdevops:~# mkdir -p /data/volume
root@chatdevops:~# docker run -it -v /data/volume:/data/webapp ubuntu /bin/bash
4.在Ubuntu新docker挂载点下创建目录:
root@84bf1bb983ac:/data/webapp# mkdir test
root@84bf1bb983ac:/data/webapp# ll
total 12
drwxr-xr-x 3 root root 4096 Jun 7 11:37 ./
drwxr-xr-x 3 root root 4096 Jun 7 11:37 ../
drwxr-xr-x 2 root root 4096 Jun 7 11:37 test/
创建成功!果然跟操作系统有关,而不是与docker版本有关!
5.分析问题。
CentOS7.4与Ubuntu18.04Server版有啥区别呢?内核?SELinux?
为啥会想到SELinux而不是首先考虑内核呢?因为内核问题解决起来比较麻烦,这两个发行版的内核版本相差较大,SELinux经常会成为一切问题的罪魁祸首!还有,刚刚ls的时候没看到Ubuntu发行版权限列末尾的点,这个才是重点!来看一下CentOS的文件属性:
[root@ChatDevOps data]# ll
总用量 0
drwxr-xr-x. 3 root root 18 6月 7 19:53 chatdevops
[root@ChatDevOps data]# ll -Z
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 chatdevops
[root@ChatDevOps ~]# getenforce
Enforcing
以上三种办法都核实了一下,SELinux确实是开启的。
6.关闭SELinux看一下:
[root@ChatDevOps data]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@ChatDevOps data]# reboot
[root@ChatDevOps ~]# docker run -it --rm -v /data/chatdevops:/data/chatdevops:rw ubuntu /bin/bash
root@816e6beff208:/data/chatdevops# mkdir test
root@816e6beff208:/data/chatdevops# ll
total 0
drwxr-xr-x. 3 root root 18 Jun 7 11:53 ./
drwxr-xr-x 3 root root 24 Jun 7 11:52 ../
drwxr-xr-x 2 root root 6 Jun 7 11:53 test/
问题圆满解决!
三、总结
1.遇到问题的时候尽可能换个思路来试一下,不能总在一个地方转圈。
2.验证一些问题的时候尽量保持基础软件环境一致,不要一次性验证多个条件,我今天这个操作就不太严谨。
3.CentOS7.4.1708默认是启用SELinux的,而Ubuntu18.04 Server版则未启用SELinux,禁用SELinux后需要重启系统。
4.在CentOS7.4.1708的生产环境中使用docker时建议禁用SELinux,当然如果是对SELinux十分熟悉不禁用也是无妨的!
5.目前仅对CentOS7.4进行了验证,其他开启了SELinux的发行版也需要注意此问题。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
时间同步-ntp服务器的搭建(docker版本)
introduce 用于构建cdm所需要的ntp服务器镜像,实现宿主机和ntpserver同步,ntpserver于ntpclient的同步 项目地址 项目github image build docker image build -t docker.finogeeks.club/linzhihuang/fino-cdm-ntp:v2.0 run docker run --rm -it docker.finogeeks.club/linzhihuang/fino-cdm-ntp:v2.0 run cluster docker compose up config 我们通过下面的几步来完成ntp服务端和客户端的搭建 在server的服务机器上我们通过 volumes: - /etc/localtime:/etc/localtime:ro 让docker和服务器的时间保持一致 在server的服务上还需要配置/etc/ntp.conf,方式如下shell rm /etc/ntp.conf cat >> /etc/ntp.conf <<EOF # 中国这边最活跃的时间服...
-
下一篇
115科技宣布整体迁移至阿里云 45天迁移百PB数据创互联网史纪录
6月7日,国内领先的云存储企业115科技在2018云栖大会·上海峰会上宣布,已将公司全部数据迁移至阿里云上,双方合力完成了互联网史上规模最大的公共云数据迁移,总量超过100PB。同时,整个过程仅耗时45天,创造了百PB级数据公共云迁移的新纪录,演绎了一场云计算的“速度与激情”。 100PB的数据有多大?相当于360亿张照片,打印出来可以环绕地球200周。如果用普通办公网络上传,要2700多年才能传完。 100 PB有多大?了解一下—— 在云计算普及的今天,如此大规模的上云变得更高效便捷,115科技总经理刘睿表示:“将基础设施托付给阿里云后,115科技团队得以集中精力,聚焦顶层设计,为用户提供更好的产品体验和服务。”出于自身需求的综合考量,115科技最终选择了阿里云作为合作伙伴,共同完成这次史诗级的迁移。 聚焦顶层业务,115科技整体业务上
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL数据库在高并发下的优化方案
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能