一 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。