Docker Compose

簡介 

  Compose 項目是Docker官方的開源項目,負責實現對Docker容器集羣的快速編排。python

  Compose 默認模板(YAML格式)文件 docker-compose.yml git

  Compose 中的兩個概念:github

    服務(service) :一個應用的容器,實際上能夠包括若干運行相同鏡像的容器實例。chrome

    項目(project) :由一組關聯的應用容器組成一個完整業務單元,在docker-compose.yml文件中定義。docker

  

  Compose 的默認管理對象是項目,經過子命令對項目中的一組容器進行便捷地生命週期管理。緩存

  Compose 項目由Python編寫,實現了調用了Docker服務提供的API對容器進行管理。所以只要所操做的平臺支持Docker API ,就能夠在其上利用Compose來進行編排管理。服務器

 

安裝

# pip 安裝
[root@localhost ~]# pip install -U docker-compose
# 二進制包 官方定義好的二進制包,下載下來便可使用
[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
# 查看命令路徑
[root@localhost ~]# which docker-compose
/usr/local/python3.5/bin/docker-compose
# 查看版本信息
[root@localhost ~]# docker-compose  version 
docker-compose version 1.16.1, build 6d1ac219
docker-py version: 2.5.1
CPython version: 3.5.2
OpenSSL version: OpenSSL 1.0.2k-fips  26 Jan 2017
# pip卸載
[root@localhost ~]# pip uninstall  docker-compose
# 二進制卸載
[root@localhost ~]# rm /usr/local/bin/docker-compose

 

Compose 命令說明 

[root@localhost ~]# docker-compose
Define and run multi-container applications with Docker.

Usage:
  docker-compose [-f ...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  # -f, --file FILE 指定使用的Compose模板文件,默認爲docker-compose.yml 
  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)
  # -p, --project-name NAME 指定項目名稱,默認將使用所在目錄名稱做爲項目名稱。
  -p, --project-name NAME     Specify an alternate project name (default: directory name)
  --verbose                   Show more output
  --no-ansi                   Do not print ANSI control characters
  -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)
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the Compose file)

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  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
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push 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
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

 

build併發

# build
[root@localhost ~]# docker-compose build --help 
Build or rebuild services.

Services are built once and then tagged as `project_service`,
e.g. `composetest_db`. If you change a service's `Dockerfile` or the
contents of its build directory, you can run `docker-compose build` to rebuild it.

Usage: build [options] [--build-arg key=val...] [SERVICE...]

Options:
    --force-rm              Always remove intermediate containers.
	# --force-rm 		刪除構建過程當中的臨時容器。
    --no-cache              Do not use cache when building the image.
	# --no-cache		構建鏡像過程當中不適用緩存(這將加長構建過程)。
    --pull                  Always attempt to pull a newer version of the image.
	# --pull			始終嘗試經過拉取操做來獲取更新版本的鏡像。
    --build-arg key=val     Set build-time variables for one service.
	# --build-arg  key=val  設置變量(Dockerfile 中定義的ARG變量)
	# AGR 變量不像ENV變量始終存在鏡像中。不過ARG變量會以相似的方式對構建緩存產生影響。
	# 若是Dockerfile中定義的ARG變量的值與以前定義的變量值不同,那麼就有可能產生"cache miss"。
	# 好比RUN指令使用ARG定義的變量時,ARG變量的值變了以後,就會致使緩存失效。

 

killapp

# kill
[root@localhost ~]# docker-compose kill --help 
Force stop service containers.

Usage: kill [options] [SERVICE...]

Options:
    -s SIGNAL         SIGNAL to send to the container.
                      Default signal is SIGKILL.
	# 經過發送SIGKILL 信號強制中止服務容器。
	# 支持經過-s 參數來指定發送的信號,
	# 例如: docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml  kill -s SIGINT

 

logscurl

# logs 查看服務器的輸出
# 默認狀況下將對不一樣的服務輸出使用不一樣顏色來區分
# 可以使用 --no-color  關閉顏色輸出
[root@localhost ~]# docker-compose logs --help 
View output from containers.

Usage: logs [options] [SERVICE...]

Options:
    --no-color          Produce monochrome output.
	# --no-color 關閉顏色輸出
    -f, --follow        Follow log output.
	# -f 按照日誌格式輸出 
	# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml logs -f
    -t, --timestamps    Show timestamps.
	# -t  timestamps時間格式輸出
	# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml logs -ft
    --tail="all"        Number of lines to show from the end of the logs
                        for each container.
	# 查看日誌末尾顯示行數
	#  docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml logs -ft --tail=10

 

ps

# ps 列出項目中全部容器
# -q 返回容器的ID
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml ps -q

 

config

# config 
# 顯示配置文件信息
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml config
# --services 顯示服務名稱
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml config --services
# --volumes 顯示掛載信息
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml config  --volumes

 

pull

# pull 拉取服務依賴的鏡像
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml pull
# --ignore-pull-failures 忽略拉取鏡像過程當中的錯誤
# --parallel 併發拉取多個鏡像
# --quiet  不顯示進度信息
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml pull --ignore-pull-failures --parallel

 

restart

# restart 重啓項目中的服務
# -t, --timeout TIMEOUT 指定重啓前中止容器的超時(默認10s)

 

rm

# rm 刪除全部中止狀態的服務容器。
# -f, --force  強制刪除,包括非中止的容器。
# -s, --stop   先中止容器,而後刪除
# -v   刪除容器所掛載的數據卷
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml rm -sf

 

run

# run 在指定服務上執行一個命令
# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml run jenkins ping www.baidu.com
# 默認狀況下,若是存在關聯,則全部關聯的服務將會自動被啓動,除非這些服務已經在運行中。
# 該命令相似於啓動容器後運行指定的命令,相關卷、連接等都將會按照配置自動建立。
# 給定命令將會覆蓋原有的自動運行命令。
# 不會自動建立端口,以免衝突
# --no-deps  不自動啓動關聯的容器
# -d 在後臺運行服務容器。
# --name NAME 爲容器指定一個名字。
# --entrypoint CMD 覆蓋默認的容器啓動指令。
# -e KEY=VAL 設置環境變量值,可屢次使用選項來設置多個環境變量。
# -u, --user="" 指定運行容器的用戶或者 uid。
# --rm 運行命令後自動刪除容器,d 模式下將忽略
# -p, --publish=[] 映射容器端口到本地主機
# --service-ports 配置服務端口並映射到本地主機
# -T 不分配僞tty,意味着依賴tty的指令將沒法運行
# -v, --volume=[]       掛載卷,默認[] 

 

scale

# scale 設置指定服務運行的容器個數
docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml scale jenkins=5
# 通常狀況下,當指定數目多於改服務器低昂去實際運行容器,將新建立並啓動容器;反之,將中止容器。
# -t , --timeout TIMEOUT 中止容器時候的超時(默認10s)

 

start

# start 
# 啓動已經存在的服務容器。
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml start

 

stop

# stop 中止已處於運行狀態的容器,不刪除。能夠經過docker-compose start 再次啓動
# -t , --timeout TIMEOUT 中止容器時候的超時(默認10s)
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml stop
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml start

 

pause , unpause

# pause 暫停一個服務容器
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml pause

# unpause 恢復處於暫停狀態的服務
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml unpause

 

up

# up 
# 嘗試自動完成包括構建鏡像,從新建立服務,啓動服務,並關聯服務相關容器的一系列操做。
# 連接的服務將會被自動啓動,除非已經處於運行狀態。
# -d 在後臺運行服務容器。
# --no-color 不使用顏色來區分不一樣的服務的控制檯輸出。
# --no-deps 不啓動服務所連接的容器
# --force-recreate 強制從新建立容器,不能與--no-recreate 同時使用。
# --no-recreate 若是容器已經存在,則不從新建立,不能與--force-recreate 同時使用。
# --no-build 不自動構建缺失的服務鏡像。
# --abort-on-container-exit 若是任何容器中止,則中止全部容器,不能與-d 同時使用。
# -t, --timeout TIMEOU 中止容器時候的超時(默認10s)
# --remove-orphans 移除服務容器,不改變文件中的定義
# --exit-code-from SERVICE 返回所選服務容器的退出碼
# --scale SERVICE=NUM 將SERVICE 放到num個實例。覆蓋scale 在文件中設置
# [root@localhost ~]# docker-compose  -f /opt/compose-conf/jenkins/jenkins.yml up -d
相關文章
相關標籤/搜索