docker用戶映射


實驗目的:系統用戶映射到docker容器里,使其不再使用root權限

第一步,修改daemon.json,添加userns-remap如下:

如果你想指定特定用戶可以把default修改為系統用戶,如果為default就代表用戶分配的權利交給default自動完成

{
    "registry-mirrors":["https://registry.docker-cn.com","https://l10nt4hq.mirror.aliyuncs.com"],
    "userns-remap": "default"
}

第二步,使其生效

systemctl daemon-reload && systemctl restart docker

第三步,查看驗證,可以看到在我們添加daemon.json之后,系統自動創建出dockremap這個用戶,uid:100000,gid:65536,

[root@VM-0-15-centos ~]# cat /etc/subuid
dockremap:100000:65536
[root@VM-0-15-centos ~]# cat /etc/subgid
dockremap:100000:65536

第四步,查看/var/lib/docker下生成的文件,可以看到生成了100000.100000這個目錄,這個目錄,這個目錄就是存儲我們用戶信息的

[root@VM-0-15-centos ~]# ls -ltr /var/lib/docker/
total 48
drwx------  4 root   root   4096 Dec  9 14:28 plugins
drwx------  3 root   root   4096 Dec  9 14:28 image
drwx------  2 root   root   4096 Dec  9 14:28 trust
drwxr-x---  3 root   root   4096 Dec  9 14:28 network
drwx------  2 root   root   4096 Dec  9 14:28 swarm
drwx--x--x  4 root   root   4096 Dec  9 14:28 buildkit
drwx------  2 root   root   4096 Dec  9 14:41 runtimes
drwx------  2 root   root   4096 Dec  9 14:41 volumes
drwx------  2 root   root   4096 Dec  9 14:48 tmp
drwx------  7 root   root   4096 Dec  9 14:50 overlay2
drwx------  3 root   root   4096 Dec  9 14:50 containers
drwx------ 13 100000 100000 4096 Dec  9 16:41 100000.100000

第五步,修改內核參數max_user_namespaces,默認這個參數的值為0,是不允許用用戶名稱空間的,現在我們給他開啟起來,具體設置多少值酌情,當然我們也可以寫入到sysctl.conf文件中

[root@VM-0-15-centos 100000.100000]# sysctl -w user.max_user_namespaces=10000
user.max_user_namespaces = 10000

第六步,啟動一個容器,卷映射為宿主機的/data/目錄映射到容器的/data目錄

[root@VM-0-15-centos 100000.100000]# docker run -d -v /data/:/data centos:centos7.6.1810 sleep 2222
Unable to find image 'centos:centos7.6.1810' locally
centos7.6.1810: Pulling from library/centos
ac9208207ada: Pull complete 
Digest: sha256:62d9e1c2daa91166139b51577fe4f4f6b4cc41a3a2c7fc36bd895e2a17a3e4e6
Status: Downloaded newer image for centos:centos7.6.1810
f4c09761d8d140afcd04694c3778005b2d309d6ff5df3872872b9984728a66a9
[root@VM-0-15-centos 100000.100000]# 
[root@VM-0-15-centos 100000.100000]# 
[root@VM-0-15-centos 100000.100000]# docker ps 
CONTAINER ID   IMAGE                   COMMAND        CREATED         STATUS         PORTS     NAMES
f4c09761d8d1   centos:centos7.6.1810   "sleep 2222"   5 seconds ago   Up 3 seconds             vigorous_neumann

第七步,連接到容器創建一個文件會發現權限不足

 

第八步,修改宿主機的/data目錄權限

 

第九步,接着在容器中創建文件,可以發現,不再報錯,然后在看一下文件的屬主和屬組,你會發現是root

 

 第十步,接着讓我看看宿主機這個文件的屬主和屬組,可以看到,這個文件只是一個普通用戶的文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM