docker - GitLab,无法登录 Docker 注册表

标签 docker gitlab gitlab-ci gitlab-ci-runner

我是 GitLab 用户。我用 groff 脚本制作了一本 900 页的书。输出将存储在输出文件夹中。当作者进行一些更改并推送到 GitLab 时,Docker 镜像将生成这本书。

这个想法是构建一个 docker 容器并将该容器存储在 GitLab 注册表中。容器的构建工作正常,但我收到一条错误消息。

错误出现在运行脚本中。 docker登录不正确。

image: docker:latest

variables:
  DOCKER_DRIVER: overlay2
  CONTAINER_IMAGE: registry.gitlab.com/test
  DOCKER_IMAGE: paperboy
  TAG: 0.1.0

services:
  - docker:dind

stages:
  - build
  - release
  - run

before_script:
  - docker login registry.gitlab.com --username gitlab+deploy-token-0000 --password 3435563
  - echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin
  - apk update && apk add --no-cache
  - rm -rf /var/cache/apk/*

build:
  stage: build
  script:
    - docker build -t $CONTAINER_IMAGE/$DOCKER_IMAGE .
    - docker push $CONTAINER_IMAGE/$DOCKER_IMAGE

release:
  stage: release
  script:
    - docker pull $CONTAINER_IMAGE/$DOCKER_IMAGE
    - docker tag  $CONTAINER_IMAGE/$DOCKER_IMAGE:latest $CONTAINER_IMAGE/$DOCKER_IMAGE:$TAG
    - docker push $CONTAINER_IMAGE/$DOCKER_IMAGE:$TAG
  only:
    - master

run:
  stage: run
  script:
    - docker pull $CONTAINER_IMAGE/$DOCKER_IMAGE
    - docker run --rm  -v $(pwd)/data/:/home/data 
    -v $(pwd)/output/:/home/output
    -v $(pwd)/output/csv/:/home/output/csv
    -v $(pwd)/output/pdf/:/home/output/pdf paperboy
    - rm -rf "%CACHE_PATH%/%CI_PIPELINE_ID%"
  only:
    - master

这是我的 .gitlab-ci.yml 中运行脚本的想法。我收到此错误消息:

$ docker run --rm 
  -v $(pwd)/data/:/home/data
  -v $(pwd)/output/:/home/output
  -v $(pwd)/output/csv/:/home/output/csv
  -v $(pwd)/output/pdf/:/home/output/pdf $CONTAINER_IMAGE/$DOCKER_IMAGE

  - git add .

docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"-\": executable file not found in $PATH": unknown.
time="2019-09-10T10:55:51Z" level=error msg="error waiting for container: context canceled"
ERROR: Job failed: exit code 127
run:
  stage: run
  script:
    - docker login registry.gitlab.com -u gitlab+deploy-token-95492 -p $DEPLOY_TOKEN
    - docker pull $CONTAINER_IMAGE/$DOCKER_IMAGE
    - docker images | grep paperboy
    - docker run --rm
      -v $(pwd)/data/:/home/data
      -v $(pwd)/output/:/home/output
      -v $(pwd)/output/csv/:/home/output/csv
      -v $(pwd)/output/pdf/:/home/output/pdf
      $CONTAINER_IMAGE/$DOCKER_IMAGE
      - git add .
      - git commit -m "Update"
      - git push origin master
      - rm -rf "%CACHE_PATH%/%CI_PIPELINE_ID%"
  only:
    - master

最佳答案

可以忽略有关未加密存储密码的警告。

对于运行错误,您已指定 paperboy 作为图像,而不是 registry.gitlab.com/test/paperboy。由于您已经拥有组合在一起作为图像名称的变量,因此您可能应该使用它们而不是硬编码的 paperboy 值。

run:
  stage: run
  script:
    - docker pull $CONTAINER_IMAGE/$DOCKER_IMAGE
    - docker run --rm 
      -v $(pwd)/data/:/home/data
      -v $(pwd)/output/:/home/output
      -v $(pwd)/output/csv/:/home/output/csv
      -v $(pwd)/output/pdf/:/home/output/pdf
      $CONTAINER_IMAGE/$DOCKER_IMAGE
    - rm -rf "%CACHE_PATH%/%CI_PIPELINE_ID%"
  only:
    - master

关于docker - GitLab,无法登录 Docker 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57840170/

相关文章:

node.js - 使用 apt-get 安装特定的 NodeJS 版本

android - 在 Android Studio 上连接到 GitLab 存储库

docker - 具有外部包依赖性的 Golang 测试未通过 Gitlab Ci,但通过本地

yaml - 如何在 .gitlab-ci.yml 中指定通配符工件子目录?

docker - 为什么Gitlab-CI在下一阶段会删除工件?

php - 如何在docker中使用unix套接字将nginx连接到php-fpm

node.js - ng build 在 Docker 中返回致命的内存不足异常

node.js - 从nodejs调用rabbitmq

git - 我如何在本地使用 git 命名空间?

gitlab - 带有 Markdown 的扰流板中的代码块