【Docker】docker挂载的目录无法读写(cannot open directory ‘.‘: Permission denied)或者cannot open File

这篇具有很好参考价值的文章主要介绍了【Docker】docker挂载的目录无法读写(cannot open directory ‘.‘: Permission denied)或者cannot open File。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

使用docker将容器的某个文件夹挂载在宿主机时,有时候启动容器会发现报错:…cannot open File或者cannot open directory ‘.’: Permission denied。

又或者挂载成功后,发现宿主机这个文件并没有数据,又或者容器的配置文件不在官方说的路径,又或者进入容器内部时,在挂载的那个文件下创建文件会提示:cannot open directory ‘.’: Permission denied。

解决方法

以上问题都属于 容器对挂载目录无法读写!

即使启动容器时指定-u 0,这个也就是让容器以root身份运行,那么容器对自身的读写权限是全部拥有了,可是它是运行在docker中,而docker是运行在Linux等操作系统中,所以呢,当挂载文件时,容器反过来对宿主机的文件没有操作权限或者说写的权限,因此提示cannot open file等信息。

原因是CentOS7中的安全模块selinux把权限禁掉了,

有以下几种方式解决挂载的目录没有权限的问题:

1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
docker run -i -t -v /soft:/soft --privileged=true 637fe9ea94f0 /bin/bash
2.临时关闭selinux:
setenforce 0
3.添加selinux规则,改变要挂载的目录的安全性文本.文章来源地址https://www.toymoban.com/news/detail-774936.html

到了这里,关于【Docker】docker挂载的目录无法读写(cannot open directory ‘.‘: Permission denied)或者cannot open File的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker:挂载宿主机的目录

    可以在docker run时通过: -v 宿主机目录:容器内目录 ,挂载宿主机的文件到容器: $ docker run -it -v /tmp/docker_share/:/tmp/share ubuntu /bin/bash 容器启动后,可以在容器里看到目录/tmp/share root@9d2d19b4923c:/tmp/share# touch test root@9d2d19b4923c:/tmp/share# ls test 在宿主机的/tmp/docker_share目录下也可以

    2024年02月09日
    浏览(43)
  • docker-compose 挂载目录

    Docker Compose可以使用 volumes 来挂载目录,将宿主机的目录或文件映射到容器中。 语法: 其中, 宿主机目录 为需要映射的宿主机目录路径,可以是相对路径或绝对路径; 容器目录 为容器内挂载的目标路径,也可以是相对路径或绝对路径。 示例: 挂载宿主机当前目录到

    2024年02月07日
    浏览(41)
  • Docker 安装 ElasticSearch 及 挂载目录

    说明 1 privileged=true 允许访问挂载目录 2 \\\"discovery.type=single-node\\\" 单机版 3 ES_JAVA_OPTS=\\\"-Xms256m -Xmx256m\\\"  设置内存,如果服务器内存不是很大,这里设置小点,否则服务将起不来 打开es配置文件 elasticsearch.yml,添加如下,这样head插件就可以访问 es服务器了 如果你本地已经安装了k

    2024年02月04日
    浏览(39)
  • 【Docker】数据卷挂载以及宿主机目录挂载的使用

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Docker实战》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月16日
    浏览(47)
  • Docker Volume - 目录挂载以及文件共享

    Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数

    2024年02月20日
    浏览(48)
  • docker给已经启动容器添加挂载目录

    1.关闭docker 2. sudo su切换到root身份 cd /var/lib/docker/containers/容器id/,进入对应容器目录 3.vim hostconfig.json 修改如下,将容器目录/import绑定到主机/data目录: \\\"Binds\\\": [\\\"/data:/import\\\"], 4.vim config.v2.json 修改如下,添加MountPoints: 5.启动docker    systemctl start docker.socket  systemctl start docker.ser

    2024年02月11日
    浏览(45)
  • Docker挂载-宿主机软连接目录-问题

    挂载宿主机软连接的路径问题【 -v /usr/local/nginx/:/home/test/nginx/ 】,软连接可以映射任何路径,但有一个前提是:其所映射的路径必须要在容器中存在,否则就无法访问到数据 1、如果软连接路径在容器中已经存在,如 /root/home ,或者在当前挂载命令 -v 前面的 -v 命令已经将软

    2024年02月22日
    浏览(59)
  • docker容器共享宿主机环境(目录挂载)

    一、背景介绍 如果开发的服务均需要将打成docker镜像,可是随着服务越来越多,镜像也越来越多。每次制作镜像的时候都需要将依赖打进容器,这样一个jre的环境就是100多M。有一天突发奇想,容器能不能共用宿主机的环境?这样每次打镜像时体积就会少不少。 二、测试 我们

    2024年02月09日
    浏览(62)
  • docker搭建部署mysql并挂载指定目录

    首先,确保你的系统上已经安装了Docker。你可以根据官方文档安装适用于你系统的Docker版本 命令解释 挂载外部目录的理由: 数据持久性和灵活性。 容器中MySQL数据的易备份和恢复。 如当容器宕机或者不小心移除,可重新起一个容器并挂载之前的文件,之前的数据依然存在。

    2024年01月17日
    浏览(40)
  • Docker进阶数据卷&目录挂载及在线部署

    为了很好的实现数据保存和数据共享, Docker 提出了 Volume 这个概念,简单的说就是绕过默认的联合 文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作 数据卷 Docker 中的数据卷(Volume)是用于持久化存储容器数据的一种机制。它可以将主机上的目录或文件

    2024年01月23日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包