首页 > 解决方案 > 如何在我的自托管 github 操作运行器上启用非 docker 操作来访问 docker 创建的文件?(无根码头工人)

问题描述

Github 建议以非 root 用户身份运行他们的运行程序,这会导致一些混合 docker 和非 docker 操作的问题。这很烦人,因为它导致结帐操作无法运行,因为它无法访问在 docker 容器中运行的操作创建的文件。

这可以通过使用无根 docker 运行操作运行程序来解决吗?

标签: dockergithubcontainersgithub-actionsrootless

解决方案


这个问题可以通过以 root 运行 github actions runner 来解决,这在一定程度上降低了安全性。

更好的解决方案是使用无根 docker:

  1. 如果您之前通过 Ubuntu 的默认存储库安装了 docker,请从系统中删除它。
  2. 按照此处的指示从 Docker 的存储库安装docker(我还建议启用 cgroupsV2,如此处所述)并重新启动。这将为您提供 /usr/bin 中下一步设置无根 docker 所需的脚本。
  3. 按照此处所述设置无根泊坞窗
  4. 不要忘记运行以下命令,因此 docker 在您注销后仍然运行(如指南中所述)
systemctl --user enable docker
systemctl --user start docker
sudo loginctl enable-linger $(whoami)
  1. 还要确保按照同一页面上的描述创建无根上下文。这将使您自己的 docker 命令和 github 操作运行器自动使用无根 docker。

  2. 安装自托管运行器:https ://docs.github.com/en/actions/hosting-your-own-runners/adding-self-hosted-runners (如果已安装则跳过)

  3. 重新(启动)动作运行器。这可以通过重新启动其 systemd 服务来完成。您的跑步者现在应该可以使用无根 docker

如果您在使用 buildx 的新 docker build github 操作时遇到问题,另请参阅How to solve error with rootless docker in github actions self hosting runner:写 /proc/sys/net/ipv4/ping_group_range:无效参数:未知


推荐阅读