我无法在google/cloud sdk映像中使用docker命令
我正在gitlab中运行一个yml脚本,在这里我使用gitlab-ci.yaml创建docker映像并将其推送到Google注册表。因为我无法运行命令。这是我的gitlab代码我无法在google/cloud sdk映像中使用docker命令,docker,gitlab-ci,google-kubernetes-engine,Docker,Gitlab Ci,Google Kubernetes Engine,我正在gitlab中运行一个yml脚本,在这里我使用gitlab-ci.yaml创建docker映像并将其推送到Google注册表。因为我无法运行命令。这是我的gitlab代码 image: docker:latest services: - docker:dind variables: SPRING_PROFILES_ACTIVE: gitlab-ci stages: - build - imagecreation - deploy maven-build: im
image: docker:latest
services:
- docker:dind
variables:
SPRING_PROFILES_ACTIVE: gitlab-ci
stages:
- build
- imagecreation
- deploy
maven-build:
image: maven:3-jdk-8
stage: build
script: "mvn package -B"
artifacts:
paths:
- target/*.war
docker-build:
image: google/cloud-sdk
stage: imagecreation
script:
- docker build -t gcr.io/project-test-to/counter .
- gcloud docker -- push gcr.io/project-test-to/counter
k8s-deploy:
image: google/cloud-sdk
stage: deploy
script:
- echo "$GOOGLE_KEY" > key.json
- gcloud auth activate-service-account --key-file key.json
- gcloud config unset container/use_client_certificate
- gcloud container clusters get-credentials gitlab --zone us-central1-a --project project-test-to
- kubectl apply -f deployment.yaml
她是我遇到的错误。无法连接到的Docker守护进程unix:///var/run/docker.sock. docker守护进程正在运行吗?
错误:作业失败:退出代码1
如何在此映像中运行docker命令?(google/cloud sdk)由于
gcloud docker
命令只是将命令传递给docker,而docker映像google/cloud sdk
似乎没有安装docker,因此您可能需要将主机套接字装载到容器中,如下所示:
docker build:
图片:谷歌/云sdk
阶段:影像创作
脚本:
-docker构建-t gcr.io/project-test-to/counter。
-gcloud docker--将gcr.io/project-test-to/counter推送到
卷:
-“/var/run/docker.sock:/var/run/docker.sock”
还请记住命令
gcloud docker
是。由于gcloud docker
命令只是将命令传递给docker,而docker imagegoogle/cloud sdk
似乎没有安装docker,因此您可能需要将主机套接字装入容器中,如下所示:
docker build:
图片:谷歌/云sdk
阶段:影像创作
脚本:
-docker构建-t gcr.io/project-test-to/counter。
-gcloud docker--将gcr.io/project-test-to/counter推送到
卷:
-“/var/run/docker.sock:/var/run/docker.sock”
请记住命令
gclouddocker
is.跟踪原始答案,“gclouddocker”命令现在已被否决,如前所述。要将映像推送到容器注册表,只需运行以下操作:
$docker推送
我还建议设置docker命令,以便按照本文中提到的步骤以非root用户身份运行它 继原来的答案之后,“gcloud docker”命令现在被弃用,如前所述。要将映像推送到容器注册表,只需运行以下操作: $docker推送
我还建议设置docker命令,以便按照本文中提到的步骤以非root用户身份运行它 如果这是用于构建映像的CircleCI,则可以使用
设置\u remote\u docker
,如中所述:
config.yml
看起来像:
create_app_docker:
docker:
- image: google/cloud-sdk:latest
steps:
- checkout
- setup_remote_docker
- run:
name: Build docker with application
command: |
docker --version
docker build -t my-app ./
docker images
如果这是用于构建映像的CircleCI,则可以使用
setup\u remote\u docker
,如中所述:
config.yml
看起来像:
create_app_docker:
docker:
- image: google/cloud-sdk:latest
steps:
- checkout
- setup_remote_docker
- run:
name: Build docker with application
command: |
docker --version
docker build -t my-app ./
docker images
您需要使用DOCKER\u HOST
添加并绑定此服务上的跑步者。这是我的配置
job:publish:api:
image: google/cloud-sdk:latest
stage: publish
when: on_success
services:
- docker:dind
before_script:
- echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
- gcloud auth configure-docker
script:
- docker build --compress -t ${GCLOUD_IMAGE_CI_FULLNAME} .
- docker push ${GCLOUD_IMAGE_CI_FULLNAME}
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
您需要使用DOCKER\u HOST
添加并绑定此服务上的跑步者。这是我的配置
job:publish:api:
image: google/cloud-sdk:latest
stage: publish
when: on_success
services:
- docker:dind
before_script:
- echo $GCLOUD_SERVICE_KEY > ${HOME}/gcloud-service-key.json
- gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json
- gcloud auth configure-docker
script:
- docker build --compress -t ${GCLOUD_IMAGE_CI_FULLNAME} .
- docker push ${GCLOUD_IMAGE_CI_FULLNAME}
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""
嗨,屋大维,我收到无效的YAML错误,说明“音量键”无效。仅供参考,我不是在POD中运行此脚本,我是在gitlab中运行此脚本(希望这与我们在POD中运行的脚本类似)嗨,octavian,我收到无效YAML错误,声明“卷密钥”无效。仅供参考,我不是在POD中运行此脚本,我是在gitlab中运行此脚本(希望这与我们在POD中运行的脚本类似)在使用google/cloud sdk映像时,如何让docker:dind运行?对我来说,它失败的原因是:source-@Vojtěch您的
.gitlab ci.yml
似乎无效。您试图使用docker:dind
image,并设置了我的解决方案中不需要的docker\u DRIVER=overlay
。什么是“无效”-ci正确运行,直到无法连接到tcp://127.0.0.1:2375
。我还试图删除DOCKER_驱动程序
,但没有任何效果。请参阅:->@Vojtěch,您缺少变量
部分如何在使用google/cloud sdk映像时运行DOCKER:dind?对我来说,它失败的原因是:source-@Vojtěch您的.gitlab ci.yml
似乎无效。您试图使用docker:dind
image,并设置了我的解决方案中不需要的docker\u DRIVER=overlay
。什么是“无效”-ci正确运行,直到无法连接到tcp://127.0.0.1:2375
。我还试图删除DOCKER_驱动程序
,但没有效果。请参阅:->@Vojtěch,您缺少变量
部分