【问题标题】:Github Actions, self-hosted runner: Possible to add options to 'docker create'?Github Actions,自托管运行器:可以向“docker create”添加选项吗?
【发布时间】:2020-11-20 03:49:59
【问题描述】:

总结:

自托管运行器上的 GitHub 操作在 docker 容器中执行,这些容器以一系列选项启动,由操作/运行器软件预先确定。如何优雅地为docker createdocker run 添加自定义选项?

详细说明

当我在自托管运行器上运行 github 操作工作流时,流程开始如下:

  • 设置作业
  • 初始化容器
    • 检查 docker 版本
    • 清理以前作业的资源
    • 创建本地容器网络
    • 启动作业容器这里变得有趣

作业容器是使用这样的命令启动的,正如我在日志中看到的那样:

/usr/bin/docker create --name da928aa7e61a4a44bd8e525...ea --label d36a64 --workdir /__w/xyz/xyz --network github_network_187...1631 -e "HOME=/github/home" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" etc. pp.

现在,我有一些非常特殊的测试要在该容器中作为我的 CI 构建的一部分运行。为此,我需要为/usr/bin/docker create 指定其他选项,所以想象一下我需要来自这个list 的任何选项。比如说--cap-add

我该怎么做?我已经想到了一些选项:

  • 我可以破解跑步者,但它们会自动更新,我不想重复这样做。
  • 我还可以将 /usr/bin/docker 移动到其他位置并替换为智能 bash 脚本,修改选项然后调用 docker。但这会影响该系统上所有用户的 docker。

还有其他想法吗?

【问题讨论】:

    标签: docker github-actions github-actions-runners


    【解决方案1】:

    我在这里回答我自己的问题:

    这些选项可以指定为工作流 yml 的一部分,如下所述:

    https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idcontainer

    .github/workflows/workflow.yml 的示例部分

    (...)
        container:
          image: contoso.azurecr.io/bionic-custom:latest
          options: --cap-add=NET_ADMIN
    (...)
    

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2023-03-27
      • 2020-07-22
      • 2021-10-21
      • 2020-09-14
      • 2021-11-02
      • 1970-01-01
      • 2020-11-28
      • 2020-09-14
      相关资源
      最近更新 更多