【docker】docker-compose技术文档

docker-compose.yml 是 Docker Compose 使用的配置文件,用于定义和运行多容器的 Docker 应用程序。该文件采用 YAML 格式,允许用户指定应用程序所需的服务、网络、卷和其他配置。

下面是一个简单的 docker-compose.yml 文件示例,并解释其中的各个部分:

version: '3'  
services:  
  web:  
    build: .  
    ports:  
      - "5000:5000"  
  db:  
    image: postgres  
  redis:  
    image: redis  
  
volumes:  
  db-data:  
  
networks:  
  default:  
    driver: bridge

版本(version)

version 字段指定了 Compose 文件的版本。这决定了文件中可以使用的配置选项。在上面的例子中,版本是 '3'

服务(services)

services 字段下定义了应用程序中每个容器实例(或称为服务)的配置。每个服务都有自己的名称(例如 web、db、redis)和一组配置选项

服务配置选项

build:       指定 Dockerfile 所在文件夹的路径(相对于 docker-compose.yml 文件的位置)。Docker Compose 会构建这个 Dockerfile 并生成一个镜像。
image:       使用已经存在的 Docker 镜像。
ports:       映射宿主机的端口到容器的端口。格式为 "宿主机端口:容器端口"。
volumes:     挂载卷,用于持久化数据或共享数据。
networks:    指定容器要使用的网络。
environment: 设置环境变量。
command:     覆盖容器启动后默认执行的命令。
depends_on:  定义服务之间的依赖关系,确保服务的启动顺序。

卷(volumes)

volumes 字段用于定义命名卷,这些卷可以在多个服务之间共享,并且可以在容器之间持久化数据

网络(networks)

networks 字段允许用户定义自定义网络,以便服务可以相互通信。在这个例子中,定义了一个默认的 bridge 网络

实例

version: "3"                                        # compose版本,都是3
 
services:                                    # 有几个实例
  microService:                             #名称不冲突就行
    image: zzyy_docker:1.6                    #你拉取的镜像版本 镜像名称:版本号
    container_name: ms01                    #容器的名称
    ports:
      - "6001:6001"                          #端口号(对外映射端口:容器内端口)
    volumes:
      - /app/microService:/data              #容器数据卷路径映射(宿主机路径:容器内路径)
    networks: 
      - atguigu_net                         #网络,名称在下面networks节点
    depends_on:                        #此实例依赖于redis与mysql
      - redis
      - mysql
 
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - atguigu_net
    command: redis-server /etc/redis/redis.conf            #linux命令
 
  mysql:
    image: mysql:5.7
    environment:                                         #设置容器的环境变量
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db2021'
      MYSQL_USER: 'zzyy'
      MYSQL_PASSWORD: 'zzyy123'
    ports:
       - "3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql
       - /app/mysql/conf/my.cnf:/etc/my.cnf
       - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - atguigu_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
 
networks: 
   atguigu_net:              #定义网络:等于是docker network create atguigu_net

Compose常用命令

docker-compose -h  查看帮助
docker-compose up  启动所有docker-compose服务
docker-compose up -d  启动所有docker-compose服务并后台运行
docker-compose down 停止并删除容器、网络、卷、镜像。
docker-compose exec   yml里面的服务id,进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps 展示当前docker-compose编排过的运行的所有容器
docker-compose top 展示当前docker-compose编排过的容器进程
docker-compose logs yml里面的服务id,查看容器输出日志
dokcer-compose config 检查配置
dokcer-compose config -q 检查配置,有问题才有输出
docker-compose restart 重启服务
docker-compose start 启动服务
docker-compose stop 停止服务

相关推荐

  1. 【docker】docker-compose技术文档

    2024-04-12 14:50:02       123 阅读
  2. Docker-compose容器编排技术

    2024-04-12 14:50:02       41 阅读
  3. Spring Boot Docker Compose 支持中文文档

    2024-04-12 14:50:02       53 阅读
  4. nginx的docker-compose文件

    2024-04-12 14:50:02       22 阅读
  5. composables 目录下的文件(web前端)

    2024-04-12 14:50:02       26 阅读
  6. Composer 超简教程(附离线文档

    2024-04-12 14:50:02       38 阅读
  7. Flutter--常用技术文档

    2024-04-12 14:50:02       43 阅读
  8. Lisp解析器技术文档

    2024-04-12 14:50:02       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 14:50:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 14:50:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 14:50:02       87 阅读
  4. Python语言-面向对象

    2024-04-12 14:50:02       96 阅读

热门阅读

  1. 基于springboot的厨艺交流平台源码数据库

    2024-04-12 14:50:02       40 阅读
  2. 随机梯度下降算法

    2024-04-12 14:50:02       43 阅读
  3. Spring Data 2021.2 (Raj)升级说明

    2024-04-12 14:50:02       40 阅读
  4. 面试官:关于int 和 Integer的面试题都在这里了!

    2024-04-12 14:50:02       53 阅读
  5. linux 配置服务开机启动

    2024-04-12 14:50:02       35 阅读
  6. 详解Qt元对象系统

    2024-04-12 14:50:02       40 阅读
  7. 在Windows系统中开启SSH服务

    2024-04-12 14:50:02       42 阅读
  8. home assistant os安装docker

    2024-04-12 14:50:02       38 阅读