跳转至

Docker 离线安装通用指南(基于官方 Static Binary)

本文介绍如何在 Linux 系统中使用 Docker 官方提供的 static 二进制包进行离线安装,适用于无公网环境或受限网络环境。

支持发行版:

  • Debian / Ubuntu
  • CentOS / Rocky / Alma
  • Arch / Alpine(systemd 环境)
  • 各类 VPS / 云服务器

该方法不依赖 apt/yum,仅需 Docker 官方 tgz 文件。


一、准备工作

1. 下载 Docker 离线包(在有网络的机器)

访问:

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

下载最新版本:

docker-<version>.tgz

例如:

docker-29.2.1.tgz

````

若服务器为 ARM 架构,请选择 `aarch64` 目录。

---

### 2. 传输到离线服务器

使用 scp 或 U 盘:

```bash
scp docker-*.tgz root@server:/root/
````

---

## 二、安装 Docker

### 1. 解压

```bash
tar xf docker-*.tgz

生成目录:

docker/

2. 安装二进制文件

cp docker/* /usr/bin/
chmod +x /usr/bin/*

验证客户端:

docker version

如果只显示 Client 信息,属正常现象。


三、启动 Docker Daemon(临时测试)

首次建议前台启动排错:

dockerd

正常情况下会看到:

API listen on /var/run/docker.sock

另开终端验证:

docker info

如果出现 Server 字段说明 daemon 正常。


四、创建 systemd 服务(永久运行)

1. 创建服务文件

nano /etc/systemd/system/docker.service

内容:

[Unit]
Description=Docker Application Container Engine
After=network.target

[Service]
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd
Restart=always
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target

2. 启用服务

systemctl daemon-reexec
systemctl daemon-reload
systemctl enable docker
systemctl start docker

验证:

docker info

五、推荐基础配置

1. 创建 daemon.json

mkdir -p /etc/docker
nano /etc/docker/daemon.json

示例:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

重启:

systemctl restart docker

六、离线安装 docker compose 插件(可选)

1. 创建插件目录

mkdir -p /usr/libexec/docker/cli-plugins

2. 放入 compose 二进制

文件名必须为:

docker-compose
mv docker-compose /usr/libexec/docker/cli-plugins/
chmod +x /usr/libexec/docker/cli-plugins/docker-compose

验证:

docker compose version

七、离线导入镜像

在有网机器:

docker pull nginx
docker save nginx > nginx.tar

拷贝 nginx.tar 到离线服务器:

docker load < nginx.tar

八、常见问题

1. overlay 错误

modprobe overlay
modprobe br_netfilter

2. cgroup 报错

确保 dockerd 使用 systemd:

dockerd --exec-opt native.cgroupdriver=systemd

3. docker.sock 不存在

说明 daemon 未启动:

systemctl status docker

或手动:

dockerd

4. 查看日志

journalctl -u docker -f

九、卸载 Docker

systemctl stop docker
rm -f /usr/bin/docker*
rm -f /etc/systemd/system/docker.service
rm -rf /var/lib/docker

十、适用场景总结

本方案适合:

  • 完全离线服务器
  • VPS 初始化
  • 教学环境
  • 内网部署
  • 自建云

特点:

  • 不依赖包管理器
  • 版本完全可控
  • 迁移简单
  • 可脚本化部署