Docker 容器中指定用户及组权限

没有 root 权限,又需要在 Docker 容器內挂载 Volume,会发现产生出来的文件皆会是 root 权限,这时候在主机完全是无法写入的。

通过设定 Docker 容器用户及组权限,以解决上述问题。

Docker Run 指定用户及组权限

通过 -u 方式指定用户及组权限。

1
2
docker run -it -v $PWD:/dir \
    -u uid:gid ubuntu /bin/bash

为了更加方便,上述指令可以改成:

1
2
docker run -ti -v $PWD/tmp:/test \
    -u $(id -u):$(id -g) ubuntu /bin/bash

TODO: id -u 获取当前用户UID,id -g 获取当前用户GID

Dockerfile 指定用户及组权限

除 Docker RUN 时指定外,也可在 dockerfile 内直接指定用户及组权限。

1
2
# Dockerfile
USER 1000:1000

不推荐这种方式,不灵活。