docker-compose-语法使用安装说明

首先安装docker

关闭防火墙

  systemctl stop firewalld

yum安装依赖

  yum install -y yum-utils device-mapper-persistent-data lvm2

下载docker-ce.repo源

  wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

安装docker

  yum install -y docker-ce docker-ce-cli containerd.io

启动

  systemctl start docker.service

  systemctl enable docker.service

编辑/etc/docker/daemon.json

tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": [

"http://hub-mirror.c.163.com",

"https://mirrors.tuna.tsinghua.edu.cn",

"http://mirrors.sohu.com",

"https://ustc-edu-cn.mirror.aliyuncs.com",

"https://ccr.ccs.tencentyun.com",

"https://docker.m.daocloud.io",

"https://docker.awsl9527.cn"

]

}

EOF

重启docker

  systemctl restart docker.service

然后安装docker-compose

  sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

设置权限

  sudo chmod +x /usr/local/bin/docker-compose 查看版本 docker-compose -version 启动 docker-compose start -d或者docker-compose up -d

如果你想利用docker-compose安装mysql等内容 你需要了解语法规则

docker-compose.yml 配置文件语法

注意:如果在compose中配置nework请注意几个参数,默认配置network bridge的时候执行compose会自动创建

如果有已存容器内网络,需要增加参数,具体如下

网络优先于容器

Docker Compose 会自动处理依赖关系,但需显式声明网络。网络必须在容器启动前存在(Compose 会自动创建网络,若需使用外部网络则需提前创建)

networks: # 顶层网络声明

my-bridge:

driver: bridge # 指定桥接驱动

name: my-custom-bridge # 可选:自定义网络名称(否则自动生成)

attachable: true # 允许其他容器后期加入

  1. 启动顺序逻辑

Compose 自动处理顺序:

运行 docker-compose up 时,Compose 按以下顺序执行:

创建网络(如 my-bridge)

启动容器(web 和 db 同时加入该网络)

验证顺序:

查看网络和容器状态:

docker network ls | grep my-custom-bridge # 网络已存在

docker inspect my-container-id | grep NetworkMode # 容器使用该网络

关键场景处理

场景1:依赖外部预创建网络

若需使用已存在的桥接网络(非 Compose 自动创建):

networks:

external-bridge:

external: true # 声明外部网络

name: existing-bridge # 必须与已存在网络名称一致

docker-compose配置文件

version:'3.8' #指定compose版本

services: #服务

  web: #服务名称

    image: nginx:latest #使用docker hub上的nginx镜像

    ports:- "80:80" #将容器的80端口映射到宿主机的80端口上

    volumes:

      - ./html:/usr/share/nginx/html #挂载宿主机 html目录到容器的/usr/share/nginx/html

    network:

      - mynet1 #使用自定义网络桥接网络

    depends_on:

      - db  #web 依赖于db服务

  db: #服务名称

    image: mysql:latest #使用docker hub上的mysql镜像

    environment:

      POSTGRES_PASSWORD: 123456 #设置环境变量 可以多设置

    volume:

      - db-data: /var/lib/mysql/data #挂载数据卷

    network:

      - mynet1 #使用自定义网络mynet1

    restart: always #容器异常总重启

#---------------------------------------以下为全局变量设置

volumes

  db-data: #定义数据卷 db-data

networks:

  mynet1 #自定义网络mynet1

    driver: bridge # 使用bridge驱动

version:指定 Compose 文件格式的版本,确保与你的 Docker Compose 版本兼容。

services:每个服务都定义了一个容器,可以包含镜像、端口映射、卷挂载、网络配置、环境变量等。

ports:将容器端口映射到宿主机的端口。格式为 "宿主端口:容器端口"。

volumes:挂载卷到容器,可以是宿主机路径或命名卷。格式为 "宿主机路径:容器路径" 或 "卷名:容器路径"。

networks:定义容器间的网络,可以是自定义网络或使用默认的网络。

depends_on:指定服务间的依赖关系,确保依赖的服务先启动。

environment:设置环境变量。

restart:设置容器的重启策略,如 always 表示在退出时总是重启容器。

volumes 和 networks 部分在顶层定义全局卷和网络,也可以在服务内部单独定义。

通过这样的配置文件,你可以轻松地启动和管理多容器的 Docker 应用程序。

其他具体案例

docker-compose命令

相关推荐
CableTech_SQH5 分钟前
行业运维新标杆:百盛3D全场景运维系统
运维·数据库·信息与通信·综合布线
程序猿老A27 分钟前
云服务器ECS怎么配置多IP?
运维·服务器·tcp/ip
灯澜忆梦40 分钟前
【Docker】#5 | 网络配置
网络·docker·容器
Canmag 兴隆磁性1 小时前
磁材包装产线自动化实践:自动定量装袋设备的原理、结构与选型思路
运维·自动化·永磁材料·包装
IDCPDU1 小时前
PDU 采集断网就丢数据?加一层本地缓存和补传逻辑
运维
云飞云共享云桌面1 小时前
钣金精密机械工厂:多工程师共享图形服务器,SolidWorks/UG 三维设计兼顾成本与数据安全
运维·服务器·人工智能·自动化·制造
刘胡子大叔1 小时前
docker build 跑了 92 分钟还是失败了
docker·容器
她说可以呀2 小时前
Docker 镜像的两种创建方式
java·分布式·docker
行者-全栈开发2 小时前
【容器/虚拟化】CVE-2026-53359:Linux KVM Januscape 虚拟机逃逸漏洞修复指南(潜伏16年的云安全噩梦)
linux·运维·服务器·多租户隔离·cve-2026-53359·kvm虚拟机逃逸·shadow mmu
虎头金猫2 小时前
从上传PPT到观众远程打开互动页面:Claper在CentOS 7上的Docker部署、互动组件设置与固定访问地址实战
linux·运维·网络·人工智能·docker·centos·powerpoint