附錄3、Docker-compose 命令使用指南

本文是《Docker必知必會系列》第十一篇,原文發布于個人博客:悟塵紀

上一篇:Docker必知必會系列(附錄2):Dockerfile 參考及最佳實踐

命令選項概述和幫助

您可以通過在命令行執行如下命令來獲取相關幫助信息:

  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 updocker-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。如果使用 SIGINTctrl+ C)或SIGTERM 中斷該進程,則容器停止,退出代碼為 0。如果在此關閉階段再次發送 SIGINTSIGTERM 則會停止正在運行的容器,退出代碼為 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 設置。

參考

相關文章

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374