不能运行 docker latest on gitlab-ci 运行ner
can not run docker latest on gitlab-ci runner
我正在测试 gitlab-ci 并尝试从 Dockerfile 在注册表中生成镜像。
我有相同的代码只是为了测试:
#gitlab-ci
image: docker:latest
tages:
- build
- deploy
build_application:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . -f Dockerfile
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-test
输出:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker 运行正在拉取图像,但我无法执行 docker 命令。
在我的本地环境中如果运行:
docker run -it docker:latest
我留在容器内,运行 docker 信息我遇到了同样的问题。我不得不通过 运行 以这种方式连接容器来修复它:
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest
但我不知道如何在 gitlab-ci 上修复它。我这样配置 运行ner:
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
也许有人能帮我指明正确的方向。
谢谢
通过 default 无法 运行 docker-in-docker (DIND)(作为安全措施)。
Gitlab 文档中的 This section 是您的解决方案。您必须使用 Docker-in-Docker.
配置您的 运行ner 以使用 DIND 后,您的 .gitlab-ci.yml
将如下所示:
#gitlab-ci
image: docker:latest
variables:
DOCKER_DRIVER: overlay2
services:
- docker:dind
before_script:
- docker info
stages:
- build
- deploy
build_application:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . -f Dockerfile
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-test
我正在测试 gitlab-ci 并尝试从 Dockerfile 在注册表中生成镜像。
我有相同的代码只是为了测试:
#gitlab-ci
image: docker:latest
tages:
- build
- deploy
build_application:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . -f Dockerfile
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-test
输出:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
docker 运行正在拉取图像,但我无法执行 docker 命令。
在我的本地环境中如果运行:
docker run -it docker:latest
我留在容器内,运行 docker 信息我遇到了同样的问题。我不得不通过 运行 以这种方式连接容器来修复它:
docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker:latest
但我不知道如何在 gitlab-ci 上修复它。我这样配置 运行ner:
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
也许有人能帮我指明正确的方向。 谢谢
通过 default 无法 运行 docker-in-docker (DIND)(作为安全措施)。
Gitlab 文档中的This section 是您的解决方案。您必须使用 Docker-in-Docker.
配置您的 运行ner 以使用 DIND 后,您的 .gitlab-ci.yml
将如下所示:
#gitlab-ci
image: docker:latest
variables:
DOCKER_DRIVER: overlay2
services:
- docker:dind
before_script:
- docker info
stages:
- build
- deploy
build_application:
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA . -f Dockerfile
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA-test