docker-compose logs -f ##查看該容器的啟動的日誌列印(日誌從頭列印 docker logs -f container_id ##查看某一容器的啟動的日誌列印(日誌從頭列印) docker logs -f --tail(-t) 數量詞 container_id ##查看某一容器 ...
docker-compose logs -f ##查看該容器的啟動的日誌列印(日誌從頭列印
docker logs -f container_id ##查看某一容器的啟動的日誌列印(日誌從頭列印)
docker logs -f --tail(-t) 數量詞 container_id ##查看某一容器的啟動的日誌列印(查看最後n條日誌列印)
Compose 模板文件
模板文件是使用 Compose 的核心,涉及到的指令關鍵字也比較多。但大家不用擔心,這裡面大部分指令跟 docker run 相關參數的含義都是類似的。
預設的模板文件名稱為 docker-compose.yml ,格式為 YAML 格式。
下麵分別介紹各個指令的用法:
build
指定 Dockerfile 所在文件夾的路徑(可以是絕對路徑,或者相對 dockercompose.yml 文件的路徑)。
Compose 將會利用它自動構建這個鏡像,然後使用這個鏡像。
build: /path/to/build/dir
image
指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試拉去這個鏡像。
image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
labels
為容器添加 Docker 元數據(metadata)信息。例如可以為容器添加輔助說明信息。
labels:
com.startupteam.description: "webapp for a startup team"
com.startupteam.department: "devops department"
com.startupteam.release: "rc3 for v1.0"
links
鏈接到其它服務中的容器。使用服務名稱(同時作為別名)或 服務名稱:服務別名(SERVICE:ALIAS) 格式都可以。
links:
- db
- db:database
- redis
###使用的別名將會自動在服務容器中的 /etc/hosts 里創建。
例如:
172.17.2.186 db
172.17.2.186 database
172.17.2.187 redis
net
設置網路模式。和docker client的-net參數相同
net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"
cap_add, cap_drop
指定容器的內核能力(capacity)分配。
##例如
讓容器擁有所有能力可以指定為:
cap_add:- ALL
去掉 NET_ADMIN 能力可以指定為:
cap_drop:- NET_ADMIN
command
覆蓋容器啟動後預設執行的命令。
command: echo "hello world"
container_name
指定容器名稱。預設將會使用 項目名稱_服務名稱_序號 這樣的格式。
container_name: docker-web-container
註意:指定容器名稱後,該服務將無法進行擴展(scale),因為 Docker 不允許多個容器具有相同的名稱。
devices
指定設備映射關係。
devices:- "/dev/ttyUSB1:/dev/ttyUSB0"
dns
自定義 DNS 伺服器。可以是一個值,也可以是一個列表。
dns: 8.8.8.8
dns:- 8.8.8.8- 9.9.9.
dockerfile
如果需要指定額外的編譯鏡像的 Dockefile 文件,可以通過該指令來指定。
dockerfile: Dockerfile-alternate
註意,該指令不能跟 image 同時使用,否則 Compose 將不知道根據哪個指令來生成最終的服務鏡像。
environment
設置環境變數。你可以使用數組或字典兩種格式。
只給定名稱的變數會自動獲取運行 Compose 主機上對應變數的值,可以用來防止泄露不必要的數據。
##例如
environment:
RACK_ENV: development
SESSION_SECRET:
###或者
environment:
- RACK_ENV=development
- SESSION_SECRET
註意:如果變數名稱或者值中用到 true|false,yes|no 等表達布爾含義的詞
匯,最好放到引號里,避免 YAML 自動解析某些內容為對應的布爾語義。
expose
暴露埠,但不映射到宿主機,只被連接的服務訪問。僅可以指定內部埠為參數
expose:
- "3000"
- "8000
ports
暴露埠信息。用於將容器的埠映射到主機上的埠
使用宿主:容器 (HOST:CONTAINER) 格式,或者僅僅指定容器的埠(宿主將會隨機選擇埠)都可以。
ports:
- "3000" # 綁定容器的3000埠到主機的任意埠,容器啟動時隨機分配綁定的主機埠號
- "80:80" # 綁定容器的80埠到主機的80埠
- "49100:22" # 綁定容器的22埠到主機的49100埠
- "127.0.0.1:8001:8001"
註意:和expose的區別是,expose不會將埠暴露給主機,只能指定容器內部暴露的埠,主機無法訪問expose的埠。
volumes
數據捲所掛載路徑設置。可以設置宿主機路徑 (HOST:CONTAINER ) 或加上訪問模式 (HOST:CONTAINER:ro )。
volumes:
- /var/lib/mysql ##設置宿主機路徑
- cache/:/tmp/cache ##捲和掛載路徑
- ~/configs:/etc/configs/:ro ##只讀
其它指令
指定服務容器啟動後執行的命令。
entrypoint: /code/entrypoint.sh
指定容器中運行應用的用戶名。
user: nginx
指定容器中工作目錄。
working_dir: /code
指定容器中記憶體和記憶體交換區限制都為 1G。
mem_limit: 1g
memswap_limit: 1g
允許容器中運行一些特權命令。
privileged: true
指定容器退出後的重啟策略為始終重啟。
restart: always
以只讀模式掛載容器的 root 文件系統,意味著不能對容器內容進行修改。
read_only: true
打開標準輸入,可以接受外部輸入。
stdin_open: true
模擬一個假的遠程式控制制台。
tty: true
docker-compose常用命令
1、docker-compose up
命令聚合每個容器的輸出,命令退出時,所有容器都將停止
2、docker-compose up -d
在後臺啟動容器並使它們保持運行
3、docker-compose stop
停止compose服務
4、docker-compose restart
重啟compose服務
5、docker-compose kill
kill compose服務
6、docker-compose ps
查看compose服務狀態
7.docker-compose down
關閉和刪除當前的docker-compose開啟的容器或服務
8、docker-compose rm
刪除compose服務
9.docker-compose config
查看 Docker Compose 配置
查看容器日誌
docker-compose logs -f ##查看該容器的啟動的日誌列印(日誌從頭列印
docker logs -f container_id ##查看某一容器的啟動的日誌列印(日誌從頭列印)
docker logs -f --tail 數量詞 container_id ##查看某一容器的啟動的日誌列印(查看最後n條日誌列印)