惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
S
Schneier on Security
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
The GitHub Blog
The GitHub Blog
腾讯CDC
A
About on SuperTechFans
H
Help Net Security
The Register - Security
The Register - Security
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
V
Visual Studio Blog
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
D
DataBreaches.Net
I
InfoQ
L
Lohrmann on Cybersecurity
M
MIT News - Artificial intelligence
I
Intezer
博客园 - 聂微东
Webroot Blog
Webroot Blog
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
Hacker News: Ask HN
Hacker News: Ask HN
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
D
Docker
N
Netflix TechBlog - Medium
小众软件
小众软件
The Cloudflare Blog
WordPress大学
WordPress大学
N
News | PayPal Newsroom
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
C
Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
W
WeLiveSecurity
Schneier on Security
Schneier on Security

博客园 - 无心々菜

高并发 - 配置2 高并发 - 配置 地图 - QGIS加载geojson,并导入Postgis数据库 VUE2 - Geoserver打印矢量PDF地图 - 在VUE2中的应用 地图 - Geoserver打印矢量PDF地图 运维 - 哪吒监控 Postgres 数据库在docker环境下分布式部署(arm64框架) Postgres 数据库在docker环境下分布式部署 Https - 配置方案 OpenObserver - 系统接口监控 VUE3 - Docker部署 + traefik反代 VUE2 - Docker部署 + traefik反代 高斯DB 数据库的安装 NETCORE - 使用 EFCORE 调用 高斯DB数据库 JMeter - 压力测试 NETCORE - IdentityServer4 多节点部署 NETCORE - IdentityServer4 相关文档 .NET框架 - NETCORE + API + EF(DBFirst) + PostgresSql Docker 部署 APISIX + etcd Docker部署martin 矢量切片服务器 Postgres 数据库的安装 NETCORE - 调用 RUSTFS Docker - 部署 RustFS 对像存储 Docker - 使用 Docker Secrets 敏感数据传输 Docker - 部署 Consul KV 统一管理所有项目的配置 Docker - 部署 HashiCorp Vault 开源密钥管理工具 kong 网关下集成 Consul服务注册与发现 Docker 部署 kong 网关 Docker - 部署Consul 新
Docker - 离线+无root环境安装 docker-rootless
无心々菜 · 2026-06-11 · via 博客园 - 无心々菜

Docker - 离线+无root环境安装 docker-rootless

系统:麒麟v10 Linux  |  架构:arm64  |  权限:无root

一. 下载 Docker 静态二进制包

下面这二个都要下载:

二. 部署

在服务器上执行以下操作:

  1. 把下载好的文件复制到 /data/wtools
    • docker-rootless-extras-28.3.3.tgz
    • docker-28.3.3.tgz
  2. 解压:
    tar -xzvf /data/wtools/docker-rootless-extras-28.3.3.tgz -C /data/winstall
  3. 配置:
    cd /data/winstall
    mv docker-rootless-extras docker
    tar -xzvf /data/wtools/docker-28.3.3.tgz
    which newuidmap newgidmap
  4. 设置环境变量:
    echo 'export PATH="/data/winstall/docker:$PATH"' >> ~/.bashrc
    echo 'export DOCKER_HOST=unix:///data/winstall/docker/runtime/docker.sock' >> ~/.bashrc
    source ~/.bashrc

三. 生成脚本

1) 启动脚本

#!/bin/bash
# 基础路径
DOCKER_HOME=/data/winstall/docker

# 环境变量(固定死,免得每次都 export)
export PATH=$DOCKER_HOME:$PATH
export XDG_RUNTIME_DIR=$DOCKER_HOME/runtime
export DOCKERD_ROOTLESS_ROOT=$DOCKER_HOME/rootless
export DOCKER_HOST=unix://$DOCKERD_ROOTLESS_ROOT/docker.sock

mkdir -p $XDG_RUNTIME_DIR $DOCKERD_ROOTLESS_ROOT $DOCKER_HOME/data

# 后台启动并写日志
nohup $DOCKER_HOME/dockerd-rootless.sh --data-root=$DOCKER_HOME/data > $DOCKER_HOME/docker.log 2>&1 &
echo $! > $DOCKER_HOME/docker.pid
echo "Rootless Docker started, PID=$(cat $DOCKER_HOME/docker.pid)"

2) 停止脚本

#!/bin/bash
DOCKER_HOME=/data/winstall/docker
PID_FILE=$DOCKER_HOME/docker.pid

if [ ! -f "$PID_FILE" ]; then
  echo "❌ No PID file found at $PID_FILE. Is Docker running?"
  exit 1
fi

PID=$(cat $PID_FILE)

if ps -p $PID > /dev/null 2>&1; then
  echo "Stopping Rootless Docker (PID=$PID)..."
  kill $PID
  sleep 2
  if ps -p $PID > /dev/null 2>&1; then
    echo "Process still running, force killing..."
    kill -9 $PID
  fi
  rm -f $PID_FILE
  echo "✅ Rootless Docker stopped."
else
  echo "⚠️ No process found with PID=$PID. Removing stale PID file."
  rm -f $PID_FILE
fi

四. 设置权限

  1. 脚本权限:
    chmod +x /data/winstall/docker/start-docker.sh
    chmod +x /data/winstall/docker/stop-docker.sh
  2. 管理员权限(需要root):
    su - root
    echo "tailweb:100000:65536" | tee -a /etc/subuid
    echo "tailweb:100000:65536" | tee -a /etc/subgid
    exit

五. 启动

▶ 启动: /data/winstall/docker/start-docker.sh

⏹ 停止: /data/winstall/docker/stop-docker.sh

六. 切换网络驱动

docker-rootless 默认使用 vpnkit 网络驱动,该驱动会随运行时间持续占用内存。推荐替换为 slirp4netns,降低资源开销。

📊 三大网络驱动对比

🚀 吞吐量:

pasta(最优,高带宽场景)> slirp4netns(中等)> vpnkit(略低)

⏱ 网络延迟:

pasta(最低)< slirp4netns(适中)< vpnkit(略高)

💾 资源占用:

slirp4netns(最小,CPU/内存最优)< pasta(适中)< vpnkit(偏高)

1. 下载部署 slirp4netns

ARM64 架构下载地址:https://github.com/rootless-containers/slirp4netns/releases

本次选用版本:v1.3.4,下载文件 slirp4netns-aarch64,并重命名为 slirp4netns

将文件上传至目录:/data/winstall/docker/

添加执行权限:

chmod +x /data/winstall/docker/slirp4netns

版本校验:

/data/winstall/docker/slirp4netns --version

正常输出参考:

slirp4netns version 1.3.4
commit: 129916bd8dc2b8eaf621671b3431799c827d689e
libslirp: 4.9.2
SLIRP_CONFIG_VERSION_MAX: 6
libseccomp: 2.5.3

检查文件路径:

which slirp4netns

预期返回:

/data/winstall/docker/slirp4netns

2. 修改启动脚本切换驱动

先停止当前运行的 Docker:

/data/winstall/docker/stop-docker.sh

编辑启动脚本 /data/winstall/docker/start-docker.sh,新增网络驱动环境变量,完整内容如下:

#!/bin/bash

DOCKER_HOME=/data/winstall/docker

export PATH=$DOCKER_HOME:$PATH
export XDG_RUNTIME_DIR=$DOCKER_HOME/runtime
export DOCKERD_ROOTLESS_ROOT=$DOCKER_HOME/rootless
export DOCKER_HOST=unix://$DOCKERD_ROOTLESS_ROOT/docker.sock

# 指定使用 slirp4netns 网络驱动
export DOCKERD_ROOTLESS_ROOTLESSKIT_NET=slirp4netns

mkdir -p "$XDG_RUNTIME_DIR"
mkdir -p "$DOCKERD_ROOTLESS_ROOT"
mkdir -p "$DOCKER_HOME/data"

echo "Using network driver: slirp4netns"

nohup "$DOCKER_HOME/dockerd-rootless.sh" --data-root="$DOCKER_HOME/data" > "$DOCKER_HOME/docker.log" 2>&1 &

echo $! > "$DOCKER_HOME/docker.pid"

sleep 3

echo "Rootless Docker started, PID=$(cat "$DOCKER_HOME/docker.pid")"

3. 重启并验证配置

重新启动 Docker:

/data/winstall/docker/start-docker.sh

启动日志参考:

Using network driver: slirp4netns
Rootless Docker started, PID=3785812

查看进程确认驱动生效:

ps -ef | grep rootlesskit | grep -v grep

进程输出参考:

tailweb  3785812       1  0 15:02 pts/0    00:00:00 rootlesskit --state-dir=/data/winstall/docker/runtime/dockerd-rootless --net=slirp4netns --mtu=1500 --slirp4netns-sandbox=auto --slirp4netns-seccomp=auto --disable-host-loopback --port-driver=builtin --copy-up=/etc --copy-up=/run --propagation=rslave /data/winstall/docker/dockerd-rootless.sh --data-root=/data/winstall/docker/data

✅ 若进程中包含 --net=slirp4netns,说明网络驱动切换成功。


end.