docker-compose

最近幾個項目中都用到了compose,這裏整理了一下compose的相關信息;
https://docs.docker.com/compose/

功能:
Docker Compose 是Docker容器進行編排的工具,定義和運行多容器的應用,可以一條命令啓動多個容器.
安裝:

curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose    
chmod +x /usr/local/bin/docker-compose
docker-compose -version

常用命令:(需要在docker-compose.yml存在的當前目錄中)

docker-compose up -d    #啓動
docker-compose ps   #查看容器列表
--verbose:輸出詳細信息
-f 制定一個非docker-compose.yml命名的yaml文件
-p 設置一個項目名稱(默認是directory名)

build:構建服務
kill -s SIGINT:給服務發送特定的信號。
logs:輸出日誌
port:輸出綁定的端口
ps:輸出運行的容器
pull:pull服務的p_w_picpath
rm:刪除停止的容器
run: 運行某個服務,例如docker-compose run web python manage.py shell
start:運行某個服務中存在的容器
stop:停止某個服務中存在的容器
restart:重啓相關容器
up:create + run + attach容器到服務
scale:設置服務運行的容器數量。例如:docker-compose scale web=2 worker=3

docker-compose.yml 語法說明
https://docs.docker.com/compose/compose-file/

p_w_picpath :鏡像id
build:直接從pwd的Dockerfile來build,而非通過p_w_picpath選項來pull
container_name:容器名稱
restart: always 重啓
links:連接到那些容器,該yaml文件中的容器,會將相關信息存放在/etc/hosts
external_links:連接到該compose.yaml文件之外的容器中,同links
depends_on:依賴關係說明
command:執行command命令
ports:導出端口,如:ports:-"3000"-"8000:8000"-"127.0.0.1:8001:8001"
expose:導出端口,但不映射到宿主機的端口上。它僅對links的容器開放
volumes:加載路徑作爲卷,可以指定只讀模式
volumes_from:加載其他容器或者服務的所有卷
env_file:從一個文件中導入環境變量,文件的格式爲RACK_ENV=development
environment:設置環境變量的值
extends:擴展另一個服務,可以覆蓋其中的一些選項
net:容器的網絡模式,可以爲”bridge”, “none”, “container:[name or id]”, “host”中的一個
dns:可以設置一個或多個自定義的DNS地址
dns_search:dns搜索的域名
logging:日誌配置

這裏以harbor項目的docker-compose.yml中的部分內容來作說明;
github地址:https://github.com/vmware/harbor

version: '2'    #指定compose版本
services:
  log:    #服務名稱
    p_w_picpath: vmware/harbor-log    #指定鏡像名稱
    container_name: harbor-log  #啓動後的容器名稱
    restart: always    #down掉自動重啓
    volumes:    #宿主機和容器關聯的目錄
      - /var/log/harbor/:/var/log/docker/
    ports:    #映射出來的端口
      - 1514:514
  registry:
    p_w_picpath: library/registry:2.5.0
    container_name: registry
    restart: always
    volumes:
      - /data/registry:/storage
      - ./common/config/registry/:/etc/registry/
    environment:    #設置環境變量
      - GODEBUG=netdns=cgo
    command:    #容器內執行命令
      ["serve", "/etc/registry/config.yml"]
    depends_on:    #依賴關係
      - log
    logging:    #日誌設置
      driver: "syslog"    #指定日誌設備的容器
      options:  
        syslog-address: "tcp://127.0.0.1:1514" #日誌連接地址
        tag: "registry"    #日誌標籤
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章