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
[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