参考
blog: https://www.cnblogs.com/cocoalatte/p/15919366.html
zhihu: https://zhuanlan.zhihu.com/p/496021016
前景提要
客户要求进程不要使用root用户,好在咱们的东西都跑在docker上,这样岂不是建个用户加个权限启动docker就解决了么,但是经过了解,docker的非root用户模式还有点费劲,所以记录一下
创建用户
使用管理员
创建一个名为dockeruser
的用户
1 2 3 sudo -i sudo useradd dockeruser -d /home/dockeruser -m
管理员
配置密码
管理员
解决远程登录
修改以下内容
1 2 3 dockeruser:x:1001:1001::/home/dockeruser:/bin/sh # 替换为 ↓↓↓↓↓↓↓ dockeruser:x:1001:1001::/home/dockeruser:/bin/bash
开始安装
管理员
安装rootless的必备组件: newuidmap
和 newgidmap
,复制以下命令并执行:
1 2 3 4 sudo sh -eux <<EOF # Install newuidmap & newgidmap binaries apt-get install -y uidmap EOF
登录dockeruser
用户
1 ssh dockeruser@localhost
要么通过系统登录界面,要么ssh登录
不能使用su 方式切换到rootless用户,不然后面会提示检测不到systemd, 导致dockerd不能被systemd管理, 只能使用dockerd-rootless.sh脚本管理dockerd
· There’s no login session
管理员
复制并执行
1 curl -fsSL https://get.docker.com/rootless | sh
成功提示 1 2 3 4 5 6 7 8 9 10 11 [INFO] Installed docker.service successfully. [INFO] To control docker.service, run: `systemctl --user (start|stop|restart) docker.service` [INFO] To run docker.service on system startup, run: `sudo loginctl enable-linger dockeruser` [INFO] Creating CLI context "rootless" Successfully created context "rootless" [INFO] Make sure the following environment variables are set (or add them to ~/.bashrc): export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/1001/docker.sock
将docker.sock添加到环境变量
dockeruser
复制并执行:
dockeruser
添加以下内容(
根据安装成功后的提示添加,参考成功提示10,11行)
1 2 > export PATH=/usr/bin:$PATH > export DOCKER_HOST=unix:///run/user/1001/docker.sock
添加完以后使用source ~/.bashrc
命令使环境变量生效。
使用systemctl启动服务
使用dockeruser
执行
1 systemctl --user start docker
dockeruser
设置开始自启(不设置指定用户退出后,服务将停止)
1 loginctl enable-linger dockeruser
rootless使用国内仓库
rootless 与docker不同,docker在 /etc/docker/daemon.json
rootless 在 ~/.config/docker/daemon.json
使用 dockeruser
编辑,复制并执行以下命令:
1 vim ~/.config/docker/daemon.json
填写以下内容
1 2 3 { "registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com","https://3laho3y3.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io","http://f1361db2.m.daocloud.io"] }
重启服务
1 systemctl --user restart docker
docker info
查看详情