当前位置: 首页 > news >正文

Docker Compose入门(2)

接前一篇文章:Docker Compose入门(1)

 

本文内容参考:

Docker Compose(容器编排)-CSDN博客

Docker Docker-Compose Dockerfile基本使用教程_docker-compose dockerfile-CSDN博客

dockerFile和docker-compose.yml_dockerfile 和 yaml-CSDN博客

Docker Compose完整教程-CSDN博客

特此致谢!

 

二、Docker Compose文件(docker-compose.yml)

1. 语法

(1)YAML简介

YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化标准。其基本语法规则如下:

  • 缩进表示层级关系
# 正确的缩进(使用空格,不要用Tab)
services:web:image: nginxports:- "80:80"# 错误的缩进
services:
web:image: nginxports:- "80:80"
  • 冒号后必须有空格
# 正确
key: value# 错误
key:value
  • 列表的表示
# 列表语法
fruits:- apple- banana- orange# 或者内联形式
fruits: [apple, banana, orange]
  • 字符串可以有引号或无引号

# 这些都是有效的
name: John
name: "John"
name: 'John'# 特殊字符需要引号
message: "Hello: World"
path: "C:\\Users\\Name"
  • 布尔值和数字
# 布尔值
enabled: true
disabled: false# 数字
port: 8080
pi: 3.14

(2)语法版本

目前官方支持三个大版本, 即Version 1、Version 2和Version 3。其中,Version 1已经被废弃掉了。当前最新的版本是3.8,它支持的Docker Engine版本不得低于19.03.0。

(3)YAML在Docker Compose中的应用

version: '3.8'           # 版本号
services:                # 服务定义service1:             # 服务1配置service2:# 服务2配置
volumes:                 # 数据卷定义volume1:
networks:                # 网络定义network1:

2. docker-compose.yml文件详解

(1)文件结构概览

version: '3.8'                    # Compose文件格式版本services:                         # 定义服务web:                           # 服务名称# 服务配置db:# 数据库配置volumes:                          # 定义数据卷data:                          # 数据卷名称networks:                         # 定义网络frontend:                      # 网络名称backend:configs:                          # 定义配置文件(可选)
secrets:                          # 定义敏感数据(可选)
version: "3.8" # 定义版本, 表示当前使用的 docker-compose 语法的版本
services: # 服务,可以存在多个servicename: # 服务名字,它也是内部 bridge 网络可以使用的 DNS name,如果不是集群模式相当于 docker run 的时候指定的一个名称image: # 必选,镜像的名字command: # 可选,如果设置,则会覆盖默认镜像里的 CMD 命令environment: # 可选,等价于 docker container run 里的 --env 选项设置环境变量volumes: # 可选,等价于 docker container run 里的 -v 选项绑定数据卷networks: # 可选,等价于 docker container run 里的 --network 选项指定网络ports: # 可选,等价于 docker container run 里的 -p 选项指定端口映射expose: # 可选,指定容器暴露的端口build: #构建目录depends_on: #服务依赖配置env_file: #环境变量文件servicename2:image:command:networks:ports:servicename3:#...
networks:  # 定义网络my-network:driver: bridgevolumes:   # 定义数据卷db-data:external: true

(2)关键层级说明

  • version

指定Compose文件语法版本(如3.8),不同版本支持的功能不同。

  • services

定义各个容器服务,每个服务对应一个容器或一组容器。

  • image

指定服务使用的镜像,可以是本地镜像或远程仓库镜像,建议避免使用latest标签,以免版本不一致导致问题。

  • volumes

定义数据卷,用于持久化存储。

  • networks

自定义容器间通信的网络(如bridge、overlay)。

  • command

覆盖容器启动的默认命令。

  • environment  & env_file

添加环境变量。可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保YAML解析器不会将其转换为True或False。从文件读取变量优先级低于enviroment。

  • ports

指定端口映射。

  • build

用于基于Dockerfile构建镜像,支持指定构建上下文、Dockerfile文件名及构建参数。

  • depends_on

设置依赖关系,定义服务启动顺序。

 

更多内容请看下回。

 

http://www.dtcms.com/a/309975.html

相关文章:

  • QD9361开发板教程:基于MIG IP的PL端DDR3测试
  • Manus Wide Research:重新定义AI多智能体并发处理的技术革命
  • windows内核研究(软件调试-调试事件的处理)
  • 无图形界面的CentOS 7网络如何配置
  • 大模型结构比较
  • QT中字符串加tr u8的意思
  • Flink Checkpoint机制:大数据流处理的坚固护盾
  • mongodb中的哈希索引详解
  • Windows11 WSL安装Ubntu22.04,交叉编译C语言应用程序
  • Java集合框架:LinkedList
  • 【Jetson orin-nx】使用Tensorrt并发推理四个Yolo模型 (python版)
  • tensorflow目标分类:分绍(二)
  • 树莓派硬件介绍
  • 提示+掩膜+注意力=Mamba三连击,跨模态任务全面超越
  • 安检机危险品识别准确率↑23.7%:陌讯多模态融合算法实战解析
  • Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
  • 神经网络的基础
  • 工业级蓝光三维扫描仪:汽车零部件高精度检测的利器
  • 研华PCI-1622C 使用RS-422通讯1主多从通讯中断
  • 【QT开发手册】对象模型(对象树) 窗⼝坐标体系
  • EXE加密软件(EXE一机一码加密大师) 最新版1.6.0更新 (附2025最新版本CSDN下载地址)
  • windows mamba-ssm环境配置指南
  • 网络层协议IP
  • 运维端口管理闭环:从暴露面测绘到自动化封禁!
  • 【AI问答记录】grafana接收query请求中未携带step参数,后端基于intervalMs和maxDataPoints等参数计算step的逻辑
  • AcWing 897:最长公共子序列 ← 子序列问题(n≤1e3)
  • “数据管理” 一场高风险的游戏
  • 民航领域数据分类分级怎么做?|《民航领域数据分类分级要求》标准解读
  • 第13届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年3月13日真题
  • ip去重小脚本