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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM