启动 docker container后,默认的登陆用户为 root,那么如何以其他用户进入docker container 中呢?
问题
启动 docker container后,默认的登陆用户为 root,那么你在容器中,创建一个目录或者文件时,它们的 owner 和 group 就都会是 root。如下:
docker run --rm -it \
-v /local/path:/docker/path \
--workdir /docker/path \
your-docker-image
mkdir testDir
在这种情况下,如果你想在容器外,访问或者修改这些文件或目录的时候,就不太方便,因为你此时的用户可能是非root用户。
$ ll /local/path/
drwxr-x--- 2 root root 4096 Apr 11 11:22 testDir
解决方案
那么怎么办呢?
其实 docker 启动 container 时,可以加上一个 --user
的参数就可以了。这个参数接收两个id,一个 user id (UID),一个 group id (GID),由于docker 是和 系统共用同一个 kernel,所以它们之间共享 uid 、gid 列表。
如下:
docker run --rm -it \
-v /local/path:/docker/path \
--workdir /docker/path \
--user 1000:1000 \
your-docker-image
mkdir testDir
这样子打开 docker container 之后,在创建文件或者目录,它们的 owner 和 group 就都是 uid 为 1000、gid 也为1000的用户了。
如果不知道自己当前用户对应的 uid 和 gid 怎么办?可以用以下写法:
--user $(id -u):$(id -g)
它自动会取到当前用户的uid和gid。