搬瓦工安装 Docker 与 Docker Compose 教程
Docker 是当前最流行的容器化平台,可以让你在隔离的环境中快速部署各种应用。本文将介绍如何在搬瓦工 VPS 上安装 Docker 和 Docker Compose,并讲解常用命令和编排示例。安装好 Docker 后,你可以轻松部署 Nextcloud、Bitwarden、Gitea 等各种应用。
一、系统要求
- 操作系统:Ubuntu 20.04+、Debian 11+、CentOS 7+(推荐 Ubuntu 22.04)。
- 内核版本:Linux 内核 3.10 以上(搬瓦工 KVM 方案均满足)。
- 内存:至少 512MB,建议 1GB 以上。
- 架构:x86_64(搬瓦工所有方案均为此架构)。
注意:搬瓦工已停售的 OpenVZ 架构方案不支持 Docker,必须使用 KVM 方案。
二、在 Ubuntu/Debian 上安装 Docker
2.1 卸载旧版本
apt remove docker docker-engine docker.io containerd runc 2>/dev/null
2.2 安装依赖
apt update
apt install ca-certificates curl gnupg lsb-release -y
2.3 添加 Docker 官方 GPG 密钥
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
2.4 添加 Docker 仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
如果是 Debian 系统,将上面 URL 中的 ubuntu 替换为 debian。
2.5 安装 Docker Engine
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
2.6 验证安装
docker --version
docker compose version
三、在 CentOS 上安装 Docker
3.1 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 2>/dev/null
3.2 安装依赖并添加仓库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.3 安装 Docker Engine
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
3.4 启动 Docker
systemctl start docker
systemctl enable docker
四、Docker 基础配置
4.1 设置开机自启
systemctl enable docker
4.2 配置镜像加速(可选)
如果拉取镜像速度较慢,可以配置镜像加速器。创建或编辑 Docker 配置文件:
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl restart docker
4.3 允许非 root 用户使用 Docker(可选)
usermod -aG docker your-username
需要重新登录 SSH 才能生效。
五、Docker 常用命令
镜像管理
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
容器管理
# 运行容器(后台模式)
docker run -d --name my-nginx -p 80:80 nginx
# 查看运行中的容器
docker ps
# 查看所有容器(包括已停止的)
docker ps -a
# 停止容器
docker stop my-nginx
# 启动已停止的容器
docker start my-nginx
# 删除容器
docker rm my-nginx
# 查看容器日志
docker logs my-nginx
# 进入容器内部
docker exec -it my-nginx /bin/bash
系统维护
# 查看 Docker 系统信息
docker system df
# 清理无用的镜像、容器和网络
docker system prune -a
六、Docker Compose 使用
Docker Compose 用于定义和运行多容器应用。现在的 Docker 安装包已经内置了 Compose 插件,通过 docker compose(注意是空格不是横杠)即可使用。
6.1 Compose 文件示例
以下是一个 WordPress + MySQL 的 Compose 示例,创建 docker-compose.yml 文件:
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
depends_on:
- db
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
volumes:
db_data:
wp_data:
6.2 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 容器本身是无状态的,容器删除后数据会丢失。有两种方式实现数据持久化:
命名卷(Named Volumes)
docker run -d -v my-data:/var/lib/mysql mysql:8.0
数据存储在 Docker 管理的目录中(通常是 /var/lib/docker/volumes/),由 Docker 自动管理。
绑定挂载(Bind Mounts)
docker run -d -v /home/data/mysql:/var/lib/mysql mysql:8.0
数据存储在主机上的指定目录,方便直接访问和备份。
八、容器网络
Docker 提供多种网络模式:
- bridge:默认模式,容器通过虚拟网桥通信。
- host:容器直接使用主机网络,性能最好但端口会冲突。
- none:禁用网络。
在 Compose 中,同一个 docker-compose.yml 的服务默认在同一网络中,可以通过服务名互相访问。
九、常见问题
Docker 无法启动
查看 Docker 服务状态和日志:
systemctl status docker
journalctl -u docker.service
常见原因是内核版本过低或存储驱动不兼容。
磁盘空间不足
Docker 镜像和容器数据会占用大量磁盘空间。定期清理:
docker system prune -a --volumes
此命令会删除所有未使用的镜像、停止的容器和无主数据卷,请确认不需要后再执行。
容器内无法访问网络
检查 DNS 配置,可以在 /etc/docker/daemon.json 中添加:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
修改后重启 Docker 服务。
总结
Docker 是在搬瓦工 VPS 上部署应用的利器,一次配置即可在任何环境中复现。安装好 Docker 后,你可以继续参考以下教程部署各种应用:Nextcloud 私有云盘、Dify AI 平台、Bitwarden 密码管理器、Jellyfin 媒体服务器 等。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受折扣。