一尘不染

在Ubuntu上运行docker:无法从容器写入已安装的主机卷

linux

Docker对我来说在Mac上运行良好,但是我必须在VirtualBox(或Parallels或VMWare
Fusion)中运行docker主机,因为Mac的内核不支持docker。

所以我尝试在Ubuntu桌面上设置应用程序和docker-compose-
本机地,其中docker客户端和docker主机都物理上运行在同一系统上。这可行,但是我正在运行的Docker容器无法写入已安装的主机卷。

我使用docker-compose进行以下设置:

volumes:
   - ./api:/usr/src/app

因此,我将主机Ubuntu OS的“ api”目录挂载到/ usr / src / app下的docker容器中。

docker inspect <container ID> 显示该卷可写

"Destination": "/usr/src/app",
"Mode": "rw",
"RW": true

但是事实并非如此:permission denied当我尝试在Docker容器中创建目录或编辑文件时得到提示。

我用谷歌搜索了这个问题,当然,我遇到了一些CentOS / RHEL的SELinux问题,但是 我运行的是Ubuntu 15.10(64位版本)
,而不是CentOS。


阅读 395

收藏
2020-06-07

共1个答案

一尘不染

如果您uid在主机(id -u)上的主机名uid与docker容器中的用户名(通常为“ docker”)不同,则可能会出现此问题。你可以试试:

  1. 使您的用户与docker容器中的用户之间的UID相同。
  2. 将您和Docker都属于的组的目录上的组权限设置为可写。
  3. 您还可以使用nuclear选项:

chmod a+rwx -R project-dir/

核选项会使您的git工作区变得肮脏,这会极大地烦扰您,因此这不是最佳的长期解决方案。它可以止血。

为了进一步理解该问题,您可能会发现以下有用:

  1. https://github.com/docker/docker/issues/7906
  2. https://github.com/docker/docker/issues/7198
2020-06-07