1. 程式人生 > >【超級賬本】前置知識點-docker compose

【超級賬本】前置知識點-docker compose

Dock Compose 概述

Docker Compose 是一個工具用於定義構建存在多個docker 容器的應用,理解應該類似與kubernetes。在docker compose裡採用yaml檔案定義應用。主要的原語如下:

image

定義映象名稱或映象ID

image: hyperledger/fabric-ca
build

定義dockfile指定的位置,即基於DockFile構建映象

build: .

備註:這裡並不一定要指定DockFile檔案,指定目錄也可以。

command

定義容器啟動後預設的執行命令

command: sh -c 'fabric-ca-server start'
links

定義連結到其他容器的服務(由docker compose管理),應類似與DNS配置,實際修改/etc/hosts檔案

links:
    - zookeeper0:zookeeper0
    - zookeeper1:zookeeper1
    - zookeeper2:zookeeper2

這裡的zookeeper0也是dock compose裡配置的一個容器,則在其他配置裡不採用具體ip地址,而使用zoopkeeper0這個別名。

external_links

定義連結到 docker-compose.yml 外部的容器,甚至 並非 Compose 管理的容器。

external_links:
    - redis_1
ports

定義容器暴露的埠(HOST:CONTAINER)

ports:
    - "7054:7054"

備註:這裡暴露的埠會對映的主機,即容器的7054埠對映到宿主機的7054埠

expose

定義容器暴露的埠,不對映到主機

expose:
    - "3000"
    - "8000"
volumes

定義掛載卷的路徑,設定宿主機路徑 (HOST:CONTAINER) 或加上訪問模式 (HOST:CONTAINER:ro)

volumes:
    - /var/run/:/host/var/run/
    - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go

備註:上述把宿主機的…/chaincode/go掛載到docker容器的/opt/gopath/…這個目錄下,相當於載入鏈碼。

volumes_from

定義掛載另外一個伺服器所有卷

volumes_from:
    - service_name
    - container_name
environment

設定環境變數

environment:
    - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
    - FABRIC_CA_SERVER_CA_NAME=ca-org2
    - FABRIC_CA_SERVER_TLS_ENABLED=true
env_file

從檔案中獲取環境變數

env_file:
    - ./common.env
extends

對已有的映象定義進行擴充套件

zookeeper0:
    container_name: zookeeper0
    extends:
      file: base/docker-compose-base.yaml
      service: zookeeper
net

設定網路模式,同docker命令中的net欄位。

net: "bridge"
depends_on

描述容器啟動時的依賴關係

kafka1:
    container_name: kafka1
    extends:
      file: base/docker-compose-base.yaml
      service: kafka
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_MIN_INSYNC_REPLICAS=2
      - KAFKA_DEFAULT_REPLICATION_FACTOR=3
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
    depends_on:
      - zookeeper0
working_dir

應等價於docker run中的“workdir”引數,用於設定Dockerfile中的RUN、CMD和ENTRYPOINT指令執行命令的工作目錄(預設為/目錄)