文章总结: 本文讲解了DockerCompose的基础用法,说明其如何通过配置文件简化多容器应用的管理流程。内容涵盖安装方法、配置文件编写要点及服务、网络、数据卷的定义示例。文章还列举了常用命令与配置参数,具有较强实操性,末尾包含安全培训招聘广告。 综合评分: 75 文章分类: 安全工具,实战经验,安全建设
Docker Compose | Docker容器【九】
原创
北京昊网 北京昊网
北京昊网CTF题解
2026年3月5日 15:52 北京
关注北京昊网公众号,与大家共话网络安全。
九、Docker Compose
为什么需要 Docker Compose?
假设你要部署一个 Web 应用,需要两个容器:
-
Nginx(Web 服务)
-
MySQL(数据库)
-
如果不用 Compose,你得手动做这些事:
-
先创建网络(让两个容器能通信)
-
再创建数据卷(持久化 MySQL 数据)
-
然后分别跑 docker run 启动两个容器,还要指定网络、挂载卷、设置环境变量
-
停止时又要分别 docker stop、docker rm
而用 Docker Compose,只需要:
- 写一个 docker-compose.yml 文件,把所有容器、网络、卷的配置都写进去
- 执行 docker-compose up 一键启动所有服务
- 执行 docker-compose down 一键停止并清理所有资源
- 简单说:Compose 的核心是用一个文件定义整个应用栈,用一条命令管理生命周期;
9.1、Docker Compose 安装
1、核心组成
docker-compose.yml:核心配置文件,用 YAML 语法定义 “服务(容器)、网络、数据卷”;
docker-compose命令行工具:用来执行配置文件(启动、停止、查看日志等);
2、安装
安装 Docker Compose,核心是把 docker-compose 程序放到 /usr/local/bin/ 目录(系统能找到的命令路径),并赋予执行权限# 下载指定版本(以v2.24.6为例,可替换为最新版本)curl -L "https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# 赋予执行权限chmod +x /usr/local/bin/docker-compose
验证docker-compose --version
或者传这个 docker-compose;
暂时无法在飞书文档外展示此内容
9.2、编写 Compose 配置文件(关键)
创建目录(规范文件存放)mkdir docker-registry && cd docker-registry作用:创建一个专门的目录 docker-registry,把私有仓库的配置文件放在这里,避免文件混乱;
编写 docker-compose.yml 文件vim docker-compose.yml
version: '3.8' 指定 Compose 文件版本(要和 Docker 版本匹配,3.8 是较新且稳定的)services: # 2. 定义所有“服务”(每个服务对应一个容器) 服务1: 配置项... 服务2: 配置项...networks: # 3. 定义自定义网络(可选,默认会创建一个默认网络) 网络名: 配置项...volumes: # 4. 定义自定义数据卷(可选,默认会创建匿名卷) 卷名: 配置项...
version: '3.8' Compose 版本,3.x 系列兼容大部分 Docker 版本services: # 开始定义服务(容器) web: # 第一个服务:名叫“web”(对应 Nginx 容器,名字自定义) image: nginx:latest # 该服务使用的镜像(和 docker run 后的镜像名一致) ports: # 端口映射(和 docker run -p 一致) - "80:80" # 宿主机 80 端口 → 容器 80 端口(格式:宿主机端口:容器端口) volumes: # 挂载卷/目录(和 docker run -v 一致) - ./html:/usr/share/nginx/html # 宿主机当前目录下的 html 文件夹 → 容器内 Nginx 网页目录 # 作用:本地改 ./html 里的 index.html,容器内 Nginx 能实时生效,不用进容器改 networks: # 该服务加入的网络(对应下面定义的 my-network) - my-network # 让 web 服务和 db 服务在同一个网络里,能互相通信 db: # 第二个服务:名叫“db”(对应 MySQL 容器) image: mysql:5.7 # 使用 MySQL 5.7 镜像(避免新版本兼容性问题) environment: # 设置环境变量(和 docker run -e 一致) MYSQL_ROOT_PASSWORD: my-secret-pw # 必须设置!MySQL root 用户的密码 volumes: # 挂载数据卷(持久化 MySQL 数据) - db-data:/var/lib/mysql # 用下面定义的“db-data”卷 → 容器内 MySQL 数据目录 # 作用:删除 db 容器后,数据还在 db-data 卷里,重启容器数据不丢 networks: # 加入同一个网络,让 web 服务能访问 db 服务 - my-network# 定义自定义网络networks: my-network: # 网络名叫“my-network” driver: bridge # 网络驱动类型(默认就是 bridge,和 Docker 默认网络类型一致) # 作用:让 web 和 db 两个服务在这个网络里,能通过“服务名”互相访问(比如 web 容器用“db”当域名访问 MySQL)# 定义自定义数据卷volumes: db-data: # 卷名叫“db-data”(不需要额外配置,默认存在宿主机 /var/lib/docker/volumes/ 下) # 作用:专门存 MySQL 数据,实现数据持久化
version: '3.8'services: web: image: nginx:latest ports: - "80:80" volumes: - ./html:/usr/share/nginx/html networks: - my-network db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: my-secret-pw volumes: - db-data:/var/lib/mysql networks: - my-networknetworks: my-network: driver: bridge volumes: db-data:
常用核心配置项(必记)
| | | | | — | — | — | | 配置项 | 作用 | 示例 | | image | 指定服务使用的镜像 | image: nginx:latest | | ports | 端口映射(宿主机:容器) | – “8080:80” | | volumes | 挂载卷 / 目录(宿主机路径:容器路径) | – ./html:/usr/share/nginx/html 或 – db-data:/var/lib/mysql | | environment | 设置环境变量(键值对) | MYSQL_ROOT_PASSWORD: 123456 | | networks | 指定服务加入的网络 | – my-network |
5、Docker Compose 常用命令
所有命令都要在 docker-compose.yml 文件所在的目录下执行;
| | |
| — | — |
| 命令 | 作用 |
| docker-compose up | 启动所有服务(前台运行,终端关闭则停止) |
| docker-compose up -d | 后台启动所有服务(推荐) |
| docker-compose ps | 查看所有服务的运行状态 |
| docker-compose logs | 查看所有服务的日志 |
| docker-compose logs -f 服务名 | 实时跟踪某个服务的日志 |
| docker-compose stop | 停止所有服务(容器不删除) |
| docker-compose down | 停止并删除所有服务、网络(卷不删) |
| docker-compose down -v | 停止并删除所有服务、网络、卷 |
| docker-compose restart | 重启所有服务 |
docker-compose up 注意 80 端口别被占用docker-compose ps
docker-compose 已经成功运行了,前台运行,终端关闭则停止;
| | | | |
| — | — | — | — |
| |
|
|
|
学网安,找北京昊网,就业有保障,带你冲刺10-40万年薪!
招生要求:
| | | | — | — | | 学历与年龄 | 30岁以下大学本科毕业生(条件优秀可放宽到专科) | | 能力 | 具备基本逻辑思维能力,可耐心排查问题,接受“终身学习“的行业属性 | | 目标 | 明确想从事网络安全相关岗位(如安全运维、渗透测试、安全服 务等 | | 健康 | 身心健康 |
适合人群:
| | | — | | 零基础,转行一族 | | 高校应往届与在校生 | | IT职场转型者 |
北京昊网科技网络安全工程师培训,前沿技能教学 + 项目实训 + 就业全流程服务,从技能打磨到岗位对接一站式赋能。
咨询对接:黎歌|18500324210(同微信)
签约《就业保障服务协议》,未达成协议内就业标准,全额退费。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:北京昊网CTF题解 北京昊网 北京昊网《Docker Compose | Docker容器【九】》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论