Docker-Compose 簡介及常用命令


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 忽略推送鏡像過程中的錯誤


免責聲明!

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



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