docker - 如何在我的自托管 github 操作运行器上启用非 docker 操作来访问 docker 创建的文件?(无根码头工人)
问题描述
Github 建议以非 root 用户身份运行他们的运行程序,这会导致一些混合 docker 和非 docker 操作的问题。这很烦人,因为它导致结帐操作无法运行,因为它无法访问在 docker 容器中运行的操作创建的文件。
这可以通过使用无根 docker 运行操作运行程序来解决吗?
解决方案
这个问题可以通过以 root 运行 github actions runner 来解决,这在一定程度上降低了安全性。
更好的解决方案是使用无根 docker:
- 如果您之前通过 Ubuntu 的默认存储库安装了 docker,请从系统中删除它。
- 按照此处的指示从 Docker 的存储库安装docker(我还建议启用 cgroupsV2,如此处所述)并重新启动。这将为您提供 /usr/bin 中下一步设置无根 docker 所需的脚本。
- 按照此处所述设置无根泊坞窗。
- 不要忘记运行以下命令,因此 docker 在您注销后仍然运行(如指南中所述)
systemctl --user enable docker
systemctl --user start docker
sudo loginctl enable-linger $(whoami)
还要确保按照同一页面上的描述创建无根上下文。这将使您自己的 docker 命令和 github 操作运行器自动使用无根 docker。
安装自托管运行器:https ://docs.github.com/en/actions/hosting-your-own-runners/adding-self-hosted-runners (如果已安装则跳过)
重新(启动)动作运行器。这可以通过重新启动其 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:无效参数:未知
推荐阅读
- postgresql - 带有覆盖世界的六边形网格坐标的表格
- xslt - 使用 xsl 来确定一个特定标签后面是否跟着另一个特定标签
- android - 我已经初始化了按钮,但它仍然说它是 Null
- julia - Julia MethodError:没有方法匹配 parseNLExpr_runtime(
- mysql - mysql order by 在这个请求中
- c# - 作为属性和对象类型的函数参数的表达式
- gwt - GWT Framework 启用控制台日志
- javascript - 如何在 Mongoose 排序结束时保持空值?
- wordpress - Wordpress 社交登录 Facebook 新用户未注册
- r - dplyr 过滤器中的特殊错误