【超級賬本】前置知識點-docker compose
阿新 • • 發佈:2018-12-12
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指令執行命令的工作目錄(預設為/目錄)