docker-compose命令詳解


#啟動服務
docker-compose start
#停止服務
docker-compose stop
#重啟服務
docker-compose restart

具體語法:

Define and run multi-container applications with Docker.

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

Options:
  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml),指定docker-compose.xml文件,默認是 docker-compose.xml,當一條命令有多個-f參數時,會做替換操作
  -p, --project-name NAME     Specify an alternate project name (default: directory name),指定docker-compose的項目目錄,也就是docker-compose.xml文件的存儲目錄
  --verbose                   Show more output,輸出更多調試信息。
  -v, --version               Print version and exit
  -H, --host HOST             Daemon socket to connect to

  --tls                       Use TLS; implied by --tlsverify
  --tlscacert CA_PATH         Trust certs signed only by this CA
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  --tlskey TLS_KEY_PATH       Path to TLS key file
  --tlsverify                 Use TLS and verify the remote
  --skip-hostname-check       Don't check the daemon's hostname against the name specified
                              in the client certificate (for example if your docker host
                              is an IP address)

Commands:
  build              Build or rebuild services,當修改dockerfile或者docker-compose時,運行docker-compose build 重建鏡像。  生成鏡像后,可使用docker-compose up啟動
  config             Validate and view the compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  help               Get help on a command
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pulls service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

CLI 環境變量說明

以DOCKER_開頭的變量和用來配置 Docker 命令行客戶端的使用一樣。如果使用 boot2docker , $(boot2docker shellinit) 將會設置它們為正確的值。
COMPOSE_PROJECT_NAME
設置通過 Compose 啟動的每一個容器前添加的項目名稱,默認是當前工作目錄的名字。

COMPOSE_FILE
設置要使用的 docker-compose.yml 的路徑。默認路徑是當前工作目錄。

DOCKER_HOST
設置 Docker daemon 的地址。默認使用 unix:///var/run/docker.sock,與 Docker 客戶端采用的默認值一致。

DOCKER_TLS_VERIFY
如果設置不為空,則與 Docker daemon 交互通過 TLS 進行。

DOCKER_CERT_PATH
配置 TLS 通信所需要的驗證(ca.pem、cert.pem 和 key.pem)文件的路徑,默認是 ~/.docker
build

構建或重新構建服務。服務一旦構建后,將會帶上一個標記名,例如 web_db。可以隨時在項目目錄下運行 docker-compose build 來重新構建服務。

Usage: build [options] [SERVICE...]

Options:
--force-rm  Always remove intermediate containers.
--no-cache  Do not use cache when building the image.
--pull      Always attempt to pull a newer version of the image.

當修改dockerfile或者docker-compose時,運行docker-compose build 重建鏡像。 生成鏡像后,可使用docker-compose up啟動。服務一旦構建后,將會帶上一個標記名,例如 web_db。可以隨時在項目目錄下運行 docker-compose build 來重新構建服務。

config

驗證和查看compose文件配置。

Usage: config [options]

Options:
-q, --quiet     只驗證配置,不輸出。 當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息。
--services      打印服務名,一行一個
create

為服務創建容器.只是單純的create,還需要使用start啟動compose

Usage: create [options] [SERVICE...]

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

Options:
    --rmi type          刪除鏡像,類型必須是:
                        'all': 刪除compose文件中定義的所以鏡像.
                        'local': 刪除鏡像名為空的鏡像
     -v, --volumes       刪除卷
                        attached to containers.
    --remove-orphans    Remove containers for services not defined in the
                        Compose file

停止和刪除容器、網絡、卷、鏡像,這些內容是通過docker-compose up命令創建的. 默認值刪除容器網絡,可以通過指定 rmi volumes參數刪除鏡像和卷。

up
 Usage: up [options] [SERVICE...]

Options:
    -d                         后台運行,輸出容器的名字.
                               Incompatible with --abort-on-container-exit.
    --no-color                  單色輸出.
    --no-deps                  不啟動link服務.
    --force-recreate           強制重新創建compose服務,即使沒有任何改變。重新創建后啟動容器
                               Incompatible with --no-recreate.
    --no-recreate               如果容器已經存在,不重新創建.
                               Incompatible with --force-recreate.
    --no-build                 不創建重啟,即使鏡像不存在.
    --build                    重新創建鏡像,然后生成容器.
    --abort-on-container-exit  任何容器停止,自動停止所有容器.
                               Incompatible with -d.
    -t, --timeout TIMEOUT      超時時間. (default: 10)
    --remove-orphans           移除compose文件中未定義服務的容器

構建,(重新)創建,啟動,鏈接一個服務相關的容器。鏈接的服務都將會啟動,除非他們已經運行。默認情況, docker-compose up 將會整合所有容器的輸出,並且退出時,所有容器將會停止。如果使用 docker-compose up -d ,將會在后台啟動並運行所有的容器。

默認情況,如果該服務的容器已經存在, docker-compose up 將會停止並嘗試重新創建他們(保持使用 volumes-from 掛載的卷),以保證 docker-compose.yml 的修改生效。如果你不想容器被停止並重新創建,可以使用 docker-compose up --no-recreate。如果需要的話,這樣將會啟動已經停止的容器。

start
Usage: start [SERVICE...]

啟動一個已經存在的服務容器。

stop
Usage: stop [options] [SERVICE...]

Options:
-t, --timeout TIMEOUT     關閉超時時間 (default: 10).

停止一個已經運行的容器,但不刪除它。通過 docker-compose start 可以再次啟動這些容器。

events
Usage: events [options] [SERVICE...]

Options:
    --json      輸出事件日志,json格式

輸出docker-compose 事件的日志,當執行docker-compose命令操作時,docker-compose events命令就會監控日志:

{
    "service": "web",
    "event": "create",
    "container": "213cf75fc39a",
    "image": "alpine:edge",
    "time": "2015-11-20T18:01:03.615550",
}
exec
Usage: exec [options] SERVICE COMMAND [ARGS...]

Options:
-d                      分離模式,后台運行命令.
--privileged        獲取特權.
--user USER         指定運行的用戶.
-T                禁用分配TTY. By default `docker-compose exec`分配 a TTY.
--index=index     當一個服務擁有多個容器時,可通過該參數登陸到該服務下的任何服務,例如:docker-compose exec --index=1 web /bin/bash ,web服務中包含多個容器
                  instances of a service [default: 1],默認是1

docker exec命令功能相同,可以通過service name登陸到容器中:

docker-compose exec web sh 
kill
Usage: kill [options] [SERVICE...]

Options:
-s SIGNAL         向容器發送信號. 默認是SIGKILL.

通過發送 SIGKILL 信號來強制停止服務容器。支持通過參數來指定發送的信號,例如:

$ docker-compose kill -s SIGINT
logs
Usage: logs [options] [SERVICE...]

Options:
--no-color          單色輸出,不顯示其他顏.
-f, --follow        跟蹤日志輸出,就是可以實時查看日志
-t, --timestamps    顯示時間戳
--tail              從日志的結尾顯示,--tail=200

顯示日志輸出。

pause

Usage: pause [SERVICE...]

暫停容器服務,docker-compose pause 暫停所有服務。docker-compose pause web,之后暫停web服務的容器。

unpause
Usage: unpause [SERVICE...]

恢復容器服務,docker-compose unpause 恢復所有服務,docker-compose unpause web,之后恢復web服務的容器。

port
Usage: port [options] SERVICE PRIVATE_PORT

Options:
--protocol=proto  tcp or udp [default: tcp]
--index=index     index of the container if there are multiple
                  instances of a service [default: 1]

輸出綁定的公共端口。

docker-compose port web 8080

8080為容器內部端口。

0.0.0.0:8884
ps
Usage: ps [options] [SERVICE...]

Options:
-q    只顯示ID

顯示所有容器信息,默認顯示name、command、state、ports。

pull

拉取鏡像。pull compose文件中所指明的鏡像。

Usage: pull [options] [SERVICE...]

Options:
--ignore-pull-failures  忽略pull失敗的鏡像,繼續pull其他鏡像。
push
Usage: push [options] [SERVICE...]

Options:
    --ignore-push-failures  忽略錯誤。

push compose文件中所指明的鏡像。

restart
Usage: restart [options] [SERVICE...]

Options:
-t, --timeout TIMEOUT      Specify a shutdown timeout in seconds. (default: 10)
Restarts services.
rm
Usage: rm [options] [SERVICE...]

Options:
    -f, --force   強制刪除
    -v            期初加載到容器的任何匿名卷
    -a, --all     同時刪除由 docker-compose run 創建的所有容器

刪除已經停止的容器,如果服務在運行,需要先docker-compose stop 停止容器,默認情況下,已掛載的volume中的數據不會被刪除,可以使用docker volume ls查看所有的volume情況。所有在容器中並未在volume中的數據將被刪除。

run
Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

Options:
 -d                   后台運行,輸出容器名.
-e KEY=VAL            設置環境變量參數,可以使用多次
-u, --user=""         指定運行的用戶
--no-deps             不啟動link服務,只啟動run的服務.
--rm                  運行后刪除容器,后台運行模式除外(-d).
-p, --publish=[]      開放端口
--service-ports       compose文件中配置什么端口,就映射什么端口.
-T                    禁用TTY.
-w, --workdir=""      設置工作目錄

在一個服務上執行一個命令。例如:

docker-compose run ubuntu ping docker.com

將會啟動一個 ubuntu 服務,執行 ping docker.com 命令。

根據compose配置文件制定的端口,映射到主機:

docker-compose run --service-ports web python manage.py shell

指定端口映射到主機:

docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell

link db容器:

docker-compose run db psql -h db -U docker

不linke容器,單獨啟動指定容器,如果不希望自動啟動關聯的容器,可以使用 --no-deps 選項,將不會啟動 web 容器所關聯的其它容器。例如:

docker-compose run --no-deps web python manage.py shell

默認情況下,所有關聯的服務將會自動被啟動,除非這些服務已經在運行中。該命令類似啟動容器后運行指定的命令,相關卷、鏈接等等都將會按照期望創建。

兩個不同點:

  • 給定命令將會覆蓋原有的自動運行命令;
  • 不會自動創建端口,以避免沖突。
scale
Usage: scale [SERVICE=NUM...]

設置同一個服務運行的容器個數。通過 service=num 的參數來設置數量。例如:

docker-compose scale web=2 worker=3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM