docker-compose常用命令詳解

build

docker-compose build [options] [–build-arg key=val…] [SERVICE…]
構建(重新構建)項目中的服務容器。
選項包括:

--compress 通過gzip壓縮構建上下環境
--force-rm 刪除構建過程中的臨時容器
--no-cache 構建鏡像過程中不使用緩存
--pull 始終嘗試通過拉取操作來獲取更新版本的鏡像
-m, --memory MEM爲構建的容器設置內存大小
--build-arg key=val爲服務設置build-time變量
--parallel並行構建映像。

構建服務一次,然後對其進行標記,默認情況下爲project_service。例如,composetest_db。如果“compose”文件指定了 鏡像名稱,則會使用該名稱標記鏡像,並預先替換任何變量

config

docker-compose config [options]
驗證並查看compose文件配置。
選項包括:

--resolve-image-digests  將鏡像標籤標記爲摘要
--no-interpolate         不要插入環境變量。
-q, --quiet                 只驗證配置,不輸出。 當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息
--services                  打印服務名稱,每行一個。
--volumes                  打印數據券名稱,每行一個。
--hash="*"                 打印服務配置散列,每行一個。爲指定服務的列表設置                                                           “service1,service2”或使用通配符來顯示所有服務

create

docker-compose create [options] [SERVICE…]
爲服務創建容器。
選項包括:

--force-recreate:重新創建容器,即使配置和鏡像沒有改變,不兼容–no-recreate參數
--no-recreate:如果容器已經存在,不需要重新創建,不兼容–force-recreate參數
--no-build:不創建鏡像,即使缺失
--build:創建容器前,生成鏡像

down

docker-compose down [options]
停止和刪除容器、網絡、卷、鏡像。
選項包括:

--rmi type,刪除鏡像,類型必須是:all,刪除compose文件中定義的所有鏡像;local,刪除鏡像名爲空的鏡像
-v, --volumes,刪除已經在compose文件中定義的和匿名的附在容器上的數據卷
--remove-orphans,刪除服務中沒有在compose中定義的容器
-t, --timeout   指定關機超時(以秒爲單位)(默認值:10)

docker-compose down
停止容器並刪除由創建的容器,網絡,卷和映像up。

默認情況下,刪除的唯一內容是:
在Compose文件中定義的服務的容器
networks在撰寫文件的部分中定義的網絡
默認網絡(如果已使用)
定義爲的網絡和卷external永遠不會刪除。

events

docker-compose events [options] [SERVICE…]
選項包括:

--json      將事件輸出爲json對象流

使用該–json標誌時,每行將打印一個json對象,其格式爲:
{
“time”: “2015-11-20T18:01:03.615550”,
“type”: “container”,
“action”: “create”,
“id”: “213cf7…5fc39a”,
“service”: “web”,
“attributes”: {
“name”: “application_web_1”,
“image”: “alpine:edge”
}
}

exec

docker-compose exec [options] SERVICE COMMAND [ARGS…]
這等於docker exec。使用此子命令,您可以在服務中運行任意命令。默認情況下,命令是分配TTY的,因此您可以使用命令docker-compose exec web sh來獲得交互式提示。
選項包括:

-d, --detach ,分離模式,後臺運行命令。
--privileged ,獲取特權。
-u, --user USER ,指定運行的用戶。
-T 禁用分配TTY,默認docker-compose exec分配TTY。
--index=index,當一個服務擁有多個容器時,可通過該參數登陸到該服務下的任何服務,例如:docker-compose exec –index=1 web /bin/bash ,web服務中包含多個容器
-e, --env KEY=VAL ,設置環境變量(可多次使用,API < 1.25不支持)
-w, --workdir ,指向此命令的workdir目錄的路徑。

kill

docker-compose kill [options] [SERVICE…]
選項包括:

-s SIGNAL ,向容器發出信號。默認信號是SIGKILL。

通過發送SIGKILL信號來強制停止服務容器。
支持通過-s參數來指定發送的信號,例如通過如下指令發送SIGINT信號:
docker-compose kill -s SIGINT

logs

docker-compose logs [options] [SERVICE…]
查看服務容器的輸出。默認情況下,docker-compose將對不同的服務輸出使用不同的顏色來區分。可以通過–no-color來關閉顏色。
選項包括:

--no-color ,單色輸出
-f, --follow  ,日誌輸入
-t, --timestamps  ,顯示時間戳
--tail="all"  , 從日誌末尾顯示的行數爲每個容器

pause

docker-compose pause [SERVICE…]
暫停正在運行的服務容器

port

docker-compose port [options] SERVICE PRIVATE_PORT
顯示某個容器端口所映射的公共端口。
選項包括:

--protocol=proto,指定端口協議,TCP(默認值)
--index=index,如果同意服務存在多個容器,指定命令對象容器的序號(默認爲1)

ps

docker-compose ps [options] [SERVICE…]
選項包括:

-q, --quiet ,只顯示id
--services  ,顯示服務
--filter KEY=VAL ,根據屬性篩選服務
-a, --all  ,顯示所有已停止的容器(包括run命令創建的容器)

pull

docker-compose pull [options] [SERVICE…]
拉取服務依賴的鏡像。
選項包括:

--ignore-pull-failures  ,忽略拉取鏡像過程中的錯誤
--parallel  ,多個鏡像同時拉取
--no-parallel  ,禁止同時拉取多個
-q, --quiet   , 拉取鏡像過程中不打印進度信息
--include-deps  ,可以將服務聲明爲依賴項

push

docker-compose push [options] [SERVICE…]
推送服務依的鏡像。
選項包括:

--ignore-push-failures ,忽略推送鏡像過程中的錯誤

restart

docker-compose restart [options] [SERVICE…]
重啓項目中的服務。
選項包括:

-t,--timeout TIMEOUT,指定重啓前停止容器的超時(默認爲10秒)

docker-compose restart
重新啓動所有已停止並正在運行的服務。
如果對docker-compose.yml配置進行更改,則運行此命令後不會反映這些更改。
例如,重新啓動後不會更新對環境變量的更改(在構建容器之後但在執行容器的命令之前添加)。

rm

docker-compose rm [options] [SERVICE…]
選項包括:

-f, --force  ,強制直接刪除,包括非停止狀態的容器
-s, --stop  ,如果需要,在刪除之前,停止容器
-v   ,刪除任何附加到容器的匿名卷

刪除停止的服務容器。

默認情況下,不刪除附加到容器的匿名卷。您可以使用來覆蓋它-v。要列出所有卷,請使用docker volume ls。

任何不在卷中的數據都將丟失。

不帶任何選項運行命令還會刪除由docker-compose up或創建的一次性容器docker-compose run

run

docker-compose run [options] [-v VOLUME…] [-p PORT…] [-e KEY=VAL…] [-l KEY=VALUE…]
SERVICE [COMMAND] [ARGS…]
選項包括:

-d, --detach   ,分離模式:在後臺運行容器,打印新的容器名稱。
--name NAME   ,爲容器分配一個名稱
--entrypoint CMD   ,覆蓋鏡像的入口點
-e KEY=VAL  ,設置環境變量(可多次使用)
-l, --label KEY=VAL  ,添加或覆蓋標籤(可以多次使用)
-u, --user=""  ,指定的用戶名或uid運行
--no-deps  ,禁止啓動鏈接服務。
--rm   ,運行後移除容器。在分離模式下忽略。.
-p, --publish=[]  ,將容器的端口發佈到主機
--service-ports  ,在啓用和映射服務端口的情況下運行命令主機。
--use-aliases   ,在網絡中使用服務的網絡別名容器連接。
-v, --volume=[]  ,綁定掛載卷(默認[])
-T   ,禁用pseudo-tty分配。默認情況下“docker-compose運行”分配一個遙控。
-w, --workdir=""  ,容器內的工作目錄

針對服務運行一次性命令。例如,以下命令啓動web服務並bash作爲其命令運行。
docker-compose run web bash

您與run start一起使用的命令在新容器中啓動,該容器具有由服務的配置定義的配置,包括卷,鏈接和其他詳細信息。但是,有兩個重要區別。

首先,傳遞的命令將run覆蓋服務配置中定義的命令。例如,如果 web服務配置以開頭bash,則用docker-compose run web python app.py覆蓋它python app.py。

第二個區別是該docker-compose 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

如果啓動使用鏈接配置的服務,則該run命令首先檢查鏈接服務是否正在運行,並在停止時啓動該服務。一旦所有鏈接的服務都在運行,則runexec將執行您傳遞的命令。例如,您可以運行:
docker-compose run db psql -h db -U docker

這將爲鏈接的db容器打開一個交互式PostgreSQL shell 。

如果您不希望run命令啓動鏈接的容器,請使用–no-deps標誌:
docker-compose run --no-deps web python manage.py shell

如果要在覆蓋容器的重新啓動策略的同時運行後除去該容器,請使用–rm標誌:
docker-compose run --rm web python manage.py db upgrade

這將運行數據庫升級腳本,並在完成運行後刪除容器,即使在服務配置中指定了重新啓動策略也是如此。

scale

不推薦使用此命令請使用帶有標誌的up命令 --scale。請注意,up與–scale標誌一起使用與命令有一些細微的差異scale,因爲它包含了up命令的行爲。

docker-compose scale [options] [SERVICE=NUM…]
設置指定服務運行的容器個數。

數字以形式指定爲參數service=num。例如:

docker-compose scale web=2 worker=3

start

docker-compose start [SERVICE…]
docker-compose start
啓動已經存在的服務容器。

stop

docker-compose stop [options] [SERVICE…]

選項包括:

 -t, --timeout TIMEOUT  ,指定關機超時(以秒爲單位)(默認值:10)

停止運行容器而不刪除它們。可以從重新開始 docker-compose start

top

docker-compose top

顯示正在運行的進程。

unpause

docker-compose unpause [SERVICE…]

取消暫停已暫停的服務容器。

up

docker-compose up [options] [–scale SERVICE=NUM…] [SERVICE…]
選項包括:

-d, --detach  ,在後臺運行服務容器
--no-color ,不使用顏色來區分不同的服務的控制輸出
--quiet-pull ,拉取鏡像過程中不打印進度信息
--no-deps ,不啓動服務所鏈接的容器
--force-recreate ,強制重新創建容器,不能與–no-recreate同時使用
--always-recreate-deps ,創建容器的依賴
--no-recreate ,如果容器已經存在,則不重新創建,不能與–force-recreate同時使用
--no-build ,不自動構建缺失的服務鏡像
--no-start ,不要在創建服務之後再啓動它們。
--build ,在啓動容器前構建服務鏡像
--abort-on-container-exit ,停止所有容器,如果任何一個容器被停止,不能與-d同時使用
-t, --timeout TIMEOUT ,停止容器時候的超時(默認爲10秒)
-V, --renew-anon-volumes ,重新創建匿名卷,而不是檢索
--remove-orphans ,刪除服務中沒有在compose文件中定義的容器
--exit-code-from SERVICE ,返回所選服務的退出碼容器
–scale SERVICE=NUM ,設置服務運行容器的個數,將覆蓋在compose中通過scale指定的參數

docker-compose up
啓動所有服務
docker-compose up -d

構建,(重新)創建,啓動並附加到服務的容器。

除非它們已經在運行,否則此命令還將啓動所有鏈接的服務。

該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
在後臺所有啓動服務
-f 指定使用的Compose模板文件,默認爲docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章