本文是《Docker必知必會系列》第十一篇,原文發布于個人博客:悟塵紀。
命令選項概述和幫助
您可以通過在命令行執行如下命令來獲取相關幫助信息:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
命令選項
-
-f, --file FILE
指定模板文件,默認為docker-compose.yml
,可以指定多個文件。 -
-p, --project-name NAME
指定項目名稱,默認使用所在目錄名。 -
--verbose
輸出更多調試信息。 -
-v, --version
打印版本并退出。 -
-H, --host HOST
指定連接到哪個守護進程
命令自動補全
Compose 為 bash 和 zsh 提供了命令補全功能,Linux 安裝:
sudo curl -L https://raw.githubusercontent.com/docker/compose/1.25.5/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
其它系統安裝,請參考官方文檔: https://docs.docker.com/compose/completion/
命令使用說明
version(查看版本)
查看版本信息。
build(構建服務)
格式為 docker-compose build [options] [SERVICE...]
。
構建(重新構建)并標記服務,默認為project_service
,例如,composetest_db
。
如果更改了服務的 Dockerfile
或構建目錄中的內容,請運行docker-compose build
以重建它。
config(驗證配置)
驗證并查看 Compose 文件。
down (停止服務)
停止容器并移除由 up
創建的容器、網絡、卷和鏡像。 定義為 external
的網絡和卷永遠不會被移除。
events(監測時間)
監測項目中容器事件,使用--json`標志時,每行將打印一個json對象。
exec(進入容器)
進入指定的容器,例如通過 docker-compose exec web sh
可進入服務名為 web
的容器進行交互式操作。
help(查看幫助)
顯示命令的幫助和用法說明。
images(列出鏡像)
列出 Compose 文件中包含的鏡像。
kill(停止服務)
強制停止運行中的服務容器。格式為 docker-compose kill [options] [SERVICE...]
。
支持通過 -s
參數來指定要發送的信號,例如發送 SIGINT
信號:
docker-compose kill -s SIGINT
logs(查看日志)
查看服務的日志輸出。格式為 docker-compose logs [options] [SERVICE...]
。可選項:
--no-color # 關閉不同服務用不同顏色顯示的功能
-f, --follow # 實時監控日志
-t, --timestamps # 顯示時間戳
--tail="all" # 顯示所有日志
pause(暫停服務)
暫停正在運行的容器,可通過 unpause
取消暫停。格式為 docker-compose pause [SERVICE...]
。
port(查看端口)
打印某個容器所映射的公共端口,格式為 docker-compose port [options] SERVICE PRIVATE_PORT
。
ps(列出服務)
列出項目中的所有容器。
pull(拉取鏡像)
拉取服務依賴的鏡像。可通過 --ignore-pull-failures
參數忽略拉取鏡像過程中的錯誤。
push(推送鏡像)
推送服務所依賴的鏡像到鏡像倉庫。
restart(重啟服務)
重啟項目中的服務。
rm(刪除容器)
刪除停止的服務容器。
默認情況下,不刪除附加到容器的匿名卷。您可以使用 -v
覆蓋它。要列出所有卷,請使用 docker volume ls
。
任何不在卷中的數據都會丟失。運行不帶選項的命令還會刪除由 docker-compose up
或 docker-compose run
創建的一次性容器:
run(運行命令)
針對服務執行一次性命令。命令選項:
-
-d
后臺運行容器。 -
--name NAME
為容器指定一個名字。 -
--entrypoint CMD
覆蓋默認的容器啟動指令。 -
-e KEY=VAL
設置環境變量值,可多次使用選項來設置多個環境變量。 -
-u, --user=""
指定運行容器的用戶名或者 uid。 -
--no-deps
不自動啟動關聯的服務容器。 -
--rm
運行命令后自動刪除容器,d
模式下將忽略。 -
-p, --publish=[]
映射容器端口到本地主機。 -
--service-ports
配置服務端口并映射到本地主機。 -
-T
不分配偽 tty,意味著依賴 tty 的指令將無法運行。
例如,以下命令啟動web
服務并運行bash
命令。
docker-compose run web bash
該命令類似啟動容器后運行指定的命令,相關卷、鏈接等等都將會按照配置自動創建。有兩個重要區別:
- 給定命令將會覆蓋服務配置中定義的命令。
- 不會創建服務配置中指定的任何端口,這樣可避免端口沖突。可通過附加
--service-ports
創建端口。還可以使用--publish
或-p
選項手動指定端口映射。
默認情況下,所有關聯且未運行的服務將會自動被啟動。如果不希望自動啟動關聯的容器,可以使用 --no-deps
選項,例如:
docker-compose run --no-deps web python manage.py shell
將不會啟動 web 容器所關聯的其它容器。
start(啟動服務)
啟動用于服務的現有容器。
stop(停止服務)
停止已經處于運行狀態的容器,但不刪除它。
top(查看進程)
查看各個服務內正在運行的進程。
unpause(暫停服務)
恢復處于暫停狀態中的服務。
up(構建并啟動服務)
自動構建,(重新)創建服務,啟動服務并在控制臺聚合顯示每個容器的日志。
鏈接的服務都將會被自動啟動,除非已經處于運行狀態。
當通過 Ctrl-C
停止命令時,所有容器將會停止。
如果使用 docker-compose up -d
,將會在后臺啟動并運行所有的容器。
如果用于服務的容器已經存在,并且在創建容器后更改了服務的配置或鏡像,docker-compose up
將會停止并重新創建容器來獲取更新(保留通過 volumes-from
掛載的卷)。
如果不希望應用更新,可使用 --no-recreate
參數。如果要強制停止并重新創建所有容器,可使用該 --force-recreate
參數。
如果進程遇到錯誤,此命令的退出代碼為1
。如果使用 SIGINT
(ctrl
+ C
)或SIGTERM
中斷該進程,則容器停止,退出代碼為 0
。如果在此關閉階段再次發送 SIGINT
或 SIGTERM
則會停止正在運行的容器,退出代碼為 2
。
命令選項:
-d
在后臺運行服務容器。--no-color
不使用顏色來區分不同的服務的控制臺輸出。--no-deps
不啟動服務所鏈接的容器。--force-recreate
強制重新創建容器,不能與--no-recreate
同時使用。--no-recreate
如果容器已經存在了,則不重新創建,不能與--force-recreate
同時使用。--no-build
不自動構建缺失的服務鏡像。--no-start
僅創建服務但不啟動。-t, --timeout TIMEOUT
在附加或容器已運行時,超時(默認為 10 秒)關閉容器。-V, --renew-anon-volumes
重新創建匿名卷,而不是從以前的容器中檢索數據。--remove-orphans
刪除未在 Compose 文件中定義的服務的容器。--scale SERVICE=NUM
設置為服務運行的容器數量。會覆蓋 Compose 文件中的scale
設置。
參考
- 官方文檔:Compose reference