相关疑难解决方法(0)

Docker userns-remap无法写入已挂载目录

我正在尝试Docker 的userns-remap功能,以root用户身份在容器内创建一个文件,并test以主机上的用户身份拥有此文件的所有者。

我已将以下内容添加到 /etc/docker/daemon.json

{
  "userns-remap": "test:test"
}
Run Code Online (Sandbox Code Playgroud)

重新映射似乎是根据守护程序日志进行的

User namespaces: ID ranges will be mapped to subuid/subgid ranges of: test:test
Run Code Online (Sandbox Code Playgroud)

和条目test:100000:65536,并test:100000:65536已被添加到/etc/subuid/etc/subgid/分别文件。

但是当我启动一个容器并尝试在工作目录中创建文件时,它失败了

test@box:~$ docker run -v /home/test/tmp:/somedir -w /somedir -it ubuntu:16.04 /bin/bash
root@11ff6c42ffe1:/somedir# touch file.txt
touch: cannot touch 'file.txt': Permission denied

root@11ff6c42ffe1:/somedir# ls -l
total 0
-rw-rw-r-- 1 nobody nogroup 0 Mar 23 21:39 already_existing_file.txt

root@11ff6c42ffe1:/somedir# id root
uid=0(root) gid=0(root) groups=0(root)

root@11ff6c42ffe1:/somedir# touch /file.txt
Run Code Online (Sandbox Code Playgroud)

可以按预期在未从主机挂载的其他目录中创建文件。 …

namespaces docker

6
推荐指数
1
解决办法
1173
查看次数

我需要启用哪些权限才能使 Docker 卷正常工作?

假设我有一个保存一些数据的 Docker 容器。我希望这些数据能够持续存在 - 如果容器被停止、删除、升级等。我仍然希望数据位于主机操作系统文件系统上的可访问位置。

目前,我的解决方案是在我的主机上创建一个目录/srv/service-name(我使用 Ubuntu 14.10),然后使用参数运行我的服务-v /srv/service-name:/path/inside/container

通过反复试验,我发现有时容器无法写入此内容,因为它没有正确的权限。我发现这个问题,其中仅提供数据容器作为解决方案。好吧,我不想使用容器,因为它对于我正在做的事情来说似乎不必要地复杂。我宁愿继续用-v.

那么,如何为正在挂载的目录设置正确的权限呢?

permissions ubuntu docker

3
推荐指数
1
解决办法
598
查看次数

标签 统计

docker ×2

namespaces ×1

permissions ×1

ubuntu ×1