Debian 服务器安装 Docker 全流程:2026 实战部署指南
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.
这个命令会做几件事:
- Docker 检查本地是否有
hello-world镜像; - 如果本地没有,会从 Docker Hub 拉取;
- 创建并运行一个测试容器;
- 输出测试信息后自动退出。
八、配置普通用户运行 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.jsonJSON 格式错误;- 数据目录权限异常;
- 磁盘空间不足;
- 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 服务器部署实践,推荐遵循以下原则:
- 使用 Docker 官方仓库安装新版 Docker;
- 使用
docker compose管理多容器服务; - 生产环境固定镜像版本,避免盲目使用
latest; - 为容器配置重启策略和日志轮转;
- 数据必须持久化并定期备份;
- 不随意暴露数据库、缓存等敏感服务端口;
- 定期更新镜像和系统安全补丁;
- 建立清晰的目录结构和部署规范。
只要按照本文步骤操作,你就可以在 Debian 服务器上稳定部署 Docker,并为后续搭建网站、数据库、自动化运维平台或微服务系统打下良好的基础。