最近幾個項目中都用到了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" #日誌標籤