DockerCompose|Docker容器【九】

admin 2026-03-05 19:43:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文讲解了DockerCompose的基础用法,说明其如何通过配置文件简化多容器应用的管理流程。内容涵盖安装方法、配置文件编写要点及服务、网络、数据卷的定义示例。文章还列举了常用命令与配置参数,具有较强实操性,末尾包含安全培训招聘广告。 综合评分: 75 文章分类: 安全工具,实战经验,安全建设


cover_image

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容器【九】》

评论:0   参与:  0