【问题标题】:Docker Inside Docker VariationDocker 内部 Docker 变体
【发布时间】:2023-02-01 19:28:36
【问题描述】:

我有一个 c# 控制台应用程序,它生成前端和后端技术工作 API 的代码。这些技术由命令行提供。现在我必须在这个 c# 代码上做 docker build,然后做 docker run,所以当它开始执行时,我生成前端和后端的 c# 代码从我的 c# 控制台应用程序内部执行 docker build 和 docker push,该应用程序当前由 docker run 执行. 所以我的控制台应用程序(在 docker 中构建和运行然后推送)-> 前端(需要在控制台应用程序 docker 容器运行时构建和推送)后端相同。那么无论如何我可以在 docker 容器运行时访问 build 和 run 之类的 docker 命令?

首先,我尝试从 c# 本身在容器内安装 docker 并执行 dockerd,但它给出了一些错误:

ERRO[2023-02-01T10:22:51.825248406Z] 无法将 OOM 分数更改为 -500 error="write /proc/1596/oom_score_adj: permission denied" WARN[2023-02-01T10:22:51.825968126Z] 加载插件失败 io.containerd.snapshotter.v1.btrfs error="路径 /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs 必须是要与 btrfs 快照程序一起使用的 btrfs 文件系统” WARN[2023-02-01T10:22:51.826131208Z] 加载插件失败 io.containerd.snapshotter.v1.aufs error="modprobe aufs 失败:"": exec: "modprobe": 在 $PATH 中找不到可执行文件" WARN[2023-02-01T10:22:51.826696261Z] 加载插件失败 io.containerd.snapshotter.v1.zfs error="路径 /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs 必须是与 zfs 快照程序一起使用的 zfs 文件系统” WARN[2023-02-01T10:22:51.826774710Z] 无法使用快照程序 btrfs 在元数据插件错误=“路径 /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs 必须是要与 btrfs 快照程序一起使用的 btrfs 文件系统” WARN[2023-02-01T10:22:51.826812801Z] 无法在中使用快照程序 aufs 元数据插件错误 =“modprobe aufs 失败:”:exec: “modprobe”:在 $PATH 中找不到可执行文件” WARN[2023-02-01T10:22:51.826830379Z] 无法在中使用快照程序 zfs 元数据插件错误=“路径 /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs 必须是与 zfs 快照程序一起使用的 zfs 文件系统” 错误 [2023-02-01T10:22:51.850428838Z] 'overlay2' 不支持 overlayfs 存储驱动程序=overlay2 ERRO[2023-02-01T10:22:51.850686363Z] 找不到 AUFS /proc/文件系统存储驱动程序=aufs 错误 [2023-02-01T10:22:51.850761639Z] 不支持“覆盖” overlayfs 存储驱动程序=overlay 警告 [2023-02-01T10:22:51.884958624Z] 无法设置配额:操作 不允许 WARN[2023-02-01T10:22:51.934196670Z] 你的内核确实 不支持 cgroup blkio weight WARN[2023-02-01T10:22:51.934277367Z] 你的内核不支持 cgroup blkio weight_device WARN[2023-02-01T10:22:51.934292526Z] 你的内核不支持 cgroup blkio throttle.read_bps_device WARN[2023-02-01T10:22:51.934304427Z] 你的内核不支持 cgroup blkio throttle.write_bps_device WARN[2023-02-01T10:22:51.934314689Z] 你的内核不支持 cgroup blkio throttle.read_iops_device WARN[2023-02-01T10:22:51.934345730Z] 你的内核不支持 cgroup blkio throttle.write_iops_device 警告 [2023-02-01T10:22:51.935613743Z] 运行 modprobe nf_nat 失败 消息:, error: exec: "modprobe": executable file not found in $PATH WARN[2023-02-01T10:22:51.935667152Z] Running modprobe xt_conntrack failed with message: ,错误:exec:“modprobe”: 在 $PATH 中找不到可执行文件错误启动守护进程:错误 初始化网络控制器:获取控制器实例时出错: 未能创建 NAT 链 DOCKER:iptables 失败:iptables -t nat -N DOCKER:iptables:权限被拒绝(您必须是 root)。

如何解决这个问题?

【问题讨论】:

    标签: c# docker


    【解决方案1】:

    不建议在 Docker 容器内运行 Docker 守护进程。相反,您应该使用安装在主机系统上的 Docker API 或 CLI,并从 C# 应用程序与其通信。可以通过在主机上公开的 REST 接口访问 Docker API。 C# 代码可以向 API 发出 HTTP 请求以构建和运行容器,并推送图像。

    您收到的错误消息表明容器内的 Docker 守护进程无法访问主机的底层存储、网络和其他资源。这是因为容器在受限环境中运行并且无法完全访问主机系统。

    【讨论】:

    • 那么有什么办法可以解决这个错误吗?我没有 linux,所以没有 sudo,
    猜你喜欢
    • 2018-11-28
    • 2018-11-07
    • 2016-08-12
    • 2015-03-08
    • 2018-11-29
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多