docker使用

使用docker的user-remap功能

user-remap功能是将宿主机上的指定用户,映射到docker容器内部的root用户。

如果是要root映射到root,则不需要使用user-remap功能。只要没有开启user-remap功能,docker启动的容器在宿主机上本身就有root权限,只不过这个权限不全。具体有哪些权限,可以进入容器中查看

capsh --print

在宿主机上创建一个普通用户

使用root用户进行以下操作

groupadd -g 1000 dockeruser
useradd -u 10000 -g dockeruser -d /home/dockeruser -m dockeruser

解释

groupadd 中的-g是指定group id为10000。 groupadd命令中的dockeruser为组名。
useradd中,-u指定uer id为100000。-d为指定该用户的根目录。-m表示创建该目录。dockeruser为用户名。-g dockeruser表示,指定创建的该用户属于dockeruser组,该dockeruser组必须存在,否则会报错,所以必须先执行groupadd命令。
在docker启动过程中,要求组名与用户名一致。

查看宿主机上的所有用户信息

列出 Linux 系统上所有用户的 3 种方法——Linux中国-知乎

方法一:

compgen -u
compgen -g

解释
-u是宿主机的所有用户
-g是宿主机的所有组

方法二:

cat /etc/passwd

确保宿主机上的subuid和subgid中有信息

[root@centos centos-usr]# cat /etc/subuid
dockeruser:100000:65536
[root@centos centos-usr]# cat /etc/subgid
dockeruser:100000:65536

检查宿主机上是否启用了命名空间隔离

理解Docker(3):Docker 使用 Linux namespace 隔离容器的运行环境——weixin_33851604-CSDN

[root@node1 1573]# uname -a
Linux node1.exampleos.com 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

[root@node1 1573]# cat /boot/config-3.10.0-514.2.2.el7.x86_64 | grep CONFIG_USER_NS
CONFIG_USER_NS=y

如果是 「y」,则启用了,否则未启用。同样地,可以查看其它 namespace:

CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y

如果是centos7,则需要使用以下方法:
参考链接1
参考链接2

修改daemon.json文件

centos为/etc/docker/daemon.json

#vim /etc/docker/daemon.json
{
    "registry-mirrors":["https://registry.docker-cn.com","https://l10nt4hq.mirror.aliyuncs.com"],
    "userns-remap": "dockeruser"
}

解释

userns-remap标签中的dockeruser表示要将docker容器中的root用户映射为宿主机上的指定的用户名和组名。是宿主机侧的用户名和组名。

重启docker

systemctl stop docker
systemctl daemon-reload
systemctl start docker

查看docker工作目录的权限归属

centos中的docker的工作目录是/var/lib/docker

[root@centos centos-usr]# ls -ltr /var/lib/docker/
总用量 24
drwx------.  4 root root   32 812 11:13 plugins
drwx------.  3 root root   22 812 11:13 image
drwx------.  2 root root    6 812 11:13 trust
drwxr-x---.  3 root root   19 812 11:13 network
drwx------.  2 root root    6 812 11:13 swarm
drwx--x--x.  4 root root  120 812 11:13 buildkit
drwx------.  2 root root    6 927 16:55 runtimes
drwx-----x.  3 root root  122 927 16:55 volumes
-rw-r--r--.  1 root root 5120 927 16:59 linkgraph.db
drwx------.  2 root root    6 928 11:52 tmp
drwx-----x. 56 root root 8192 928 11:53 overlay2
drwx-----x. 10 root root 4096 928 11:53 containers
drwx-----x. 11 root root  135 928 15:13 100000.100000

可以看到,新用户10000.10000的docker工作目录的所有权归属于root用户,并不归属于新用户dockeruser。所以需要将用户所有权改为dockeruser

修改新用户的工作目录所有权

chown -R dockeruser:dockeruser /var/lib/docker/100000.100000

解释

chown命令修改文件的所有者。修改所属的用户和所属的组。
命令中,前一个dockeruser是将要修改为的所属用户,后一个dockeruser是将要修改为的所属组。
-R是把目录中的所有文件的所有者都进行更改。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值