附003.Docker Compose命令詳解

一 Docker Compose命令格式

  1 Usage:
  2   docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  3   docker-compose -h|--help
 

二 Docker Compose命令參數及解釋

  1 Usage:
  2   docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  3   docker-compose -h|--help
  4 
  5 Options:
  6   -f, --file FILE             #指定一個用於替換默認的yml配置文件,默認爲docker-compose.yml
  7   -p, --project-name NAME     #指定一個用於替換默認的項目名稱,默認爲當前目錄名
  8   --verbose                   #顯示更多輸出
  9   --log-level LEVEL           #設置log級別,包括(DEBUG, INFO, WARNING, ERROR, CRITICAL)
 10   --no-ansi                   #不顯示ANSI控制字符
 11   -v, --version               #現實Docker Compose版本
 12   -H, --host HOST             #守護進程鏈接至某主機
 13 
 14   --tls                       #使用TLS證書
 15   --tlscacert CA_PATH         #指定的個CA證書路徑
 16   --tlscert CLIENT_CERT_PATH  #指定TLS certificate文件路徑
 17   --tlskey TLS_KEY_PATH       #指定TLS key文件路徑
 18   --tlsverify                 #使用TLS而且驗證
 19   --skip-hostname-check       #不要根據客戶端證書中指定的名稱檢查守護進程的主機名
 20   --project-directory PATH    #指定一個用於替換默認的項目目錄,默認爲Compose file所在目錄
 21   --compatibility             If set, Compose will attempt to convert deploy
 22                               keys in v3 files to their non-Swarm equivalent
 23 
 24 Commands:
 25   build              #構建或重建服務
 26   bundle             #從Compose文件生成分佈式應用程序包(DAB)
 27   config             #驗證並查看Compose文件。
 28   create             #爲服務建立容器,該命令被棄用,可以使用「up」命令。
 29   down               #中止並移除containers, networks, images以及volumes
 30   events             #展現項目中每一個容器的容器事件
 31   exec               #至關於docker exec,使用此子命令,您能夠在服務中運行任意命令
 32   help               #查看幫助
 33   images             #列出鏡像
 34   kill               #強制中止容器
 35   logs               #查看容器log
 36   pause              #暫停服務
 37   port               #顯示某個容器端口所映射的公共端口
 38   ps                 #列出容器
 39   pull               #pull服務鏡像
 40   push               #push服務鏡像
 41   restart            #重啓服務
 42   rm                 #刪除全部(中止狀態)的服務容器
 43   run                #在指定服務上指定一個命令
 44   scale              #設置服務的容器數量
 45   start              #啓動服務
 46   stop               #中止服務
 47   top                #顯示正在運行的進程
 48   unpause            #恢復處於暫停狀態狀態中的服務
 49   up                 #建立和啓動容器
 50   version            #查看Docker-Compose的版本信息
 
 
提示:
-f參數爲可選,也可以使用-f提供多個配置文件,當使用多個文件時,Compose會將它們合併爲一個配置。Compose按照提供文件的順序構建配置。後續文件覆蓋並添加到其前任文件中。
若是未在命令行上提供此標誌,Compose將遍歷工做目錄及其父目錄,以查找docker-compose.yml和docker-compose.override.yml文件。至少須要提供該docker-compose.yml文件。若是兩個文件都存在於同一目錄級別,則Compose會將這兩個文件合併爲一個配置。
docker-compose.override.yml文件中的配置能應用在構建中的值是除docker-compose.yml文件中的值以外。
也可以使用相關環境變量指定Compose文件的路徑。
環境變量相關資料參考《附005.Docker Compose環境變量說明》。

三 Docker Compose命令分解詳解

3.1 build

格式:
  1 Usage: build [options] [--build-arg key=val...] [SERVICE...]
  2 Options:
  3     --compress              #使用gzip壓縮構建上下文
  4     --force-rm              #老是移除中間容器
  5     --no-cache              #在構建映像時不要使用緩存
  6     --pull                  #老是嘗試拉一個新版本的鏡像
  7     -m, --memory MEM        #爲構建容器設置內存限制
  8     --build-arg key=val     #爲服務設置構建時變量
構建服務,並打上標記,默認爲project_service。例如,composetest_db。若是Compose文件指定鏡像名稱,則使用該名稱標記鏡像。
若更改服務的Dockerfile或其構建目錄的內容,可運行docker-compose build以重建它。

3.2 bundle

格式:
  1 Usage: bundle [options]
  2 Options:
  3     --push-images              #自動爲全部服務在「構建」時推送鏡像。
  4     -o, --output PATH          #將bundle文件寫入的其餘路徑,默認爲"<project name>.dab"

3.3 config

格式:
  1 Usage: config [options]
  2 Options:
  3     --resolve-image-digests  Pin image tags to digests.
  4     -q, --quiet              #只驗證配置,不顯示任何東西
  5     --services               #打印服務名稱,每行一個
  6     --volumes                #打印卷名,每行一個
驗證並查看Compose文件。

3.4 create

該命令已被棄用。

3.5 down

格式
  1 Usage: down [options]
  2 Options:
  3     --rmi type              #刪除鏡像,可選type以下:
  4 #「all」:刪除任何服務使用的全部鏡像。
  5 #「本地」:只刪除不具備自定義tag標記的鏡像
  6     -v, --volumes           #刪除在Compose文件掛載的以及附加到容器的匿名卷
  7     --remove-orphans        #爲沒有在Compose文件中定義的服務刪除容器
  8     -t, --timeout TIMEOUT   #指定關閉超時,默認爲10秒
 
中止容器並刪除由其建立的容器,網絡,卷和鏡像。
默認狀況下,刪除的內容爲:
  • Compose文件中定義的服務的容器
  • 在Compose文件中networks部分中定義的網絡
  • 默認網絡(若是使用)
外部定義的網絡和卷永遠不會被刪除。

3.6 events

格式:
  1 Usage: events [options] [SERVICE...]
  2 Options:
  3     --json     		 #使用該--json標誌,每行打印一個json對象。

3.7 exec

格式:
  1 Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
  2 Options:
  3     -d, --detach	#在後臺運行命令
  4     --privileged	#向進程提供擴展特權
  5     -u, --user USER	#運行該命令的用戶
  6     -T			#禁用分配tty,默認docker-compose exec會分配一個tty
  7     --index=index	#若是有多個服務實例,則指定容器的索引,默認爲1
  8     -e, --env KEY=VAL	#設置環境變量,可設置屢次,不支持低於v1.25版本的API
  9     -w, --workdir DIR	#指定工做目錄

3.8 images

格式:
  1 Usage: images [options] [SERVICE...]
  2 Options:
  3     -q, --quiet  	#僅顯示ID
 
列出鏡像

3.9 kill

  1 Usage: kill [options] [SERVICE...]
  2 
  3 Options:
  4 -s SIGNAL		#發送到容器的信號。默認信號是SIGKILL
經過發送SIGKILL信號強制運行容器中止。可選地,能夠傳遞信號,例如:docker-compose kill -s SIGINT

3.10 logs

格式:
  1 Usage: logs [options] [SERVICE...]
  2 Options:
  3 --no-color          #生成單色輸出
  4 -f, --follow        #跟蹤日誌輸出
  5 -t, --timestamps    #顯示時間戳
  6 --tail="all"        #爲每一個容器從日誌的末尾顯示的行數
顯示服務的日誌輸出。

3.11 pause

格式:
  1 Usage: pause [SERVICE...]
暫停運行服務的容器。可以使用docker-compose unpause來中止暫定。

3.12 port

格式:
  1 Usage: port [options] SERVICE PRIVATE_PORT
  2 Options:
  3 --protocol=proto  #tcp或udp,默認爲tcp
  4 --index=index     #當一個服務擁有多個容器時,可經過該參數登錄到該服務下的任何服務

3.13 ps

格式:
  1 Usage: ps [options] [SERVICE...]
  2 Options:
  3 -q    		#僅列出容器id
列出容器

3.14 pull

格式:
  1 Usage: pull [options] [SERVICE...]
  2 Options:
  3     --ignore-pull-failures  #忽略pull失敗的鏡像,繼續pull其餘鏡像.
  4     --parallel              #並行拉取多個鏡像
  5     --no-parallel           #關閉並行拉取鏡像
  6     -q, --quiet             #靜默拉取,不顯示進度信息
  7     --include-deps          #將服務聲明爲依賴項
拉取與docker-compose.yml或docker-stack.yml文件中定義的服務關聯的鏡像,但不會根據這些鏡像啓動容器。

3.15 push

格式:
  1 Usage: push [options] [SERVICE...]
  2 Options:
  3     --ignore-push-failures  ##忽略push失敗的鏡像,繼續push其餘鏡像.
將服務圖像推送到各自的服務registry/repository

3.16 restart

格式:
  1 Usage: restart [options] [SERVICE...]
  2 Options:
  3 -t, --timeout TIMEOUT      #指定關閉超時時間,單位爲秒。(默認10秒)
從新啓動全部已中止和正在運行的服務。

3.17 rm

格式:
  1 Usage: rm [options] [SERVICE...]
  2 Options:
  3     -f, --force   #不進行確認即刪除
  4     -s, --stop    #在刪除前中止容器
  5     -v            #刪除任何與容器相關的匿名卷
刪除已中止的服務容器。
默認狀況下,不會刪除附加到容器的匿名卷,可以使用-v強制刪除全部匿名卷。可以使用ocker volume ls列出全部卷,任何不在卷中的數據都將丟失。
在沒有任何選項的狀況下,此命令也會運刪除由docker-compose up或docker-compose run所建立的一次性容器。

3.18 run

格式:
  1 Usage:
  2     run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...]
  3         SERVICE [COMMAND] [ARGS...]
  4 
  5 Options:
  6     -d, --detach          #在後臺運行命令
  7     --name NAME           #爲容器指定一個名稱
  8     --entrypoint CMD      #覆蓋images中的CMD命令
  9     -e KEY=VAL            #設置一個環境變量,可以使用屢次
 10     -l, --label KEY=VAL   #添加或覆蓋標籤,可以使用屢次
 11     -u, --user=""         #做爲指定的用戶名或uid運行
 12     --no-deps             #不要啓動連接服務
 13     --rm                  #在運行後刪除容器,在-d後,即後端運行時被忽略
 14     -p, --publish=[]      #在主機聲明一個容器端口
 15     --service-ports       #啓用服務端口並映射主機
 16     --use-aliases         #容器連接的時候指定別名
 17     -v, --volume=[]       #綁定掛載一個卷
 18     -T                    #禁用分配tty,默認docker-compose exec會分配一個tty
 19     -w, --workdir=""      #指定容器工做目錄
對服務運行一次性命令。例如,如下命令啓動web服務運行bash命令。
docker-compose run web bash
提示:
經過的命令run會覆蓋服務配置中定義的命令。例如,若是web啓動了bash命令,則會覆蓋服務配置文件中docker-compose run web python app.py,及容器行爲爲docker-compose run web bash。
經過的命令run不會建立服務配置中指定的任何端口。這能夠防止端口與已打開的端口發生衝突。若是須要建立服務的端口並將其映射到主機,請指定--service-ports參數,如:
docker-compose run --service-ports web python manage.py shell
或者,可以使用--publish或-p選項指定手動端口映射,相似docker run,如:
docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell

3.19 scale

格式:
  1 Usage: scale [SERVICE=NUM...]
注意:不推薦使用此命令。建議使用docker-compose up --scale替代。使用docker-compose scale中包含了up命令。
設置要爲服務運行的容器數。
數字在表單中指定爲參數service=num。例如:
docker-compose scale web=2 worker=3

3.20 start

格式:
  1 Usage: start [SERVICE...]
啓動服務的現有容器。

3.21 stop

格式:
  1 Usage: stop [options] [SERVICE...]
  2 Options:
  3 -t, --timeout TIMEOUT      ##指定關閉超時,默認爲10秒
中止運行容器而不刪除它們。可以使用docker-compose start再次啓動。

3.21 top

格式:
  1 Usage: top [SERVICE...]
顯示正在運行的進程。

3.22 unpause

格式:
  1 Usage: unpause [SERVICE...]
取消暫停服務的暫停容器

2.23 up

格式:
  1 Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]
  2 Options:
  3     -d, --detach               #在後臺運行命令,不兼容--abort-on-container-exit
  4     --no-color                 #生成單色輸出
  5     --quiet-pull               #不顯示進度信息
  6     --no-deps                  #不要啓動連接服務
  7     --force-recreate           #從新建立容器,即便它們的配置和鏡像沒有改變
  8     --always-recreate-deps     #建立容器的依賴,不兼容--no-recreate
  9     --no-recreate              #若是容器已經存在,就不要從新建立,不兼容--force-recreate 和-V.
 10     --no-build                 #不要創建一個鏡像,即便不存在
 11     --build                    #在啓動容器以前構建鏡像
 12     --abort-on-container-exit  #存在任何容器中止,則中止建立全部容器,不兼容-d
 13     -t, --timeout TIMEOUT      #建立容器或啓動容器的超時時間,默認10秒
 14     -V, --renew-anon-volumes   #從新建立匿名卷,而不是使用以前容器已經存在的卷
 15     --remove-orphans           #爲在Compose file中未定義的服務移除容器
 16     --exit-code-from SERVICE   #返回所指定服務的退出碼,不兼容--abort-on-container-exit.
 17     --scale SERVICE=NUM        #指定容器的規模(數量),會覆蓋Compose file中定義的值。
構建,(從新)建立,啓動和爲服務附加容器。
除非它們已在運行,不然此命令也會啓動任何連接服務。
該docker-compose up命令聚合每一個容器的輸出(基本上正在運行docker-compose logs -f)。退出命令後,全部容器都將中止。運行docker-compose up -d 在後臺啓動容器並使其運行。
若是服務的容器已經存在,而且在建立容器後更改了服務的配置或映像,則docker-compose up經過中止並從新建立容器(保留已安裝的卷)來獲取更改。要防止Compose獲取更改,請使用該--no-recreate參數。
若是要強制Compose中止並從新建立全部容器,請使用該--force-recreate參數。
若是進程遇到錯誤,則此命令的退出代碼爲1。
若是使用SIGINT(ctrl+ C)或中斷進程SIGTERM,則中止容器,則退出代碼爲0。
若是SIGINT或SIGTERM在這段停機階段再次發送,運行容器被殺害,則退出代碼爲2。
相關文章
相關標籤/搜索