上一篇 下一篇 分享链接 返回 返回顶部

Debian 服务器安装 Docker 全流程:2026 实战部署指南

发布人:慈云数据-客服中心 发布时间:14小时前 阅读量:4

Debian Docker部署教程|2026最新版

随着容器化技术在开发、测试、运维和生产环境中的广泛应用,Docker 已经成为 Linux 服务器上最常见的基础组件之一。无论是部署网站、数据库、缓存服务,还是搭建 CI/CD、微服务架构,Docker 都可以显著降低环境配置成本,提高应用交付效率。

本文将以 Debian 系统 为例,详细介绍 Docker 的安装、配置、常用命令、镜像加速、Docker Compose 部署以及生产环境建议。教程面向 2026 年常见服务器环境,适用于 Debian 11、Debian 12 以及后续版本的大多数场景。


一、Docker 是什么?

Docker 是一种开源的容器化平台,它可以将应用程序及其运行环境打包到一个独立的容器中运行。与传统虚拟机相比,Docker 容器更加轻量,启动速度更快,占用资源更少。

简单来说,Docker 可以帮助你做到:

  • 在不同服务器上运行一致的应用环境;
  • 避免“在我电脑上可以运行”的问题;
  • 快速部署和回滚服务;
  • 隔离不同应用之间的依赖;
  • 方便构建自动化运维和 CI/CD 流程。

例如,你可以用 Docker 快速部署 Nginx、MySQL、Redis、PostgreSQL、Node.js、Python、Java 应用,而不需要在宿主机上手动安装大量依赖。


二、部署前准备

在正式安装 Docker 之前,建议先确认服务器环境。

1. 系统要求

本文推荐环境如下:

项目 建议配置
操作系统 Debian 11 / Debian 12 / 更新版本
CPU 架构 x86_64 / arm64
内存 最低 1GB,建议 2GB 以上
磁盘 建议 20GB 以上可用空间
用户权限 root 用户或具备 sudo 权限的用户

查看 Debian 版本:

cat /etc/os-release

查看系统架构:

uname -m

常见输出说明:

x86_64

表示 AMD64 架构。

aarch64

表示 ARM64 架构。

2. 更新系统软件包

安装 Docker 前,建议先更新系统软件源和已安装软件包:

sudo apt update
sudo apt upgrade -y

如果你使用的是 root 用户,可以省略 sudo

apt update
apt upgrade -y

三、卸载旧版本 Docker

如果服务器之前安装过旧版 Docker,建议先卸载,以避免版本冲突。

执行以下命令:

sudo apt remove -y docker docker-engine docker.io containerd runc

如果提示某些包不存在,这是正常现象,可以忽略。

需要注意的是,该命令通常不会删除已有的 Docker 镜像、容器和数据卷。如果你想彻底清理 Docker 数据,请谨慎执行:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

注意:删除 /var/lib/docker 会清除本机所有 Docker 镜像、容器、网络和数据卷,请确认不再需要这些数据后再操作。


四、使用官方仓库安装 Docker

Debian 默认软件源中的 Docker 版本可能较旧。为了获得更稳定和更新的版本,推荐使用 Docker 官方 APT 仓库安装。

1. 安装必要依赖

sudo apt install -y ca-certificates curl gnupg lsb-release

这些依赖的作用如下:

  • ca-certificates:用于 HTTPS 证书校验;
  • curl:用于下载文件;
  • gnupg:用于验证软件包签名;
  • lsb-release:用于识别系统发行版信息。

2. 添加 Docker 官方 GPG 密钥

首先创建密钥存放目录:

sudo install -m 0755 -d /etc/apt/keyrings

下载 Docker 官方 GPG 密钥:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置权限:

sudo chmod a+r /etc/apt/keyrings/docker.gpg

3. 添加 Docker 软件源

执行以下命令添加 Docker 官方仓库:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新软件源:

sudo apt update

如果没有报错,说明 Docker 官方仓库添加成功。


五、安装 Docker Engine

执行以下命令安装 Docker 相关组件:

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

这些组件分别是:

组件 说明
docker-ce Docker 社区版引擎
docker-ce-cli Docker 命令行工具
containerd.io 容器运行时
docker-buildx-plugin 增强版镜像构建插件
docker-compose-plugin Docker Compose v2 插件

安装完成后,查看 Docker 版本:

docker --version

查看 Docker Compose 版本:

docker compose version

注意,2026 年推荐使用:

docker compose

而不是旧版:

docker-compose

新版 Docker Compose 已经作为 Docker CLI 插件集成。


六、启动并设置 Docker 开机自启

安装完成后,启动 Docker 服务:

sudo systemctl start docker

设置开机自启:

sudo systemctl enable docker

查看 Docker 服务状态:

sudo systemctl status docker

如果看到类似:

active (running)

说明 Docker 已经正常运行。


七、测试 Docker 是否安装成功

运行官方测试容器:

sudo docker run hello-world

如果输出类似以下内容,说明 Docker 安装成功:

Hello from Docker!
This message shows that your installation appears to be working correctly.

这个命令会做几件事:

  1. Docker 检查本地是否有 hello-world 镜像;
  2. 如果本地没有,会从 Docker Hub 拉取;
  3. 创建并运行一个测试容器;
  4. 输出测试信息后自动退出。

八、配置普通用户运行 Docker

默认情况下,Docker 命令需要 root 权限。如果你希望普通用户不加 sudo 使用 Docker,可以将用户加入 docker 用户组。

执行:

sudo usermod -aG docker $USER

然后退出当前终端,重新登录,或者执行:

newgrp docker

测试:

docker ps

如果没有权限报错,说明配置成功。

安全提醒:加入 docker 用户组的用户基本等同于拥有 root 权限,因为 Docker 可以挂载宿主机目录并操作系统文件。因此生产环境中应谨慎授权。


九、配置 Docker 镜像加速

在部分地区访问 Docker Hub 可能较慢,甚至出现拉取失败。可以通过配置镜像加速器提升拉取速度。

编辑 Docker 配置文件:

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

写入以下内容:

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://docker.m.daocloud.io"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

保存后重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

查看配置是否生效:

docker info

在输出中找到:

Registry Mirrors

如果能看到配置的镜像地址,说明配置成功。

需要说明的是,镜像加速器的可用性会随时间变化。如果某个地址失效,可以更换为云服务商提供的加速地址。


十、Docker 常用命令

安装完成后,掌握一些常用命令可以帮助你快速管理容器。

1. 查看 Docker 信息

docker version
docker info

2. 搜索镜像

docker search nginx

3. 拉取镜像

docker pull nginx

指定版本:

docker pull nginx:1.27

4. 查看本地镜像

docker images

5. 运行容器

以前台方式运行:

docker run nginx

后台方式运行:

docker run -d --name my-nginx nginx

映射端口:

docker run -d --name my-nginx -p 80:80 nginx

含义如下:

  • -d:后台运行;
  • --name my-nginx:指定容器名称;
  • -p 80:80:将宿主机 80 端口映射到容器 80 端口;
  • nginx:使用的镜像名称。

6. 查看运行中的容器

docker ps

查看所有容器,包括已停止的容器:

docker ps -a

7. 停止和启动容器

停止容器:

docker stop my-nginx

启动容器:

docker start my-nginx

重启容器:

docker restart my-nginx

8. 查看容器日志

docker logs my-nginx

实时查看日志:

docker logs -f my-nginx

显示最后 100 行:

docker logs --tail=100 my-nginx

9. 进入容器

docker exec -it my-nginx bash

如果容器内没有 bash,可以使用 sh:

docker exec -it my-nginx sh

10. 删除容器和镜像

删除已停止容器:

docker rm my-nginx

强制删除运行中的容器:

docker rm -f my-nginx

删除镜像:

docker rmi nginx

清理未使用资源:

docker system prune

清理未使用镜像、容器、网络和构建缓存:

docker system prune -a

生产环境执行清理命令前,请务必确认不会误删仍需保留的镜像或缓存。


十一、使用 Docker 部署 Nginx 示例

下面通过部署 Nginx 来演示 Docker 的基础使用。

1. 创建网站目录

sudo mkdir -p /opt/docker/nginx/html

创建一个测试页面:

echo "

Hello Docker on Debian 2026

" | sudo tee /opt/docker/nginx/html/index.html

2. 启动 Nginx 容器

docker run -d \
  --name nginx-demo \
  -p 8080:80 \
  -v /opt/docker/nginx/html:/usr/share/nginx/html:ro \
  --restart unless-stopped \
  nginx:latest

参数说明:

  • -p 8080:80:访问服务器 8080 端口即访问容器 80 端口;
  • -v:挂载宿主机目录到容器;
  • :ro:只读挂载,容器不能修改宿主机网页文件;
  • --restart unless-stopped:容器异常退出或系统重启后自动启动;
  • nginx:latest:使用最新版 Nginx 镜像。

3. 访问测试

在浏览器访问:

http://服务器IP:8080

如果看到:

Hello Docker on Debian 2026

说明 Nginx 容器部署成功。


十二、Docker Compose 部署教程

当服务较多时,单独使用 docker run 命令会变得复杂。Docker Compose 可以通过一个 YAML 文件定义多个服务,更适合部署实际项目。

1. 创建项目目录

mkdir -p /opt/docker/compose-nginx
cd /opt/docker/compose-nginx

2. 创建页面文件

mkdir -p html
echo "

Nginx deployed by Docker Compose

" > html/index.html

3. 创建 compose.yml

nano compose.yml

写入:

services:
  nginx:
    image: nginx:latest
    container_name: compose-nginx
    ports:
      - "8081:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped

4. 启动服务

docker compose up -d

查看服务:

docker compose ps

查看日志:

docker compose logs -f

停止服务:

docker compose down

重新拉取镜像并更新服务:

docker compose pull
docker compose up -d

Docker Compose 的优势在于配置清晰、可维护性强。对于 WordPress、GitLab、Nextcloud、Traefik、PostgreSQL 等服务,推荐优先使用 Compose 方式部署。


十三、配置 Docker 数据目录

默认情况下,Docker 数据存储在:

/var/lib/docker

如果服务器系统盘较小,而数据盘较大,可以将 Docker 数据目录迁移到数据盘。

假设新目录为:

/data/docker

1. 停止 Docker

sudo systemctl stop docker
sudo systemctl stop containerd

2. 创建新目录

sudo mkdir -p /data/docker

3. 同步旧数据

sudo rsync -aHAXx /var/lib/docker/ /data/docker/

如果没有安装 rsync:

sudo apt install -y rsync

4. 修改 daemon.json

sudo nano /etc/docker/daemon.json

加入:

{
  "data-root": "/data/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

如果你已经配置了镜像加速器,请合并 JSON,不要写成两个独立对象。例如:

{
  "data-root": "/data/docker",
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

5. 启动 Docker

sudo systemctl daemon-reload
sudo systemctl start containerd
sudo systemctl start docker

确认 Docker 新目录:

docker info | grep "Docker Root Dir"

确认无误后,可以备份或删除旧目录:

sudo mv /var/lib/docker /var/lib/docker.bak

运行一段时间确认没有问题后,再删除备份目录。


十四、防火墙与端口放行

如果服务器启用了防火墙,需要放行容器映射端口。

1. 使用 UFW

安装 UFW:

sudo apt install -y ufw

放行 SSH:

sudo ufw allow ssh

放行 Web 端口:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp

启用 UFW:

sudo ufw enable

查看状态:

sudo ufw status

2. 云服务器安全组

如果你使用的是云服务器,例如阿里云、腾讯云、华为云、AWS、Azure、Google Cloud 等,还需要在云平台安全组中放行对应端口。

常见端口包括:

服务 端口
HTTP 80
HTTPS 443
SSH 22
Nginx 测试 8080
MySQL 3306
PostgreSQL 5432
Redis 6379

生产环境中,数据库和 Redis 不建议直接暴露到公网,应尽量通过内网访问或使用防火墙限制来源 IP。


十五、Docker 生产环境建议

在生产环境中使用 Docker,不能只关注“能运行”,还需要重视安全、稳定性和可维护性。

1. 固定镜像版本

不建议生产环境长期使用:

image: nginx:latest

因为 latest 会随时间变化,可能导致更新后行为不一致。

推荐固定版本:

image: nginx:1.27

这样可以保证部署结果更可控。

2. 配置重启策略

建议为关键服务配置:

restart: unless-stopped

或者:

restart: always

这样当容器异常退出或服务器重启后,服务可以自动恢复。

3. 限制日志大小

Docker 默认日志可能无限增长,导致磁盘被占满。建议在 /etc/docker/daemon.json 中配置日志轮转:

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

4. 使用数据卷保存持久化数据

数据库、上传文件、配置文件等需要持久化保存的数据,不应该只放在容器内部。容器删除后,内部数据可能丢失。

推荐使用:

volumes:
  - ./data:/var/lib/mysql

或者使用 Docker volume:

volumes:
  mysql_data:

5. 定期备份

对于数据库和关键业务数据,必须设置备份策略。建议至少包括:

  • 每日自动备份;
  • 备份文件异地存储;
  • 定期测试恢复流程;
  • 保留多个历史版本;
  • 对重要备份进行加密。

6. 减少容器权限

不要随意使用:

privileged: true

除非你非常清楚其风险。privileged 会让容器获得接近宿主机的高级权限,可能带来安全隐患。

7. 控制端口暴露

只暴露必要端口。例如数据库服务可以只在 Docker 网络内部使用,而不映射到公网:

services:
  mysql:
    image: mysql:8.4
    expose:
      - "3306"

如果必须暴露,也建议限制来源 IP。

8. 定期更新镜像

Docker 镜像可能存在安全漏洞,应定期更新。常用更新流程如下:

docker compose pull
docker compose up -d
docker image prune

对于生产服务,更新前建议先阅读镜像变更说明,并在测试环境验证。


十六、常见问题排查

1. docker 命令提示权限不足

错误示例:

permission denied while trying to connect to the Docker daemon socket

解决方法:

sudo usermod -aG docker $USER
newgrp docker

或者直接使用:

sudo docker ps

2. Docker 服务无法启动

查看状态:

sudo systemctl status docker

查看日志:

sudo journalctl -u docker -xe

常见原因包括:

  • daemon.json JSON 格式错误;
  • 数据目录权限异常;
  • 磁盘空间不足;
  • containerd 服务异常。

检查 JSON 文件格式:

cat /etc/docker/daemon.json

可以使用在线 JSON 校验工具,或者安装 jq

sudo apt install -y jq
jq . /etc/docker/daemon.json

3. 镜像拉取失败

可能原因:

  • 网络访问 Docker Hub 不稳定;
  • DNS 解析异常;
  • 镜像名称或标签错误;
  • 镜像加速器失效。

可以尝试:

docker pull nginx:latest

检查 DNS:

cat /etc/resolv.conf

临时使用公共 DNS:

sudo nano /etc/resolv.conf

加入:

nameserver 1.1.1.1
nameserver 8.8.8.8

4. 容器端口无法访问

排查步骤:

查看容器是否运行:

docker ps

查看端口映射:

docker port 容器名

查看容器日志:

docker logs 容器名

检查防火墙:

sudo ufw status

检查云服务器安全组是否放行端口。

5. 磁盘空间被 Docker 占满

查看 Docker 占用:

docker system df

清理未使用资源:

docker system prune

清理构建缓存:

docker builder prune

谨慎执行深度清理:

docker system prune -a

十七、推荐的 Docker 目录结构

为了方便维护,建议将不同项目放在独立目录中。例如:

/opt/docker/
├── nginx/
│   ├── compose.yml
│   ├── html/
│   └── conf/
├── mysql/
│   ├── compose.yml
│   └── data/
├── redis/
│   ├── compose.yml
│   └── data/
└── app/
    ├── compose.yml
    ├── .env
    └── data/

这种结构有几个优点:

  • 项目之间清晰隔离;
  • 配置文件容易备份;
  • 迁移服务器更方便;
  • Docker Compose 管理更直观;
  • 日后排查问题更高效。

十八、完整快速安装脚本

如果你已经熟悉流程,也可以使用以下命令快速安装 Docker:

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl enable --now docker

docker --version
docker compose version

测试:

sudo docker run hello-world

如果测试成功,说明 Docker 已经部署完成。


十九、总结

本文介绍了在 Debian 系统上部署 Docker 的完整流程,包括系统准备、卸载旧版本、添加官方仓库、安装 Docker Engine、启动服务、配置普通用户权限、镜像加速、常用命令、Docker Compose 使用、数据目录迁移、防火墙设置以及生产环境优化建议。

对于 2026 年的 Debian 服务器部署实践,推荐遵循以下原则:

  1. 使用 Docker 官方仓库安装新版 Docker;
  2. 使用 docker compose 管理多容器服务;
  3. 生产环境固定镜像版本,避免盲目使用 latest
  4. 为容器配置重启策略和日志轮转;
  5. 数据必须持久化并定期备份;
  6. 不随意暴露数据库、缓存等敏感服务端口;
  7. 定期更新镜像和系统安全补丁;
  8. 建立清晰的目录结构和部署规范。

只要按照本文步骤操作,你就可以在 Debian 服务器上稳定部署 Docker,并为后续搭建网站、数据库、自动化运维平台或微服务系统打下良好的基础。

目录结构
全文