问题标签 [rootless]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
716 浏览

docker - Rootless Docker:在没有 sudo 的情况下将文件写入卷挂载时权限被拒绝

在我的容器中(通过 ssh)没有 sudo 权限时,我无法写入已安装的卷。挂载的文件夹是主机用户的主文件夹。我正在运行一个无根 docker 守护进程。

我做了以下步骤来启动一个容器:

  1. 我按照https://docs.docker.com/engine/security/rootless/上的说明设置了一个无根 docker

  2. 使用以下命令构建 Dockerfile(如下):

    docker build --build-arg USER_ID=$(id -u) --build-arg GROUP_ID=$(id -g) --build-arg USER_NAME=user--build-arg USER_PASS=user -t test 。

  3. 使用以下命令启动容器:

    docker run -d --name test_container -p 50000:22 -v /home/$(id -u -n):/mnt/home test

  4. 通过 SSH 进入我的容器

    ssh 用户@localhost -p 50000

当我在我的主目录中创建一个文件时,我得到一个权限被拒绝。当我在主机中创建一个新文件夹并将其更改为 777 时;然后我可以创建文件,但它们没有出现在具有正确用户/组的原始主机中,而是我得到类似的东西:

这很不方便,因为我需要定期申请 chown。它似乎与无根 Docker 使用的命名空间有关。如何确保创建的文件与主机上的用户匹配?

Dockerfile:

谢谢!

0 投票
0 回答
39 浏览

docker - 在哪里使用无根 docker 添加证书

我有一些私人 docker 注册表,我添加了他们的证书/etc/docker/certs.d/[domain.name.com]/ca.crt并且它正在工作,但我的问题是我必须使用 sudo 和 docker,即使我在 docker 组中并重新启动(多次尝试)。

所以我尝试了无根 docker 但现在似乎我无法再连接到我的注册表,我遇到了这个错误:Error response from daemon: Get https://domain.name.com/v2/: x509: certificate signed by unknown authority

我在我的文件夹下的 certs.d 中添加了相同的文件/home/$USER/.docker/certs.d/...夹,但它也不起作用。

您知道与 rootless docker 的证书是否有关吗?

非常感谢您的回答

0 投票
0 回答
31 浏览

docker - dockremap rootless:如何不使用 subid 而是使用特定用途

我遇到了以下问题:当我使用预烘焙图像并"userns-remap": "default"daemon.jsondocker 文件中指定选项时,它使所有内容都无根但具有子用户 ID,例如:

与 GUID 相同。但是为了文件权限管理和方便,我想在一些特定的真实用户下运行它而不重新映射。你能告诉我有哪些可能的挖掘方式吗?

0 投票
0 回答
354 浏览

docker - 从无根 Docker 容器访问 USB 蓝牙加密狗

如此处所述设置无根 Docker 后,我尝试从容器内部使用蓝牙 USB 加密狗。我确认加密狗在主机上工作并且我可以hcitool -i hci0 lescan成功运行(使用 root 用户)。从互联网上的众多帖子中,似乎必须使用以下选项的组合启动容器:

  • --net=host
  • --privileged
  • 有能力NET_ADMIN
  • 有能力NET_RAW
  • 有能力SYS_ADMIN

请注意,我使用的是 Portainer,但使用的等效 CLI 命令是docker run -ti --privileged --net=host --cap-add=NET_ADMIN --cap-add=NET_RAW --cap-add=SYS_ADMIN ubuntu:latest --name bletest /bin/bash. 因此,我使用所有这些选项启动了容器 - 但是,尝试访问设备时出现以下错误:

-v /var/lib/bluetooth -v /sys/fs/cgroup:/sys/fs/cgroup:ro这里开始运行:

最后一个命令在主机上运行,​​这导致我仍然怀疑一些权限错误。我可以设置任何其他选项以允许使用容器中的蓝牙加密狗吗?

请注意,我在测试设备后从主机卸载,因为我在这里bluez读到如果被某些蓝牙服务访问,它可能会被主机阻止。之后,我还确保在物理上重新连接加密狗。

编辑:还要注意(现在)我将主机系统上的 Docker 用户(dkr)添加到蓝牙和 netdev(后者不存在,所以我创建了它)组。我确认主机用户可以bluetoothctl用来扫描设备 ( scan on/off)。hcitool lescan但是,由于某种原因,仍然不允许用户运行。

0 投票
1 回答
307 浏览

docker - Docker 无根错误:您需要与 /var/run/docker.sock 的卷共享您的 Docker 主机套接字

我正在尝试使用 Docker 无根。

我已按照官方文档中介绍的所有步骤进行操作。我还允许使用非特权端口,包括 443。

为了测试一切是否按我需要的方式工作,我安装了"nginx-proxy-automation"

一切都安装得很完美。然而jrcs/letsencrypt-nginx-proxy-companion:2.1容器

报告以下错误:

这会导致容器每x秒重新启动一次。

我能做些什么来修复它?我错过了什么?

解决方法

根据@gdahlm 的回答,我首先尝试了以下方法:

但我收到以下错误:

错误:卷 unix://$XDG_RUNTIME_DIR/docker.sock:/tmp/docker.sock:ro 格式不正确,应该是 external:internal[:mode]

仅仅是因为卷路径中有一个额外的:冒号。

因此,在这篇Trying Rootless Docker with Testcontainers文章中进一步挖掘,然后我尝试了

但它也不起作用,因为我收到以下错误:

错误:在服务“docker-gen-auto”中使用了命名卷“$XDG_RUNTIME_DIR/docker.sock:/tmp/docker.sock:ro”,但在卷部分未找到声明。

最后我尝试$XDG_RUNTIME_DIR在终端中回显,如下所示:

我得到了:

/run/user/1000

所以,我将它硬编码到.env文件变量中:

DOCKER_HOST_ROOTLESS_PATH=/run/user/1000/docker.sock

docker-compose.yml文件里面

它终于奏效了!

但是像这样在.env文件中保留它:

DOCKER_HOST_ROOTLESS_PATH=$XDG_RUNTIME_DIR/docker.sock

没用。

0 投票
0 回答
79 浏览

docker-compose - 带有冒号错误的 Docker-compose 卷路径:格式不正确,应为外部:内部 [:模式]

我正在尝试在 Docker 上无根。

我正在使用jrcs/letsencrypt-nginx-proxy-companion:2.1容器。

docker-compose.yml文件中,就在卷部分,我最初得到以下内容:

但是,由于我得到以下信息,您需要与 /var/run/docker.sock错误处的卷共享您的 Docker 主机套接字:

我不得不更换

- /var/run/docker.sock:/var/run/docker.sock:ro

为了

- unix:///run/user/1000/docker.sock:/var/run/docker.sock:ro

我还尝试将其.env作为变量放入文件中:

- ${DOCKER_HOST_PATH:-/var/run/docker.sock}:/tmp/docker.sock:ro

但无论哪种方式,现在我收到以下错误:

卷 unix:///run/user/1000/docker.sock:/var/run/docker.sock:ro 格式不正确,应该是 external:internal[:mode]

这是由:UNIX 单词后面的额外冒号引起的,正如这里所报告的那样。

我如何解决它?:额外的冒号有什么解决方法吗?

0 投票
0 回答
191 浏览

containers - 是否可以列出其他用户使用 Podman 启动的正在运行的容器?

当我rootless以非 root 用户身份运行容器时,我可以podman ps -a以该用户身份查看它们。

但是,当我登录root系统并运行podman ps -a.

有没有办法让root用户查看所有正在运行的容器,无论哪个用户启动了它们?

注意:我尝试将--root选项设置为 Podman,但没有成功

0 投票
0 回答
68 浏览

docker - 具有 Windows AD 身份验证的无根 docker

最近,我开始使用 docker 作为我实验室的服务器。该服务器是安装了 Ubuntu 服务器 18.04 的 Linux 服务器。用户的登录验证使用 Windows Active Directory (AD)。我当前运行非 root docker 的解决方案是将用户添加到docker组(ref)。

但是,我发现了一个严重的安全问题。AD 用户A可以B通过docker run -u B's uid:B's gid. 在容器中,A可以得到所有B的许可。

运行非root docker的正确方法可能是新引入的' Rootless mode ',问题是rootless模式需要newuidmap和newgidmap,但是/etc/passwd和/etc/subuid等中没有列出AD用户,这意味着无根模式和userns-remap模式不能用于我的情况(即 AD auth)。

有什么方法可以解决这个问题吗?非常感谢。
最好的。

0 投票
0 回答
62 浏览

docker - 在无根 docker 中运行图像,图像未显示

我已经使用这个链接配置了 rootles docker 。注意事项:我以前安装过带有一堆图像的 docker。当我尝试这样做docker images时,它没有显示任何图像。但是当我这样做时,sudo docker images它会显示我之前配置的图像。是否可以在“docker images”中实际看到那些“sudo docker images”并在不使用 sudo 的情况下运行它?

0 投票
0 回答
198 浏览

docker - 使用 terraform 使用上传的脚本安装 docker-rootless:找不到 systemd,无法连接到总线:没有这样的文件或目录

以下情况正在发生。

  1. 我使用 terraform 管理我的 AWS 基础设施。
  2. 我使用脚本和远程执行设置软件基础架构
  3. 我上传以下脚本:
  1. 我使用以下命令从 terraform 执行此脚本:
  1. 我收到以下错误:

最初,脚本中的所有命令都在“remote-exec”的“内联”块中执行,并且有效。然后我将命令移动到 instance-setup.sh 从需要以超级用户身份运行的命令中删除了“sudo”,将“sudo -u ubutnu”添加到需要以“ubuntu”用户身份执行的命令中并运行整个脚本为“sudo”。它会抛出这些错误。所以基本上 docker rootless 没有正确安装。你有任何想法如何解决这个问题吗?