Docker 是当前最流行的容器化平台,能把应用与运行时环境打包为独立镜像,实现一次构建、到处运行。在搬瓦工 VPS 上安装 Docker 后,你可以用一两条命令部署 Nginx、MySQL、WordPress、Nextcloud 等任何容器化应用,而不必担心依赖冲突。Docker Compose 则进一步简化了多容器应用的编排。本文完整演示 Docker 与 Docker Compose 的安装、基础配置与常用用法。

本文要点

  • 官方一键脚本安装 Docker(推荐方式)
  • 配置镜像加速(提升拉取速度)
  • Hello World 验证安装
  • Docker Compose 安装与使用示例
  • 常用 Docker 命令速查

系统要求

要求项说明
操作系统Debian 11/12 · Ubuntu 20.04/22.04/24.04(推荐)
内核版本≥ 3.10(现代发行版均满足)
架构x86_64 / aarch64
权限root 或可 sudo 用户

安装 Docker

方式一:官方一键脚本(推荐)

curl -fsSL https://get.docker.com -o get-docker.sh
bash get-docker.sh

脚本会自动检测系统版本并安装对应的 Docker Engine。完成后运行:

systemctl enable --now docker
docker --version

方式二:apt 手动安装(Debian/Ubuntu)

apt update
apt install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /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" \
  > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Hello World 验证

docker run hello-world

看到 "Hello from Docker!" 字样说明 Docker 安装成功,能正常拉取镜像并运行容器。

配置镜像加速

如果拉取镜像速度较慢,可配置镜像加速地址。编辑(或创建)/etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://dockerhub.icu"
  ]
}
systemctl daemon-reload
systemctl restart docker
docker info | grep -A5 "Registry Mirrors"

镜像加速地址可能失效

镜像加速服务由第三方提供,可用性不稳定。搬瓦工海外机房直连 Docker Hub 速度通常尚可,可先不配置,拉取慢时再添加。

安装 Docker Compose

如果使用上述 apt 方式安装,Docker Compose Plugin 已包含(命令为 docker compose)。否则手动安装:

# 安装最新版 Docker Compose 独立二进制
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d'"' -f4)
curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
  -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

Docker Compose 使用示例

以部署 Nginx + MySQL 为例,创建 docker-compose.yml

version: "3.9"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: yourpassword
      MYSQL_DATABASE: mydb
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:
docker compose up -d     # 后台启动所有服务
docker compose ps        # 查看服务状态
docker compose logs -f   # 查看日志
docker compose down      # 停止并删除容器

常用 Docker 命令速查

命令说明
docker ps列出运行中的容器
docker ps -a列出所有容器(含已停止)
docker images列出本地镜像
docker pull 镜像名拉取镜像
docker run -d -p 80:80 镜像名后台运行容器并映射端口
docker stop 容器ID停止容器
docker rm 容器ID删除容器
docker rmi 镜像ID删除镜像
docker logs -f 容器ID实时查看容器日志
docker exec -it 容器ID bash进入运行中的容器

小结

  • get.docker.com 官方脚本是最简洁的安装方式
  • hello-world 验证安装是否成功
  • 镜像加速可按需配置,海外机房通常不必须
  • Docker Compose 用 YAML 文件管理多容器应用,极大简化部署

常见问题

普通用户需要 sudo 才能运行 docker 命令,怎么免 sudo?

把用户加入 docker 组:usermod -aG docker 用户名,重新登录后生效。注意 docker 组成员等价于 root 权限,谨慎操作。

docker run 后容器马上退出是什么原因?

通常是镜像的启动命令执行完毕立即退出。用 docker logs 容器ID 查看输出,排查具体原因。

磁盘被 Docker 占满了怎么清理?

执行 docker system prune -a 清除所有停止的容器、悬空镜像和无用卷;注意不会删除正在运行的容器。

Docker Compose 和 docker-compose 有什么区别?

新版 Docker 内置了 Compose 插件,命令为 docker compose(无连字符);旧版独立安装的是 docker-compose,功能基本相同。