问题:
使用宿主机的同名用户登陆Docker容器,执行文件修改操作,提示:Permission denied.
- 宿主机中,用户ubuntu的uid和gid信息如下:
[ubuntu@ubuntu ~]$ id
uid=1001(ubuntu) gid=1001(ubuntu) groups=1001(ubuntu),10(wheel)
- Docker容器中,用户ubuntu的uid和gid信息如下:
[ubuntu@3f556dcf398b ~]$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),10(wheel)
影响:会导致使用ubuntu的同名用户进入Docker容器后,修改文件和创建目录等操作没有权限。
解决办法:
(1)在Docker容器中,使用root账户,修改ubuntu用户的uid和gid
[ubuntu@3f556dcf398b ~]$ su
[root@3f556dcf398b ubuntu]$ usermod -u 1001 ubuntu
[root@3f556dcf398b ubuntu]$ groupmod -g 1001 ubuntu
[root@3f556dcf398b ubuntu]$ id ubuntu
uid=1001(ubuntu) gid=1001(ubuntu) groups=1001(ubuntu),10(wheel)
[root@3f556dcf398b ubuntu]$ su ubuntu
[ubuntu@3f556dcf398b ~]$
(2)在docker修改成功后,在docker镜像退出前,使用docker commit保存镜像的修改:
[ubuntu@ubuntu ~]$ docker commit -m 'set uid and gid for ubuntu' -a 'test' 3f556dcf398b docker_image:latest
注:在Docker容器中,ubuntu用户登陆,不要使用sudo去修改ubuntu的uid和gid,会提示:“sudo: unknown uid 1000: who are you?”,发生骑驴找驴的问题。