文章目录:
一、什么是 Docker Compose?
二、Docker Compose 安装教程(Linux)
Step 1:安装 Docker
Step 2:安装 Docker Compose v2(推荐)
三、基础目录结构与配置示例
项目结构:
四、编写 docker-compose.yml
五、准备网站内容(index.html)
六、运行与验证
启动服务
查看运行状态
浏览器访问验证
七、服务管理命令总结
八、常见问题及解决方案
九、扩展学习方向
一、什么是 Docker Compose?
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。使用 YAML 文件定义服务后,可以通过一条命令一键部署所有服务。
-
项目标准化部署工具
-
一键启动、停止、重建服务
-
配合
volume实现数据共享 -
与 Docker Desktop 完全兼容
二、Docker Compose 安装教程(Linux)
Step 1:安装 Docker
若未安装 Docker,可执行以下脚本:
curl -fsSL https://get.docker.com | bash
验证:
root@pve2:~/docker-compose-nginx# docker --version
'Docker version 28.3.1, build 38b7060
Step 2:安装 Docker Compose v2(推荐)
root@pve2:~/docker-compose# wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64
root@pve2:~/docker-compose# cp docker-compose-linux-x86_64 /usr/local/bin/docker-compose
root@pve2:/usr/local/bin# chmod +x docker-compose
验证:
root@pve2:~/docker-compose-nginx# docker-compose --version
Docker Compose version v2.16.0
三、基础目录结构与配置示例
我们将使用 docker-compose.yml 部署一个 Nginx 网站。
项目结构:
root@pve2:~/docker-compose-nginx# tree
.
├── docker-compose.yml
└── html
└── index.html2 directories, 2 files
root@pve2:~/docker-compose-nginx#
四、编写 docker-compose.yml
root@pve2:~/docker-compose-nginx# cat docker-compose.yml
version: "3.8"services:nginx:image: nginx:latestcontainer_name: my-nginxports:- "8080:80" # 映射主机8080端口到容器80volumes:- ./html:/usr/share/nginx/html:ro # 本地html目录挂载到容器中restart: always
五、准备网站内容(index.html)
在 html/index.html 中写入你想展示的网页:
root@pve2:~/docker-compose-nginx# cat html/index.html
<!DOCTYPE html>
<html>
<head><title>Docker Compose Test</title>
</head>
<body><h1> Docker Compose up Nginx!</h1>
</body>
</html>
root@pve2:~/docker-compose-nginx#
六、运行与验证
启动服务
root@pve2:~# cd docker-compose-nginx/
root@pve2:~/docker-compose-nginx# docker-compose up -d
[+] Running 8/8⠿ nginx Pulled 19.0s⠿ 3da95a905ed5 Pull complete 10.2s⠿ 6c8e51cf0087 Pull complete 13.0s⠿ 9bbbd7ee45b7 Pull complete 13.0s⠿ 48670a58a68f Pull complete 13.0s⠿ ce7132063a56 Pull complete 13.1s⠿ 23e05839d684 Pull complete 13.1s⠿ ee95256df030 Pull complete 13.1s
[+] Running 2/2⠿ Network docker-compose-nginx_default Created 0.0s⠿ Container my-nginx Started 0.5s
root@pve2:~/docker-compose-nginx#
查看运行状态
root@pve2:~/docker-compose-nginx# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
my-nginx nginx:latest "/docker-entrypoint.…" nginx 31 seconds ago Up 30 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp
root@pve2:~/docker-compose-nginx#
应看到 my-nginx 容器运行中。
通过浏览器访问或通过curl访问:
root@pve2:~/docker-compose-nginx# curl http://localhost:8080
<!DOCTYPE html>
<html>
<head><title>Docker Compose Test</title>
</head>
<body><h1> Docker Compose up Nginx!</h1>
</body>
</html>
root@pve2:~/docker-compose-nginx#
即可看到网页内容(“成功通过 Docker Compose 启动 Nginx!”)。
七、服务管理命令总结
| 操作 | 命令 |
|---|---|
| 启动容器(后台) | docker compose up -d |
| 查看容器状态 | docker compose ps |
| 查看日志 | docker compose logs |
| 停止并移除容器 | docker compose down |
| 重启服务 | docker compose restart |
八、常见问题及解决方案
| 问题描述 | 解决方案 |
|---|---|
Permission denied | chmod +x 设置权限;或使用 sudo 运行 |
port is already allocated | 检查是否端口冲突,换一个 8080 ➜ 8081 |
| 文件挂载失败 | 确保 html 文件夹存在,路径正确 |
| 服务未启动成功 | 查看 docker compose logs 日志排查原因 |
九、扩展学习方向
-
Docker Compose 配置多服务(如 Nginx + MySQL + PHP)
-
多环境支持(开发、测试、生产)
-
Compose 配合
.env变量配置 -
服务依赖(
depends_on) -
配合 CI/CD 实现自动部署