Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在github操作中使用私有docker映像_Docker_Github Actions - Fatal编程技术网

如何在github操作中使用私有docker映像

如何在github操作中使用私有docker映像,docker,github-actions,Docker,Github Actions,我试图在github actions中设置一个运行私有docker映像的作业。我将使用container选项在docker映像内部进行构建 我正在使用以下代码: jobs: container1: runs-on: ubuntu-latest container: saeed/privateimage:1 steps: - uses: actions/checkout@v2 - run: | echo "Runs

我试图在github actions中设置一个运行私有docker映像的作业。我将使用container选项在docker映像内部进行构建

我正在使用以下代码:

jobs:
  container1:
    runs-on: ubuntu-latest
    container: saeed/privateimage:1
    steps:
      - uses: actions/checkout@v2
      - run: |
          echo "Runs inside a container"
但我不能提供我的docker hub信誉,所以它失败了

如何进行身份验证以提取该私有映像


谢谢。

更新:检查。GitHub操作


指示
jobs..container.image
应该是公共可用的映像:

“要用作运行操作的容器的Docker映像。该值可以是Docker Hub映像名或公共Docker注册表名。”

您可以配置访问私有
docker
注册表的凭据,然后使用机密登录并运行您的私有映像,例如:

  test:
    name: test
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2

      - name: example.com docker registry login
        run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login example.com -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin

      - name: run backend tests using example.com/my-image
        run: |
          docker run --rm -i \
            -v ${PWD}:/workspace/source \
            -e PYTHONPATH=/workspace/source \
            -e DJANGO_SETTINGS_MODULE="www.settings" \
            -w /workspace/source \
            --entrypoint tox \
            example.com/my-image

看起来今天刚刚添加了对此的支持,请参阅

《华盛顿邮报》使用了以下示例:

作业:
建造:
容器:
图片:octocat/ci图片:最新
资格证书:
用户名:mona
密码:${secrets.docker\u hub\u password}
服务:
db:
图片:octocat/testdb:latest
资格证书:
用户名:mona
密码:${secrets.docker\u hub\u password}

容器
的文档是。

对于那些试图使用自定义Docker映像的人,我就是这样做的,该映像发布到位于
ghcr.io
的新GitHub Docker容器注册表中

台阶
  • 创建个人访问令牌,如的GitHub文档所示。要执行此操作,请转到您的
    GitHub帐户>设置>开发人员设置>个人访问令牌
    ,并为令牌选择以下选项:



  • 转到项目的GitHub存储库,然后转到
    设置>机密>新机密
    ,创建如下机密:

  • 将该令牌放入计算机的环境中,如下所示(或复制它,以可行的方式):

    导出DOCKER\u容器\u注册表\u令牌=
    
  • 将Docker映像推送到
    ghcr.io/:
    。为此,您可以在的文档中找到。本质上,您可以在计算机中执行以下操作:

    #登录到您的ghcr.io
    echo$DOCKER_容器_注册表_令牌| DOCKER登录-u--密码标准
    #作为一个例子,这里我拉一个图像,标记它,然后推它。
    docker pull ubuntu:18.04
    docker tag ubuntu:18.04 ghcr.io//my_special_ubuntu:最新版本
    docker push ghcr.io//my_special_ubuntu:最新版本
    
  • 然后,在存储库中的
    .github/workflows/
    文件夹下创建一个操作。在本例中,我们将其命名为
    super action

    #您可以在使用的任何编辑器中创建文件。
    #这可以做的工作,虽然。。。
    cd$YOUR\u PROJECT\u PATH/.github/workflows
    touch super-action.yml
    
  • 打开
    super action.yml
    操作,您可以执行以下操作:

    #动作名称
    名称:超级行动
    #在这里,此操作将在所有推送上启用。
    #修改此选项以满足您的需要。
    关于:
    推
    #就业科
    工作:
    #将使用您刚刚推送到ghcr.io的容器映像的作业
    超级工作:
    运行日期:ubuntu-18.04
    容器:
    图片:ghcr.io//:
    资格证书:
    用户名:
    密码:${secrets.DOCKER\u CONTAINER\u REGISTRY\u TOKEN}
    步骤:
    -名称:超级步骤
    shell:bash
    运行:|
    #使用容器和
    #ghcr.io上的新Docker图像!>
    echo”--这在我的自定义Docker映像中运行--”
    
  • 结果 当你把某件事推到回购协议上后,你应该会在你的行为中看到类似这样的东西。在下面的截图中,我使用自己的docker图像。还有我自己的
    超级动作

    然后,您可以看到作业的
    run
    命令在容器中使用Docker图像执行!

    谢谢你的帮助。是的,我也注意到了。合法。请注意,当
    操作运行程序
    在容器内运行时,不支持
    容器
    功能(
    错误:当运行程序已在容器内运行时,不支持容器功能。
    )。我仍然必须使用语法。在Kubernetes跑步的自我托管跑步者。