Docker Compose编排(写法格式及实验)

本文介绍了Docker Compose,它的前身是Fig,是用于定义和运行多容器Docker应用的工具。阐述了其文件结构、配置常用字段和常用命令。还详细说明了使用compose编排安装运行及创建tomcat容器的步骤,包括环境部署、编写yml文件等。

一、Docker Compose前言

  • Docker Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig
  • Docker Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器,而不再需要使用shell脚本来启动容器
  • Docker Compose 非常适合组合使用多个容器进行开发的场景

二、Docker compose 的文件结构

YAML是一种标记语言很直观的数据序列化格式。

  • 文件格式及编写注意事项如下所示:
  • 不支持制表符Tab建缩进,需要使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如:冒号,逗号,横杆。
  • 用#号注释
  • 如果包含特殊字符用单引号引起来。
  • 布尔值必须用单引号括起来

1、docker compose配置常用字段

字段描述
build docker context指定Dockerfile文件名构建镜像上下文路径
image指定镜像
command执行命令,覆盖默认命令
container name指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
environment添加环境变量
networks加入网络
ports暴露容器端口,与-p相同,但不能低于60
volumes挂载宿主机路径或命令卷
restart重启策略,默认no,always,no-failure,unless-stoped
hostname容器主机名

2、docker compose常用命令

字段描述
build重新构建服务
ps列出容器
up创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务

三、使用compose编排

1、使用compose编排 安装运行tomcat容器

环境部署所有主机安装docker环境(内容为docker基础)

yum install docker-ce -y

在这里插入图片描述

将compose包直接拖入

cp -p docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose

在这里插入图片描述
在这里插入图片描述

2、使用compose编排创建容器(以tomcat为例)

编写yml文件

vim tomcat-compose.yml

version: '3'
services:
 tomcat:
  hostname: tomcat
  build :
   context: ./tomcat
   dockerfile: Dockerfile
  ports:
   - 6677:8080
  networks:
   - cluster
networks:
 cluster:

在这里插入图片描述

放入相关文件
在这里插入图片描述
在这里插入图片描述

编写的Dockerfile

在这里插入图片描述

执行yml文件创建容器

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

在这里插入图片描述
在这里插入图片描述
直接访问网页
在这里插入图片描述

<think>嗯,用户想了解Docker Compose的YAML格式相关知识。从引用内容看,用户已经接触过Docker Compose的基本概念和部分配置示例,但需要系统性的格式规范说明。用户可能是开发者或运维人员,正在学习容器编排技术。 用户提供的三个引用很有价值:[1]说明Compose的核心作用,[2]展示多文件加载命令,[3]给出网络配置的完整样例。这些恰好覆盖了YAML配置的三个关键维度:基础结构、操作方式和高级网络配置。用户没有明确说使用场景,但特意提到“格式介绍”,说明需要从语法层面理解编写规则。 考虑到用户上次询问过Compose基础,这次应该侧重语法细节。需要突出几个重点:1) 版本号对新特性的影响 2) 服务定义的层次结构 3) 网络/卷等资源声明方式。特别要注意引用[3]演示的IPAM配置,这是高级网络场景的刚需。 在组织回答时,准备按配置文件层级展开:版本声明 → 服务定义 → 资源管理。关键语法点包括缩进规则、环境变量写法、端口映射简写等。引用[2]的-f参数示例正好用于说明多文件配置场景,可以包含在功能扩展部分。对于网络配置,会引用[3]的子网案例,但要强调gateway字段是可选的。 用户可能后续会问健康检查、依赖顺序等进阶配置,所以最后的问题设计为渐进式的:从调试命令到多环境管理,覆盖操作到架构层面。特别加入“端口冲突处理”这个实用问题,因为这是compose up失败的常见原因。 </think>以下是 Docker Compose YAML 文件格式的详细介绍,结合关键规范和示例说明: --- ### **一、核心结构** Docker Compose YAML 文件通常包含以下顶层配置项: ```yaml version: '3.8' # 指定语法版本(必填) services: # 定义容器服务(核心部分) networks: # 自定义网络配置 volumes: # 持久化存储配置 configs: # 配置文件管理(Swarm模式) secrets: # 敏感数据管理 ``` --- ### **二、`services` 服务定义详解** 每个服务对应一个容器,常用配置如下: 1. **基础配置** ```yaml webapp: image: nginx:1.18.0 # 指定镜像 container_name: my_nginx # 自定义容器名(避免随机命名) restart: always # 重启策略(always/on-failure) ``` 2. **端口映射** 格式:`宿主端口:容器端口` ```yaml ports: - "8080:80" # 映射宿主机8080到容器80端口 - "443:443" # HTTPS端口映射 ``` 3. **数据卷挂载** 格式:`宿主机路径:容器路径:读写模式` ```yaml volumes: - ./app:/var/www/html # 挂载当前目录到容器 - db_data:/var/lib/mysql # 使用命名卷 ``` 4. **环境变量** ```yaml environment: - MYSQL_ROOT_PASSWORD=secret - DEBUG=1 ``` 或从文件加载: ```yaml env_file: .env # 加载同目录.env文件 ``` 5. **依赖关系** ```yaml depends_on: - db # 先启动db服务再启动当前服务 - redis ``` --- ### **三、`networks` 网络配置** [^3] 自定义网络支持服务间隔离通信: ```yaml networks: backend: # 网络名称 driver: bridge # 驱动类型(默认bridge) ipam: config: - subnet: "172.19.0.0/24" # 指定子网 gateway: "172.19.0.1" # 网关 services: nginx: networks: backend: ipv4_address: 172.19.0.100 # 固定IP(可选) ``` --- ### **四、`volumes` 存储卷配置** 持久化数据管理: ```yaml volumes: db_data: # 声明命名卷 driver: local # 存储驱动 driver_opts: type: nfs # 支持NFS等 o: addr=192.168.1.1,rw ``` --- ### **五、扩展功能** 1. **多文件加载** [^2] 组合多个配置文件: ```bash docker compose -f docker-compose.yml -f docker-compose.prod.yml up ``` 2. **变量替换** 使用环境变量动态配置: ```yaml services: app: image: ${IMAGE_TAG:-latest} # 默认值设置 ``` 3. **资源限制** ```yaml deploy: # 单机/集群均适用 resources: limits: cpus: '0.5' memory: 512M ``` --- ### **六、完整示例** ```yaml version: '3.8' services: web: image: nginx:alpine ports: ["80:80"] volumes: ["./html:/usr/share/nginx/html"] db: image: postgres:13 environment: POSTGRES_PASSWORD: example volumes: [pgdata:/var/lib/postgresql/data] volumes: pgdata: ``` --- **
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值