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