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條日誌列印)