如何启用非 docker 操作来访问我自己托管的 github 操作运行器上 docker 创建的文件? (无根docker)

How to enable non-docker actions to access docker-created files on my self hosted github actions runner? (rootless docker)

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

这可以通过 运行 将操作 运行 与无根 docker 结合来解决吗?

这个问题可以通过 运行将 github 操作 运行 用户作为 root 来解决,这在一定程度上降低了安全性。

更好的解决方案是使用 rootless 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 操作 运行ner 自动使用无根 docker.

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

  3. 重新(开始)操作 运行。这可以通过重新启动其 systemd 服务来完成。您的 运行ner 现在应该可以使用 rootless docker

如果您对使用 buildx 的新 docker 构建 github 操作有疑问,另请参阅