背景 在没有root权限的节点部署并运行容器需要使用rootless来实现
环境信息
操作系统
内核版本
BigCloud Enterprise Linux For Euler 21.10 LTS
4.19.90-2107.6.0.0100.oe1.bclinux.x86_64
xxxxxxxxxx docker run -rm --net host -v /data/logs:/data/logs -e ENABLE_SYSTEM=true -e MAGIC_LOG_PATH=/data/logs -e REGION_TYPE=1 -e NODE_EXPORTER=node_exporter -e PROMETHEUS_URL=http://x.x.x.x:9090 -e ENABLE_PROMETHEUS_AUTH=true -e PROMETHEUS_USER=admin -e PROMETHEUS_PASS=admin \monitoring/prom_monitoring:v2.4shell
wget https://download.docker.com/linux/static/stable/x86_64/docker-20.10.24.tgz
下载rootless安装包,需要跟docker版本保持一致
wget https://download.docker.com/linux/static/stable/x86_64/docker-rootless-extras-20.10.24.tgz
安装docker
mkdir $HOME/data tar xf docker-20.10.24.tgz -C $HOME/data/ mkdir $HOME/data/docker/bin mv $HOME/data/docker/* $HOME/data/docker/bin/
安装rootless
tar xf docker-rootless-extras-20.10.24.tgz -C /tmp/ mv /tmp/docker-rootless-extras/* $HOME/data/docker/bin/
编辑$HOME/.bash_profile添加环境变量
cat >> $HOME/.bash_profile << 'EOF' export DOCKER_HOME="$HOME/data/docker" export PATH=$DOCKER_HOME/bin:$PATH EOF source $HOME/.bash_profile bash
安装docker rootless,并将XDG_RUNTIME_DIR、DOCKER_HOST变量添加到.bash_profile环境变量
$ dockerd-rootless-setuptool.sh install [INFO] systemd not detected, dockerd-rootless.sh needs to be started manually: PATH=/home/apps/data/docker/bin:/sbin:/usr/sbin:$PATH dockerd-rootless.sh [INFO] Creating CLI context "rootless" Successfully created context "rootless" [INFO] Use CLI context "rootless" Current context is now "rootless" [INFO] Make sure the following environment variables are set (or add them to ~/.bashrc): # WARNING: systemd not found. You have to remove XDG_RUNTIME_DIR manually on every logout. export XDG_RUNTIME_DIR=/home/apps/.docker/run export PATH=/home/apps/data/docker/bin:$PATH Some applications may require the following environment variable too: export DOCKER_HOST=unix:///home/apps/.docker/run/docker.sock
安装fuse-overlayfs,让rootless使用fuse-overlayfs文件系统
wget https://github.com/containers/fuse-overlayfs/releases/download/v1.14/fuse-overlayfs-x86_64 fuse-overlayfs mv fuse-overlayfs-x86_64 fuse-overlayfs chmod 777 fuse-overlayfs mv fuse-overlayfs $HOME/data/docker/bin
创建docker配置文件目录
mkdir -p $HOME/.config/docker cat > $HOME/.config/docker/daemon.json << EOF { "data-root": "$HOME/data/docker/docker-root", "storage-driver": "fuse-overlayfs", "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } } EOF
启动docker
nohup dockerd-rootless.sh &