VPS安装Docker教程2026:容器化部署完整指南
前言
Docker作为容器化技术的代表,已经成为现代VPS部署的标准工具。它通过将应用及其依赖打包到标准化的容器中,实现了"一次构建,到处运行"的理想状态。
对于个人站长和开发者而言,Docker带来的好处是显而易见的:
- 环境一致性:开发、测试、生产环境完全一致
- 快速部署:秒级启动应用,告别繁琐的配置过程
- 资源隔离:容器间互不干扰,提高服务器安全性
- 易于迁移:换VPS只需迁移镜像,无需重新配置环境
2026年,随着云原生技术的成熟,掌握Docker已经成为VPS运维的基本技能。本文将详细介绍在VPS上安装和配置Docker的完整流程,并结合实际案例帮助您快速上手。
一、Docker基础概念与架构
1.1 Docker核心概念
在动手安装之前,理解Docker的核心概念非常重要:
| 概念 | 说明 | 类比 |
|---|---|---|
| 镜像(Image) | 只读的应用模板 | 类似于ISO光盘镜像 |
| 容器(Container) | 镜像的运行实例 | 类似于正在运行的虚拟机 |
| 仓库(Registry) | 镜像的存储和分发中心 | 类似于Git仓库 |
| Dockerfile | 构建镜像的脚本 | 类似于Makefile |
1.2 Docker架构组件
Docker采用客户端-服务器(C/S)架构:
- Docker Client:用户与Docker交互的命令行工具
- Docker Daemon:后台守护进程,负责处理客户端请求
- Docker Hub:官方公共镜像仓库
- Docker Registry:私有镜像仓库
1.3 为什么选择Docker
传统部署 vs Docker部署对比:
| 维度 | 传统部署 | Docker部署 |
|---|---|---|
| 环境配置 | 需手动安装依赖 | 镜像自带所有依赖 |
| 隔离性 | 进程级隔离弱 | 容器级强隔离 |
| 启动速度 | 分钟级 | 秒级 |
| 资源占用 | 较高 | 较低 |
| 迁移难度 | 困难 | 简单 |
二、VPS环境准备与系统要求
2.1 系统要求检查
在安装Docker之前,请确保您的VPS满足以下要求:
操作系统支持:
- Ubuntu 20.04/22.04/24.04 LTS(64位)
- CentOS 7/8/Stream 8/9(64位)
- Debian 10/11/12(64位)
- Fedora 38/39(64位)
硬件要求:
- CPU:支持64位,建议2核以上
- 内存:至少1GB(推荐2GB以上)
- 磁盘:至少10GB可用空间
检查命令:
# 检查系统版本
cat /etc/os-release
# 检查内核版本(需3.10以上)
uname -r
# 检查CPU架构
uname -m
# 检查内存
free -h
# 检查磁盘空间
df -h
2.2 卸载旧版本
如果VPS上安装了旧版本的Docker,请先卸载:
# Ubuntu/Debian
sudo apt-get remove docker docker-engine docker.io containerd runc
# CentOS/RHEL
sudo yum remove docker docker-client docker-client-latest docker-common \
docker-latest docker-latest-logrotate docker-logrotate \
docker-engine podman runc
2.3 网络与防火墙准备
Docker需要以下端口(根据实际应用开放):
- 2375/2376:Docker守护进程API(不建议公网开放)
- 应用端口:如80(HTTP)、443(HTTPS)、3306(MySQL)等
防火墙配置示例(UFW):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
三、Docker安装详细步骤
3.1 Ubuntu/Debian系统安装
方法1:使用官方便捷脚本(推荐新手)
# 下载并执行官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
sudo docker --version
sudo docker run hello-world
方法2:使用APT仓库安装(推荐生产环境)
# 更新软件包索引
sudo apt-get update
# 安装依赖包
sudo apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 设置Docker仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证安装
sudo docker --version
sudo docker compose version
3.2 CentOS/RHEL系统安装
# 安装yum-utils工具
sudo yum install -y yum-utils
# 添加Docker仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
sudo docker --version
sudo docker run hello-world
3.3 配置非root用户使用Docker
默认情况下,只有root用户和docker用户组的用户才能使用Docker。建议将普通用户加入docker组:
# 创建docker用户组(通常已存在)
sudo groupadd docker
# 将当前用户加入docker组
sudo usermod -aG docker $USER
# 激活用户组变更(重新登录或执行以下命令)
newgrp docker
# 验证(无需sudo)
docker ps
注意事项:
- 加入docker组相当于授予root等效权限(因为可以通过Docker挂载宿主机目录)
- 生产环境建议配置sudo权限而非直接加入docker组
四、Docker镜像加速与优化配置
4.1 配置国内镜像加速器
由于网络原因,从Docker Hub拉取镜像可能很慢。配置国内镜像加速器可以显著提升速度:
编辑Docker守护进程配置文件:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://registry.docker-cn.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
# 重新加载配置并重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证镜像加速是否生效
docker info | grep -A 10 "Registry Mirrors"
4.2 配置Docker日志轮转
防止Docker日志占用过多磁盘空间:
# 编辑/etc/docker/daemon.json,添加日志配置(如上所示)
# 或者为单个容器配置日志
docker run \
--log-driver=json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx:latest
4.3 调整Docker存储位置
默认情况下,Docker数据存储在/var/lib/docker。如果根分区空间不足,可以迁移到大容量分区:
# 停止Docker服务
sudo systemctl stop docker
# 创建新的存储目录
sudo mkdir -p /data/docker
# 迁移数据(需要时间,取决于数据量)
sudo rsync -avz /var/lib/docker/ /data/docker/
# 编辑Docker配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"data-root": "/data/docker"
}
EOF
# 启动Docker服务
sudo systemctl start docker
# 验证存储位置
docker info | grep "Docker Root Dir"
# 确认无误后删除旧数据
sudo rm -rf /var/lib/docker
五、Docker Compose多容器编排
5.1 Docker Compose简介
Docker Compose是用于定义和运行多容器Docker应用的工具。通过一个YAML文件配置应用的所有服务,然后使用一个命令即可创建并启动所有服务。
核心优势:
- 简化多容器应用的管理
- 支持服务依赖关系定义
- 便于开发、测试、生产环境的一致性
- 支持一键部署和销毁
5.2 安装Docker Compose
Docker Compose V2已经作为Docker CLI插件集成,如果安装了docker-compose-plugin,可以直接使用:
# 验证是否已安装
docker compose version
# 如果未安装,手动安装(Linux)
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
5.3 docker-compose.yml文件详解
示例:LNMP环境配置
version: '3.8'
services:
nginx:
image: nginx:alpine
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
- ./wwwroot:/var/www/html
depends_on:
- php
networks:
- lnmp-network
php:
image: php:8.2-fpm
container_name: php
volumes:
- ./wwwroot:/var/www/html
networks:
- lnmp-network
mysql:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: your_database
volumes:
- mysql_data:/var/lib/mysql
- ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- "3306:3306"
networks:
- lnmp-network
networks:
lnmp-network:
driver: bridge
volumes:
mysql_data:
5.4 常用Docker Compose命令
# 启动所有服务(后台运行)
docker compose up -d
# 查看运行中的服务
docker compose ps
# 查看服务日志
docker compose logs -f
# 停止并删除所有服务
docker compose down
# 停止并删除所有服务,同时删除数据卷
docker compose down -v
# 重新构建并启动服务
docker compose up -d --build
# 执行命令到运行中的容器
docker compose exec php bash
# 查看服务资源使用情况
docker compose top
六、Docker安全加固与最佳实践
6.1 安全配置建议
1. 启用Docker Content Trust(DCT)
# 启用镜像签名验证
export DOCKER_CONTENT_TRUST=1
# 拉取镜像时会验证签名
docker pull nginx:latest
2. 限制容器资源使用
# 限制容器使用的资源
docker run \
--memory="512m" \
--memory-swap="1g" \
--cpus="1.5" \
--pids-limit=100 \
nginx:latest
3. 以非root用户运行容器
FROM nginx:alpine
# 创建非root用户
RUN addgroup -g 1000 appgroup && \
adduser -D -u 1000 -G appgroup appuser
# 切换 to 非root用户
USER appuser
CMD ["nginx", "-g", "daemon off;"]
6.2 定期清理Docker资源
# 查看Docker磁盘使用情况
docker system df
# 清理未使用的镜像、容器、网络、数据卷
docker system prune -a
# 仅清理未使用的镜像
docker image prune -a
# 清理未使用的数据卷(谨慎操作)
docker volume prune
6.3 备份与恢复Docker数据
备份MySQL数据卷示例:
# 创建备份容器,挂载数据卷并打包
docker run --rm \
-v mysql_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/mysql_backup_$(date +%Y%m%d).tar.gz /data
# 恢复数据卷
docker run --rm \
-v mysql_data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/mysql_backup_20260101.tar.gz -C /
总结
通过本文的详细讲解,您已经掌握了在VPS上安装和配置Docker的完整流程。Docker不仅能简化应用部署,还能提高服务器资源利用率和安全性。
核心要点回顾:
1. 选择适合的安装方式(新手用脚本,生产用仓库)
2. 配置镜像加速器提升拉取速度
3. 使用Docker Compose管理多容器应用
4. 遵循安全最佳实践,定期清理资源
5. 做好数据备份,防止意外丢失
随着容器化技术的深入,您可能还需要学习Kubernetes等容器编排工具,但Docker始终是容器化之旅的第一步。
相关文章推荐
Docker是现代化VPS运维的基础,以下文章将帮助您进一步提升技能:
- VPS定时任务设置教程2026:crontab配置与自动化任务 - 配合Docker实现自动化容器管理
- VPS配置防火墙规则教程2026:iptables与firewalld详解 - 保护Docker容器网络安全
- VPS搭建网站教程2026:LNMP环境搭建与配置 - 使用Docker快速搭建LNMP环境
- VPS安装数据库教程2026:MySQL/PostgreSQL部署指南 - 在Docker中部署数据库服务
- VPS安全加固教程2026:SSH安全与防暴力破解 - 加强Docker宿主机的安全防护

评论(0)