虽然可执行文件存在,但在Docker镜像中找不到docker-credential-gcr

时间:2017-04-24 15:10:50

标签: docker google-cloud-sdk

我正在尝试为包含docker client + gcloud以及以下gcloud组件的Gitlab CI管道构建Docker镜像:

  • kubectl
  • docker-credential-gcr

这是我的dockerfile:

FROM docker:git

RUN mkdir /opt \
    && cd /opt \
    && wget -q https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-152.0.0-linux-x86_64.tar.gz \
    && tar -xzf google-cloud-sdk-152.0.0-linux-x86_64.tar.gz \
    && rm google-cloud-sdk-152.0.0-linux-x86_64.tar.gz \
    && ln -s /opt/google-cloud-sdk/bin/gcloud /usr/bin/gcloud \
    && apk -q update \
    && apk -q add python \
    && apk add --update libintl \
    && apk add --virtual build_deps gettext \
    && cp /usr/bin/envsubst /usr/local/bin/envsubst \
    && apk del build_deps \
    && rm -rf /var/cache/apk/* \
    && echo "y" | gcloud components install kubectl docker-credential-gcr \
    && ln -s /opt/google-cloud-sdk/bin/kubectl /usr/bin/kubectl \
    && ln -s /opt/google-cloud-sdk/bin/docker-credential-gcr /usr/bin/docker-credential-gcr

在我的CI流程中,我需要运行docker-credential-gcr(因为this issue)。

docker-credential-gcr可执行文件已在/opt/google-cloud-sdk/bin内正确安装,如运行docker run -i -t gitlabci-test ls /opt/google-cloud-sdk/bin所示

first command screenshot

/usr/bin

所示,docker run -i -t gitlabci-test ls -la /usr/bin内部也正确链接

enter image description here

然而,尝试使用以下任何一种方法调用它都会失败

docker run -i -t gitlabci-test docker-credential-gcr
docker run -i -t gitlabci-test /usr/bin/docker-credential-gcr
docker run -i -t gitlabci-test /opt/google-cloud-sdk/bin/docker-credential-gcr

错误讯息:

/usr/local/bin/docker-entrypoint.sh: exec: line 20: docker-credential-gcr: not found

另一方面,运行kubectl组件可以正常运行

docker run -i -t gitlabci-test kubectl version

enter image description here

我知道如何解决这个问题,以便能够使用容器运行docker-credential-gcr吗?

0 个答案:

没有答案