Docker-Compose 簡介及常用命令
一. Docker-Compose 簡介
1. Docker-Compose 簡介
Docker-Compose項目是Docker官方的開源項目,負責實現對Docker容器集群的快速編排。
- Docker-Compose將所管理的容器分為三層,分別是工程(project),服務(service)以及容器(container)。
- Docker-Compose運行目錄下的所有文件(docker-compose.yml,extends文件或環境變量文件等)組成一個工程,若無特殊指定工程名即為當前目錄名。一個工程當中可包含多個服務,每個服務中定義了容器運行的鏡像,參數,依賴。一個服務當中可包括多個容器實例,Docker-Compose並沒有解決負載均衡的問題,因此需要借助其它工具實現服務發現及負載均衡。
Docker-Compose的工程配置文件默認為docker-compose.yml,可通過環境變量COMPOSE_FILE或-f參數自定義配置文件,其定義了多個有依賴關系的服務及每個服務運行的容器。使用一個Dockerfile模板文件,可以讓用戶很方便的定義一個單獨的應用容器。在工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個Web項目,除了Web服務容器本身,往往還需要再加上后端的數據庫服務容器,甚至還包括負載均衡容器等。Docker-Compose允許用戶通過一個單獨的docker-compose.yml模板文件(YAML 格式)來定義一組相關聯的應用容器為一個項目(project)。
Docker-Compose項目由Python編寫,調用Docker服務提供的API來對容器進行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose來進行編排管理。
2. Docker-Compose安裝
可以直接使用pip 進行安裝
建議先更新pip 然后在進行安裝
pip 更新命令
pip install --upgrade pip
安裝命令
pip install docker-compose
安裝過后以下命令查看是否安裝成功
docker-compose --version
3. Docker-Compose 卸載
卸載命令
pip uninstall docker-compose
二. Docker-Compose常用命令
1. Docker-Compose 命令格式
docker-compose [-f <arg>] [options][command][args]
常用命令選項如下:
-f -file FILE 可指定Compose 模版文件,默認為 docker-compose.yml
-p -project-name NAME指定項目名稱,默認將使用所在目錄名稱為項目名
-v --version 打印版本並退出
-verbose 輸出調試信息
-x-network-driver 使用 Docker 的可插拔網絡后端特性(需要 Docker 1.9+版本,可操作性有待商榷)
-x-network-deover DRIVER指定網絡后端的驅動,默認為 bridge(需要 Docker 1.9+版本)
2. Docker-Compose 拉取服務鏡像
docker-compose pull [options] [SERVICE...]
命令選項如下:
–ignore-pull-failures,忽略拉取鏡像過程中的錯誤
–parallel,多個鏡像同時拉取
–quiet,拉取鏡像過程中不打印進度信息
拉取服務依賴的鏡像
docker-compose pull
3. Docker-Compose 構建服務
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變量
服務容器一旦構建后,將會帶上一個標記名。可以隨時在項目目錄下運行docker-compose build來重新構建服務
4. Docker-Compose 啟動容器
docker-compose start [SERVICE...]
啟動已經存在的服務容器
docker-compose start
5. Docker-compose 構建並啟動容器
docker-compose up [option][--scale SERVICE=NUM...][SERVICE...]
常用命令選項如下:
-d 在后台運行服務器
-t -timeout TIMEOUT 停止容器是的超時(默認為 10 秒)
-f -file FILE 可指定Compose 模版文件,默認為 docker-compose.yml
-build 在啟動容器前自動構建服務鏡像
-no-build 不自動構建缺失的鏡像
常用命令實例
啟動所有服務
docker-compose up
在后台啟動所有服務
docker-compose up -d
重新構建鏡像
docker-compose up -d --build
-f 使用指定的 Compose 模版文件啟動服務,默認為 docker-compose.yml 文件
docker-compose -f docker-compose.yml up
6. Docker-Compose 查看容器
docker-compose ps [options][SERVICE...]
查看項目中運行中的容器
docker-compose ps
查看當前項目中的所有容器
docker-compose ps -a
7. Docker-Compose 停止容器
docker-compose stop [options] [SERVICE...]
命令選項如下:
-t —timeout TIMEOUT停止容器時候的超時(默認為 10 秒)
停止正在運行的容器
docker-compose stop
可使用以下命令再次啟動
docker-compose start
通過發送 SIGKILL 信號強制停止服務容器
docker-compsoe kill [options] [SERVICE]
命令選項如下:
-s 指定發送的信號
8. Docker-Compose 移除容器
docker-compose rm [options] [SERVICE...]
命令選項如下:
–f, –force,強制直接刪除,包括非停止狀態的容器
-v 刪除容器所掛載的數據卷
先停止容器
docker-compose stop
刪除所有停止狀態下的容器
docker-compose rm
9. Docker-Compose 停用移除所有容器以及網絡相關
docker-compose down [options]
命令選項如下:
-rmi type,刪除鏡像、類型必須是:all,刪除 compose 文件中定義的所有鏡像
local, 刪除鏡像名為空的鏡像
-v -volumes 刪除已經在 compose 文件中定義的和匿名的附在容器上的數據卷
-remove-orphans 刪除服務中沒有在 compose 中定義的容器
10. Docker-Compose 查看輸出日志
docker-compose logs [options][SERVICE...]
默認情況下,docker-compsoe 將對不同的服務輸出使用不同的顏色用以區分,但是可以通過-no-color 關閉顏色
查看服務容器的輸出
docker-compose logs
11. Docker-Compose 重啟服務
docker-compose restart [options] [SERVICE...]
命令選項如下:
-t –timeout TIMEOUT 指定重啟前停止容器的超時(默認為10秒)
重啟項目服務
docker-compose restart
12. Docker-Compose 暫停、恢復容器
暫停容器
docker-compose pause [SERVICE...]
恢復處於暫停狀態的容器
docker-compsoe unpause [SERVICE...]
13. Docker-Compose 執行命令
docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
在指定容器執行 ping 命令
docker-compose run Ubuntu ping www.baidu.com
14. Docker-Compose 指定運行容器數量
設置指定服務運行的容器個數
docker-compose scale web=3 db=2
15. Docker-Compose 推送鏡像
docker-compsoe push [options][SERVICE...]
命令選項如下:
–ignore-push-failures 忽略推送鏡像過程中的錯誤