跳到主要内容

Docker 部署

本教程介绍如何在 GoMami VPS 上安装和配置 Docker,快速部署容器化应用。

前置条件

  • 已部署的 VPS 实例(推荐 Ubuntu 24.04 LTS)
  • 已通过 SSH 连接 到服务器
  • 至少 1 GB 内存

安装 Docker

Ubuntu / Debian

# 更新软件包
apt update

# 安装依赖
apt install -y ca-certificates curl gnupg

# 添加 Docker 官方 GPG 密钥
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

# 添加 Docker 仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证安装
docker --version
docker compose version

CentOS / AlmaLinux

# 安装依赖
dnf install -y yum-utils

# 添加 Docker 仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker
dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动并设置开机自启
systemctl start docker
systemctl enable docker

验证安装

# 运行测试容器
docker run hello-world

# 查看 Docker 信息
docker info

配置 Docker 镜像加速

由于网络原因,从 Docker Hub 拉取镜像可能较慢。可以配置镜像加速:

mkdir -p /etc/docker

cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF

# 重启 Docker
systemctl daemon-reload
systemctl restart docker
提示

GoMami 的亚太节点到国际网络延迟较低,直连 Docker Hub 的速度通常也不错。如果拉取速度正常,可以跳过加速配置。

常用 Docker 命令

# 拉取镜像
docker pull nginx:latest

# 运行容器
docker run -d --name my-nginx -p 80:80 nginx

# 查看运行中的容器
docker ps

# 查看容器日志
docker logs my-nginx

# 进入容器
docker exec -it my-nginx /bin/bash

# 停止容器
docker stop my-nginx

# 删除容器
docker rm my-nginx

# 查看镜像列表
docker images

Docker Compose 示例

使用 Docker Compose 部署多容器应用。以下是一个 Nginx + MySQL 的示例:

# docker-compose.yml
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped

db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: your_secure_password
MYSQL_DATABASE: myapp
volumes:
- mysql_data:/var/lib/mysql
restart: unless-stopped

volumes:
mysql_data:
# 启动所有服务
docker compose up -d

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f

# 停止所有服务
docker compose down

资源限制

为容器设置资源限制,避免单个容器占用过多资源:

# 限制内存和 CPU
docker run -d \
--name my-app \
--memory="512m" \
--cpus="1.0" \
my-app-image
警告

VPS 的内存和 CPU 是有限的,运行多个容器时注意合理分配资源,留出足够的系统开销。

下一步