25.docker compose 简介 和 docker-compose.yml 参数介绍

1. docker compose概念  文档  https://docs.docker.com/compose/compose-file/compose-versioning

  一个基于 docker 的工具

  可以通过一个 yml 文件定义多容器的 docker 应用

  通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器

2 docker compose 版本 2 与 版本 3 的区别

  最大的区别

    version 2 只能用于单机

    version 3 可用于多机

3. docker-compose.yml

  

    Services

      一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建

      service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用

      eg :

      docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier  postgres:9.4

      services:

        db:                #service 的名称为 db

          image: postgres:9.4      #service image 为 postgres:9.4  这是从远程拉取的

          volumes:

            - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

          networks:

            - back-tier        #网络为 back-tier

      eg2:

      docker run -d --link db --link redis --network back-tier  worker

      services:

        worker:

          build: ./worker

          links:

            - db

            - redis

          networks:

            - back-tier        #在同一个网络上 不需要links

    Volumes:

      上面 的

      volumes:

       - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

      会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述

      类似于 docker volume create db-data

      eg:

      volumes:

        db-data:

    Nerworks:

      上面 的

      networks:

        - back-tier        #在同一个网络上 不需要links

      会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述

      类似于  docker nerwork create -d bridge back-tier

      networks:

        front-tier:

          driver: bridge

        back-tier:

          driver: bridge

4编写 docker-compose.yml

# docker compose api 版本

version: '3'

 

services:

# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql

  wordpress:

#image 为 word press

    image: wordpress

#本地 8888 端口 映射 容器 80 端口

    ports:

      - 8888:80

#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e

    environment:

      WORDPRESS_DB_HOST: mysql

      WORDPRESS_DB_PASSWORD: root

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

  mysql:

    image: mysql:5.7.27

# 数据库 root 的 连接密码 和 所使用的数据库名称

    environment:

      MYSQL_ROOT_PASSWORD: root

      MYSQL_DATABASE: wordpress

# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql

    volumes:

      - mysql-data:/var/lib/mysql

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

# 定义 volumes

volumes:

  mysql-data:

 

# 定义 networks

networks:

  my-bridge:

    driver: bridge

 

posted @ 2019-08-16 11:39  zonehoo  阅读(1387)  评论(0编辑  收藏  举报