从COS

时间:2017-07-14 20:48:13

标签: docker docker-compose google-compute-engine google-container-registry

我在GCE上运行Container-Optimized OS VM(使用Docker 17.03.2),并希望使用docker-compose来管理容器。 docker-compose未在COS上安装,但可以使用图片docker/compose从容器中运行,如this tutorial中所述:

docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v "$PWD:/rootfs/$PWD" \
    -w="/rootfs/$PWD" \
    docker/compose:1.14.0 up

我想访问的图片位于私人Google容器注册表中,需要docker login进行拉取访问。如何运行docker / compose图像来访问私有注册表?

COS VM已经被授权访问注册表,我在VM上有一个服务帐户JSON文件,但是可以在运行up命令之前将其传递给compose图像进行登录吗?

4 个答案:

答案 0 :(得分:0)

使用GCR's advanced authentication docs的_json_key身份验证,以下脚本是否有效?

docker run \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$PWD:/rootfs/$PWD" \ -w="/rootfs/$PWD" \ docker/compose:1.14.0 \ /bin/bash -c "docker login -u _json_key -p $(cat keyfile.json) https://gcr.io; up"

答案 1 :(得分:0)

您想使用this方法进行身份验证。

答案 2 :(得分:0)

我找到的最佳解决方案是在Docker主机上进行身份验证,然后将docker配置安装到docker-compose容器中:

docker login -u _json_key -p "$(cat keyfile.json)" https://gcr.io
docker run \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /root/.docker:/root/.docker \
    -v "$PWD:$PWD" \
    -w="$PWD" \
    docker/compose:1.14.0 \
    up

答案 3 :(得分:0)

直接使用服务帐户JSON凭证的替代方法,如果COS VM已被授权访问注册表(例如,附加的服务帐户具有对托管图像的项目的GCS视图访问权限),则运行{{1 COS附带的脚本:

/usr/share/google/dockercfg_update.sh

这样做的好处是可以由Google维护,并且无需管理服务帐户凭据。