如何启用非 docker 操作以访问我自托管的 github 操作运行器上的 docker 创建的文件? 无根码头工人

问题描述

Github 建议以非 root 用户身份运行他们的运行程序会引起一些issues surrounding mixing docker and non-docker actions. 这很烦人,因为它导致结帐操作无法运行,因为它无法访问操作创建的文件在 docker 容器中运行。

这可以通过使用无根 docker 运行 actions runner 来解决吗?

解决方法

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

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

  1. 如果您之前通过 Ubuntu 的默认存储库安装了 docker,请从您的系统中删除它。
  2. 从 Docker 的存储库安装 docker as directed here(我也推荐 启用 cgroupsV2、as described here) 并重新启动。这将为您提供 /usr/bin 中下一步设置无根 docker 所需的脚本。
  3. 设置无根 docker as described here
  4. 不要忘记运行以下命令,以便在您注销后 docker 仍然运行(如指南中所述)
systemctl --user enable docker
systemctl --user start docker
sudo loginctl enable-linger $(whoami)
  1. 还要确保创建无根上下文 as described on that same page。这将使您自己的 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 hosted runner: write /proc/sys/net/ipv4/ping_group_range: invalid argument: unknown

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...