【问题标题】:running docker in sysbox runtime connected to the specifc network在连接到特定网络的 sysbox 运行时中运行 docker
【发布时间】:2022-10-13 15:05:26
【问题描述】:

我正在尝试在 ubuntu 20.04 EC2 实例上的 sysbox 运行时中运行 docker。 码头工人必须连接到特定的网络。 sudo docker run --runtime=sysbox-runc --network=mynetwork -it -d mydocker start.sh 我收到错误消息:

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: container_linux.go:425: starting container process caused: process_linux.go:607: container init caused: switching Docker DNS: rootfs_linux.go:1385: writing /etc/resolv.conf caused: open /etc/resolv.conf: permission denied: unknown.

当我没有在 docker run 命令中指定网络时,docker 会按预期启动。所以我可以调查 /etc/resolv.conf 内部发生了什么:

root@bf26ac9a77cd:/# findmnt /etc/resolv.conf
TARGET           SOURCE                                                                                                                  FSTYPE OPTIONS
/etc/resolv.conf /dev/nvme0n1p1[/var/lib/docker/containers/bf26ac9a77cd8cd1386d0b699614143aa6196092e06723d09649b979266bddf9/resolv.conf] ext4   rw,relatime,discard

root@bf26ac9a77cd:/# ls -l /etc/resolv.conf
-rw-r--r-- 1 nobody nogroup 607 Aug 29 06:52 /etc/resolv.conf

root@bf26ac9a77cd:/# touch /etc/resolv.conf
touch: cannot touch '/etc/resolv.conf': Permission denied

从环境隔离的角度来看,这听起来很合理。但是如何将 docker 连接到某个网络?

【问题讨论】:

  • 用于使网络成为 mynetwork 的网络驱动程序是什么

标签: linux docker docker-networking docker-in-docker


【解决方案1】:

Sysbox 在初始化时需要写入容器的 /etc/resolv.conf。由于“nobody:nogroup”文件属性,它无法写入 /etc/resolv.conf。这是因为缺少 Shiftfs 或更新的 ID-mapped-mounts 内核功能。

D-mapped-mounts 需要内核 >= 5.12;就我而言,它是 5.11

shiftfs 可以安装(它是一个内核模块)。这里的说明:https://github.com/nestybox/sysbox/blob/master/docs/user-guide/install-package.md#installing-shiftfs

【讨论】:

    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 2014-10-23
    • 2018-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2014-09-26
    • 2022-10-19
    相关资源
    最近更新 更多