Docker

View source
Docker 安装和使用指南

安装 Docker 环境

在 Ubuntu 系统上安装 Docker 和 Docker Compose:

sh
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

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

# 添加 Docker 官方稳定源(noble)
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu noble stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新软件包索引
sudo apt-get update

# 安装 Docker 相关组件
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 测试 Docker 是否正常
docker --version
sudo docker run hello-world

配置用户权限

sh
# 查看版本
docker --version
# 将当前用户加入 docker 用户组(避免每次都要 sudo)
sudo usermod -aG docker $USER
# 应用用户组变更(需要重新登录或执行)
newgrp docker
# 再次测试
docker run hello-world

Nginx + Docker Compose 项目设置

创建完整的 Nginx + Docker Compose 项目结构:

sh
# 设置项目根目录
PROJECT_DIR=~/my-nginx
# 创建目录
mkdir -p $PROJECT_DIR/nginx $PROJECT_DIR/html
docker-compose.yml
services:
  nginx:
    image: nginx:latest
    container_name: my-nginx
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - ./html:/usr/share/nginx/html:ro
    extra_hosts:
      - "host.docker.internal:host-gateway" # 添加这一行,用于容器内访问宿主机端口
    restart: unless-stopped

成功后,访问 http://your_ipv4_address,看到页面就成功了!

Cloudflare 配置

添加 DNS 记录

在 Cloudflare 中添加 DNS 记录,例如:添加一条 example.com 的 A 记录,记录值为 IP 地址 your_ipv4_address

SSL 证书创建

在 Cloudflare 仪表板创建证书

  1. 登录 Cloudflare,进入 example.com 的管理页面
  2. 点击左侧菜单的 "SSL/TLS" -> "源服务器" (Origin Server)
  3. 点击 "创建证书" (Create Certificate)
  4. 保持默认选项("由 Cloudflare 生成私钥和 CSR"),主机名列表里应该已经包含了 *.example.comexample.com
  5. 点击 "创建"

复制并保存证书和私钥

Cloudflare 会立即显示两个文本框:

  • 源证书 (Origin Certificate)
  • 私钥 (Private Key)

在服务器上存放证书文件

在服务器上创建证书存储目录:

sh
mkdir -p /etc/ssl

更新配置文件

services:
  nginx:
    image: nginx:latest
    container_name: my-nginx
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
      - ./html:/usr/share/nginx/html:ro
      - ./etc/ssl:/etc/ssl:ro # 添加这一行,指向您存放证书的目录
    extra_hosts:
      - "host.docker.internal:host-gateway" # 添加这一行,用于容器内访问宿主机端口
    restart: unless-stopped

重启 Nginx 容器

sh
docker compose down
docker compose up -d

完整项目目录结构

完成上述所有步骤后,项目目录结构应该如下所示:

~/my-nginx/
├── docker-compose.yml          # Docker Compose 配置文件
├── nginx/                      # Nginx 配置目录
│   └── default.conf           # Nginx 服务器配置
├── html/                       # 网站静态文件目录
│   ├── index.html             # 首页文件
└── etc/                       # 证书和配置目录
    └── ssl/                   # SSL 证书目录
        ├── example.com.pem    # SSL 证书文件
        └── example.com.key    # SSL 私钥文件
Copyright © 2024 - 2025 YiXuan - MIT License