docker 使用 root 用户登录 Container-VM Image

hog*_*igo 5 google-compute-engine google-cloud-platform google-container-os

这是关于 Google Container VM Image(beta) https://cloud.google.com/compute/docs/containers/vm-image/ 的问题

我登录了一个由容器 VM 映像制作的实例。并运行

sudo /usr/share/google/dockercfg_update.sh
Run Code Online (Sandbox Code Playgroud)

上面的脚本执行“docker login”到私有容器注册表。

它会导致错误。

/usr/share/google/dockercfg_update.sh: 27: cannot create /root/.dockercfg: Read-only file system
Run Code Online (Sandbox Code Playgroud)

/root 目录在容器虚拟机中似乎是只读的。如何通过 root 用户“docker login”?

小智 5

由于 /root 是只读的,您的凭据无法存储在那里。您可以将非 root 用户添加到“docker”组/usr/share/google/dockercfg_update.shdocker login以该用户身份运行。

来自https://cloud.google.com/compute/docs/containers/vm-image/#accessing_private_google_container_registry

$ sudo usermod -a -G docker ${USER}
$ exec sudo su ${USER}
$ /usr/share/google/dockercfg_update.sh
$ docker pull gcr.io/YOUR_PROJECT/YOUR_IMAGE
Run Code Online (Sandbox Code Playgroud)

如何通过 root 用户“docker login”

如果您必须调用docker login/usr/share/google/dockercfg_update.sh作为root用户(不推荐),一个hacky 方法是HOME=/home/chronos/在您的命令前加上前缀。前任:

# as 'root' user
$ HOME=/home/chronos/ /usr/share/google/dockercfg_update.sh
$ HOME=/home/chronos/ docker pull gcr.io/YOUR_PROJECT/YOUR_IMAGE
Run Code Online (Sandbox Code Playgroud)