我在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图像进行登录吗?
答案 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维护,并且无需管理服务帐户凭据。