Docker 离线安装与根目录迁移引发的思考

在一些 内网或隔离环境(如政企服务器、科研内网)中,无法直接联网执行 apt install dockeryum install docker
这时就需要通过 离线安装 Docker 的方式来部署容器环境。
本文记录了我在离线安装 Docker 并迁移根目录(/var/lib/docker)后的经验与踩坑总结 🧠


🧩 一、查看系统环境

首先确定系统架构和版本,避免下载错误的二进制包。

1
2
3
4
5
# 查看系统架构(如 x86_64 或 aarch64)
uname -m

# 查看是否已有 Docker 版本
docker -v

📦 二、下载 Docker 离线包

在可联网的机器上访问官方下载页:

👉 https://download.docker.com/linux/static/stable/

根据系统架构选择合适的 tar 包(例如 docker-18.06.3-ce.tgz
然后将其拷贝到目标服务器上(使用 scp、U 盘等方式)。


🔧 三、离线安装步骤

1
2
3
4
5
# 解压二进制文件
tar -zxvf docker-18.06.3-ce.tgz

# 将可执行文件复制到系统路径
cp ./docker/* /usr/bin/

接着创建并编辑 Docker 的 systemd 启动文件:

1
2
cd /etc/systemd/system/
touch docker.service

⚙️ 四、编辑 docker.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=192.168.205.230
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target

保存退出后:

1
2
3
4
5
6
chmod +x docker.service
systemctl daemon-reload
systemctl start docker
systemctl status docker
docker -v
systemctl enable docker.service

✅ 如果能正常显示版本号,说明安装成功。


📂 五、Docker 根目录迁移(/var/lib/docker)

默认情况下,Docker 的数据根目录为:

1
/var/lib/docker

当系统盘空间较小或需要挂载独立磁盘时,可以将其迁移到其他目录。

1
2
3
4
5
6
7
8
# 停止 Docker
systemctl stop docker

# 移动目录到新位置(例如 /data/docker)
mv /var/lib/docker /data/docker

# 修改 daemon.json
vi /etc/docker/daemon.json

添加以下配置:

1
2
3
{
"data-root": "/data/docker"
}

重新加载:

1
2
systemctl daemon-reload
systemctl start docker

🧠 六、关于根目录迁移的性能思考

在 Linux 系统中,Docker 默认使用 overlay2 联合文件系统 来管理镜像与容器层。
overlay2 的优势在于:

  • 文件共享高效
  • 读写速度快
  • 支持写时复制(Copy-on-Write)

但当你将根目录迁移到 NFS 或网络存储挂载目录 时,Docker 自动降级为 vfs 模式

⚠️ 问题来了:

vfs 不再具备写时复制、层合并等优化机制,镜像导入与容器启动会显著变慢(可能慢数十倍)。


💬 七、总结与建议

操作 建议 说明
离线安装 ✅ 官方静态二进制包 轻量稳定,避免依赖冲突
根目录迁移 ✅ 可行,但需使用本地磁盘 避免 NFS / vfs 降级
overlay2 🚀 性能优选 本地 ext4/xfs 文件系统下效果最佳
vfs ⚠️ 仅在必要时使用 会极大降低性能

🧭 八、参考资料


💡 思考一句话总结:

离线环境不是障碍,真正的挑战是理解 Docker 背后的存储与性能机制。


Docker 离线安装与根目录迁移引发的思考
http://example.com/2025/10/12/Docker-离线安装与根目录迁移引发的思考/
作者
Lingkai Shi
发布于
2025年10月12日
许可协议