docker-compose常用命令及使用詳情

思維的深度發表於2018-05-22

一、介紹

   原始碼:https://github.com/docker/compose

   官方文件:https://docs.docker.com/glossary/?term=amd64

   安裝:https://docs.docker.com/compose/install/

 

 

二、常用命令

·            build(構建yml中某個服務的映象)
 如上,web這個服務是依賴於映象build的。在本地 也存在Dockerfile檔案。
 可以使用docker-compose build來構建服務的映象。

·        ps(檢視已經啟動的服務狀態)

·        kill(停止某個服務)

·        logs(可以檢視某個服務的log

·        port(列印繫結的public port

·        pull(pull服務映象)

·        up(啟動yml定義的所有服務)

·        stop(停止yml中定義的所有服務)

·        start(啟動被停止的yml中的所有服務)

·        kill(強行停止yml中定義的所有服務)

·        rm(刪除yml中定義的所有服務)

·        restart(重啟yml中定義的所有服務)

·        scale(擴充套件某個服務的個數,可以向上或向下)

·        migrate-to-labels(這個沒有實際嘗試。根據介紹是將服務從1.2遷移到1.3labels的版本。docker之前不支援label

·        version(檢視compose的版本)

三、命令詳解
  
語法:
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)
  -p, --project-name NAME     Specify an alternate project name (default: directory name)
  --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
  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

-f   指定docker-compose.xml檔案,預設是 docker-compose.xml  ,  當一條命令有多個-f引數時,會做替換操作
-p  指定docker-compose的專案目錄,也就是docker-compose.xml檔案的儲存目錄




CLI Environment Variables


以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

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啟動

config

Usage: config [options]

Options:
-q, --quiet     只驗證配置,不輸出。 當配置正確時,不輸出任何內容,當檔案配置錯誤,輸出錯誤資訊。
--services      列印服務名,一行一個
驗證和檢視compose檔案配置。

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引數刪除映象和卷

events

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

Options:
    --json      輸出事件日誌,json格式
輸出docker-compose 事件的日誌,當執行docker-compose命令操作時,docker-compose even命令就會監控日誌:
{
    "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 [default1]
和docker exec命令功能相同,可以通過service name登陸到容器中
e.g. 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 [default1]
輸出服務的共有埠.
# docker-compose port web 8080   -- 8080為容器內部埠
0.0.0.0:8884

ps

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

Options:
-q    只顯示ID
顯示容器. 預設顯示name、command、state、ports

pull

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

Options:
--ignore-pull-failures  忽略pull失敗的映象,繼續pull其他映象.
pull compose檔案中所指明的映象.

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   Don't ask to confirm removal
    -v            期初載入到容器的任何匿名卷
    -a, --all     Also remove one-off containers created by
                  docker-compose run
Removes stopped service containers. 如果服務在執行,需要先docker-compose stop 停止容器

By default, anonymous volumes attached to containers will not be removed. You can override this with -v. To list all volumes, use docker volume ls.

Any data which is not in a volume will be lost.

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=""      設定工作目錄

啟動web伺服器,並執行bash命令.

$ docker-compose run web bash
根據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容器,單獨啟動指定容器:

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

scale

Usage: scale [SERVICE=NUM...]
設定服務的個數.
$ docker-compose scale web=2 worker=3

start

Usage: start [SERVICE...]
啟動服務.

stop

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

Options:
-t, --timeout TIMEOUT     關閉超時時間 (default10).
停止容器.

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檔案中未定義服務的容器






指令詳情摘自:
https://blog.csdn.net/wanghailong041/article/details/52162293







相關文章