avatar

Ryan's Blog

The first step is always the hardest.

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
  • 工具
Home Docker Engine 与 Docker Compose V2 安装配置指南
文章

Docker Engine 与 Docker Compose V2 安装配置指南

Posted 2023-04-11 Updated 19 days ago
By Ryan Chen
23~30 min read

Docker Engine 与 Docker Compose V2 安装配置指南

前言

Docker 是常用的容器化平台,可以将应用及其依赖打包为镜像,并在不同环境中以容器方式运行。Docker Compose 则用于通过一个 compose.yml 文件定义和管理多容器应用。

需要注意的是,旧版命令 docker-compose 属于 Compose V1;当前更推荐使用 Docker Compose V2,也就是 Docker CLI 插件形式的:

docker compose

本文面向 Linux 服务器环境,整理 Docker Engine 与 Docker Compose V2 的安装、启动、权限配置、常用参数和基础验证步骤。

1. 适用环境

  • CentOS / RHEL / Rocky Linux / AlmaLinux
  • Ubuntu / Debian
  • Docker Engine
  • Docker Compose V2

2. 安装 Docker Engine

2.1 快速安装方式

Docker 官方提供便利安装脚本:

curl -fsSL https://get.docker.com | sudo sh

该方式适合测试环境或快速初始化环境。生产环境建议按官方软件源方式安装,并明确 Docker 版本,避免脚本行为变化带来不可控风险。

2.2 CentOS / RHEL 系安装

移除旧版本:

sudo yum remove -y docker \
  docker-client \
  docker-client-latest \
  docker-common \
  docker-latest \
  docker-latest-logrotate \
  docker-logrotate \
  docker-engine

安装依赖:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加 Docker 官方软件源:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装 Docker Engine 与 Compose 插件:

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动并设置开机自启:

sudo systemctl enable --now docker

2.3 Ubuntu / Debian 安装

移除旧版本:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
  sudo apt-get remove -y $pkg
 done

安装依赖并添加 GPG Key:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
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 软件源:

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" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker Engine 与 Compose 插件:

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动并设置开机自启:

sudo systemctl enable --now docker

Debian 环境请将上面命令中的 ubuntu 替换为 debian,并使用对应官方源。

3. 验证 Docker 与 Compose

验证 Docker:

docker version
docker run --rm hello-world

验证 Docker Compose V2:

docker compose version

查看 Docker 服务状态:

systemctl status docker

4. 非 root 用户使用 Docker

如果希望普通用户直接执行 Docker 命令,可以将当前用户加入 docker 用户组:

sudo usermod -aG docker $USER

重新登录终端后验证:

docker ps

注意:加入 docker 组的用户可以控制 Docker Daemon,权限较高,只建议给可信用户配置。

5. Docker 常用配置

5.1 开机自启

sudo systemctl enable docker

5.2 镜像加速

编辑 /etc/docker/daemon.json:

{
  "registry-mirrors": [
    "https://your-mirror.example.com"
  ]
}

镜像加速地址建议根据当前环境选择可用源,不建议长期依赖已经停止服务或不稳定的旧镜像地址。

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

查看配置:

docker info

5.3 修改 Docker 数据目录

创建数据目录:

sudo mkdir -p /data/docker

编辑 /etc/docker/daemon.json:

{
  "data-root": "/data/docker"
}

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证:

docker info | grep "Docker Root Dir"

5.4 容器自启动策略

常用策略:

策略 说明
no 不自动重启,默认值
on-failure 异常退出时重启,可指定最大次数,例如 on-failure:10
unless-stopped 除非手动停止,否则 Docker 重启后自动启动
always 总是尝试重启容器

创建容器时指定:

docker run -d --name mynginx --restart unless-stopped nginx:latest

修改已有容器:

docker update --restart unless-stopped mynginx

6. Docker Compose V2 基础使用

6.1 Compose 文件示例

准备 compose.yml:

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    restart: unless-stopped

说明:

  • Compose V2 使用 docker compose 命令。
  • 顶层 version 字段已不是必需项。
  • ports 的缩进必须正确,否则 YAML 解析会失败。

6.2 启动服务

在 compose.yml 所在目录执行:

docker compose up -d

查看服务:

docker compose ps

查看日志:

docker compose logs -f

停止服务:

docker compose down

6.3 指定 Compose 文件

如果文件不在当前目录,或文件名不是默认的 compose.yml / docker-compose.yml,可以使用 -f 指定文件:

docker compose -f ../docker.yml up -d

注意:-f 是 docker compose 的参数,应放在 up 前面。

6.4 兼容旧命令

旧版 Compose V1 使用:

docker-compose up -d

新版本推荐使用:

docker compose up -d

如果历史脚本中仍然使用 docker-compose,建议逐步迁移到 Compose V2。

7. 常见问题

7.1 普通用户执行 Docker 提示 permission denied

原因通常是当前用户不在 docker 用户组。

处理:

sudo usermod -aG docker $USER

然后重新登录终端。

7.2 docker compose 命令不存在

先检查 Compose 插件是否安装:

docker compose version

如果不存在,安装插件:

CentOS / RHEL:

sudo yum install -y docker-compose-plugin

Ubuntu / Debian:

sudo apt-get install -y docker-compose-plugin

7.3 镜像拉取慢或失败

可以配置可用的镜像加速源,或者检查服务器网络、DNS、代理配置。

8. 总结

  • 新环境建议使用 Docker Engine + Docker Compose V2。
  • Compose V2 命令是 docker compose,不是旧版 docker-compose。
  • 生产环境建议使用官方软件源安装,并固定版本。
  • 修改 Docker 数据目录、镜像源、用户组权限后,建议重启 Docker 并验证配置。

9. 相关阅读与参考资料

9.1 我的相关实践文章

  • Docker 搭建青龙、NolanJDC 与 xdd-plus 自动化环境
  • KMS 服务搭建指南:Windows 与 Office 激活配置

9.2 Docker 官方文档

  • Install Docker Engine
  • Linux post-installation steps for Docker Engine
  • Install the Docker Compose plugin on Linux
  • Compose file reference
指南
Docker Docker Compose Docker Compose V2 Linux 容器化 安装指南
License:  CC BY 4.0
Share

Further Reading

Jun 27, 2026

Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分

本文整理一套适合 Router Agent + Skill + Runtime 架构的设计原则:Agent 只负责业务决策,Runtime 统一负责执行、恢复、Trace、Checkpoint 和 Evidence,Business Script 只做确定性业务执行。

Sep 9, 2024

Redis 核心概念、数据结构与高可用架构详解

系统梳理 Redis 的核心数据类型、底层结构、过期与淘汰、持久化、事务、主从复制、Sentinel、Cluster、缓存一致性和分布式锁等机制,适合作为 Redis 学习、面试复习和高可用架构设计参考。

Sep 5, 2024

B+树原理与 MySQL InnoDB 索引机制解析

本文从 B+ 树的多叉平衡结构、叶子节点链表、范围查询和磁盘 I/O 特性出发,解释数据库索引为什么常采用 B+ 树,并结合 MySQL InnoDB 的聚簇索引、二级索引、回表、覆盖索引和联合索引机制理解其实际应用。

OLDER

Feign 客户端自动化配置详解:从 FeignAutoConfiguration 到实践

NEWER

Spring Boot 单元测试最佳实践:JUnit 5、Mockito、MockMvc 与测试切片

Recently Updated

  • Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分
  • RocketMQ 架构设计与应用最佳实践:高可用消息队列核心解析
  • Redis 核心概念、数据结构与高可用架构详解
  • B+树原理与 MySQL InnoDB 索引机制解析
  • MySQL AUTO_INCREMENT 插入 0 变成自增值的原因与解决方案

Trending Tags

RocketMQ Windows Feign Docker Zipkin SonarQube OkHttp HttpClient API 性能优化

Contents

©2026 Ryan's Blog. Some rights reserved. · 粤ICP备2022031588号