Compose 是一個工具,用來定義與執行多個 container 組成的 Docker Applications。你可以使用 Compose 檔案來組態設定你的應用服務。然後使用單一命令,透過你的組態設定來建立與啟動你的服務。

    安裝

    適用所有 Linux

    $> sudo -i
    
    #> curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    #> chmod +x /usr/local/bin/docker-compose
    
    #> docker-compose --version
    

    常用指令

    ## 啟動容器服務
    docker-compose up
    docker-compose up -d    #背景模式
    
    ## 終止/結束容器服務
    docker-compose down
    
    ## 開啟容器服務
    docker-compose start
    
    ## 停止容器服務
    docker-compose stop
    
    ## 檢視容器服務狀透
    docker-compose ps
    
    ## 進入指定服務的console
    docker-compose exec <service-name> bash
    

    腳本編寫 docker-compose.yml

    官方教學:https://docs.docker.com/compose/compose-file/

    image
    指定容器的映像檔

    image: redis
    image: ubuntu:14.04
    image: tutum/influxdb
    image: example-registry.com:4000/postgresql
    image: a4bc65fd

    build
    指定要 re-build 的容器檔案目錄,該目錄底下必須有 Dockerfile。

    build: 7.2-fpm-opcache
    

    command
    執行特定指令

    command: bundle exec thin -p 3000
    or    
    command: [bundle, exec, thin, -p, 3000]

    links
    用於連結另一容器服務,如需要使用到另一容器的mysql服務。可以給出服務名和別名;也可以僅給出服務名,這樣別名將和服務名相同。同 docker run --link。

    links:
     - db
     - db:mysql
     - redis

    ports
    開啟主機端與容器的通訊埠對映

    ports:
     - "3000"
     - "8000:8000"
     - "49100:22"
     - "127.0.0.1:8001:8001"

    expose
    提供 container 之間的埠訪問,不會暴露給主機使用。同 docker run --expose。

    expose:
     - "3000"
     - "8000"

    volumes
    掛載主機端與容器的資料卷對映

    volumes:
     - /var/lib/mysql
     - cache/:/tmp/cache
     - ~/configs:/etc/configs/:ro

    volumes_from
    掛載指定容器服務的資料卷

    當需要存取其它容器內的資料卷時,不用再一一重新掛載,而是利用這參數將指定容器的 volumes 都包含進目前容器。
    volumes_from:
     - service_name
     - service_name:ro
     - container:container_name
     - container:container_name:rw
    

    environment
    環境變數的宣告

    environment:
     - MYSQL_ROOT_PASSWORD=ThisIsMyPassword
    

    depends_on

    用於指定服務依賴,一般是mysql、redis等。指定了依賴,將會優先於服務建立並啟動依賴。links 也可以指定依賴。

    version: "3.7"
    services:
      web:
        build: .
        depends_on:
          - db
          - redis
      redis:
        image: redis
      db:
        image: postgres

    external_links
    連結搭配 docker-compose.yml 檔案或者 Compose 之外定義的服務,通常是提供共享或公共服務。格式與links相似:

    注意,external_links連結的服務與當前服務必須是同一個網路環境。
    external_links:
     - redis_1
     - project_db_1:mysql
     - project_db_1:postgresql

    extra_hosts
    新增主機名稱對應

    將會在/etc/hosts建立記錄:
        
    162.242.195.82 somehost
    50.31.209.229  otherhost
    extra_hosts:
     - "somehost:162.242.195.82"
     - "otherhost:50.31.209.229"

    networks
    設定網路。類似 docker network 指令。可以和 servcies 區塊內的 network 搭配使用

    version: '3'
    
    services:
      t1:
        image: tomcat:8.5.11-jre8
        networks:
          - test-net
      t2:
        image: tomcat:8.5.11-jre8
        networks:
          - test-net
    networks:
      test-net:

    dns
    自定義 DNS 伺服器。

    dns: 8.8.8.8
    dns:
     - 8.8.8.8
     - 9.9.9.9
    

    logging
    設定服務的日誌記錄

    logging:
       driver: "json-file"
       options:
          max-size: "1m"
          max-file: "3"
    
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core