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

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.xdnf.cn/news/16906.html

相关文章:

  • Linux系统编程Day3-- Linux常用操作(续)
  • 报错[Vue warn]: Failed to resolve directive: else如何解决?
  • 7.苹果ios逆向-目录结构
  • 数据结构——查找(一、什么是查找?)
  • 机器学习sklearn:随机森林的决策树
  • windows电脑开机或重启,server不能自启动
  • 高压大电流与低压大电流电源的设计难点
  • 「源力觉醒 创作者计划」破局与重构:文心大模型开源的产业变革密码
  • 【C语言学习】scanf函数
  • 逻辑回归算法基础介绍,简单的二分类三分类实例
  • React的介绍和特点
  • sqli-labs靶场Less24
  • 【Linux】的起源 and 3秒学习11个基本指令
  • 20250731解决RK3588的AIOT参考设计刷机之后可以启动但是断电进MASKROM模式
  • YOLOv13 汉化优化部署版本:超图增强自适应视觉感知的目标检测系统
  • JVM之【Java虚拟机概述】
  • 数据库学习------数据库事务的特性
  • Docker 初学者需要了解的几个知识点 (六):docker-compose.yml (ThinkPHP)
  • 【机器学习篇】01day.python机器学习篇Scikit-learn入门
  • 【LY88】ubuntu下的常用操作
  • 实现一键将仓库推送到Github和Gitee!!!
  • Mockito:Java单元测试Mock框架
  • 淘宝 API HTTP/2 多路复用与连接优化实践:提升商品数据采集吞吐量
  • 模型训练速度慢排查
  • 蚂蚁财富招Java高级研发
  • C语言指针(三):数组传参本质、冒泡排序与二级指针详解
  • 熵感知金字塔生成理论(Entropy-Aware Pyramid Generation, EAPG)
  • 机器学习03——数据与算法初步2
  • vue 开发总结:从安装到第一个交互页面-与数据库API
  • 【普中STM32精灵开发攻略】--第 2 章 开发板功能及使用介绍