1. 程式人生 > >Docker Compose安裝以及入門

Docker Compose安裝以及入門

開發十年,就只剩下這套架構體系了! >>>   

Docker Compose 是 Docker 官方編排(Orchestration)專案之一,負責快速在叢集中部署分散式應用

Compose 簡介

Compose 專案是 Docker 官方的開源專案,負責實現對 Docker 容器叢集的快速編排。Compose 定位是 「定義和執行多個 Docker 容器的應用(Defining and running multicontainer Docker applications)」,其前身是開源專案 Fig。

使用一個 Dockerfile 模板檔案,可以讓使用者很方便的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 專案,除了 Web 服務容器本身,往往還需要再加上後端的資料庫服務容器,甚至還包括負載均衡容器等。

Compose 恰好滿足了這樣的需求。它允許使用者通過一個單獨的 docker-compose.yml 模板檔案(YAML 格式)來定義一組相關聯的應用容器為一個專案(project)。

Compose 中有兩個重要的概念:

服務 ( service ):一個應用的容器,實際上可以包括若干執行相同映象的容器例項

專案 ( project ):由一組關聯的應用容器組成的一個完整業務單元,在 dockercompose.yml 檔案中定義。

Compose 的預設管理物件是專案,通過子命令對專案中的一組容器進行便捷地生命週期管理。可見,一個專案可以由多個服務(容器)關聯而成, Compose 面向專案進行管理

Compose 專案由 Python 編寫,實現上呼叫了 Docker 服務提供的 API 來對容器進行管理。因此,只要所操作的平臺支援 Docker API,就可以在其上利用 Compose 來進行編排管理。

安裝與解除安裝

Compose 可以通過 Python 的包管理工具 pip 進行安裝,也可以直接下載編譯好的二進位制檔案使用,甚至能夠直接在 Docker 容器中執行。前兩種方式是傳統方式,適合本地環境下安裝使用;最後一種方式則不破壞系統環境,更適合雲端計算場景。Docker for Mac 、 Docker for Windows 自帶 docker-compose 二進位制檔案,安裝 Docker 之後可以直接使用。Linux 系統請使用以下介紹的方法安裝。

二進位制包安裝

在 Linux 上的也安裝十分簡單,從 官方 GitHub Release 處直接下載編譯好的二進位制檔案即可。

例如,在 Linux 64 位系統上直接下載對應的二進位制包。

sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` >/usr/local/bin/docker-composesudo chmod +x/usr/local/bin/docker-compose

對於解除安裝如果是二進位制包方式安裝的,刪除二進位制檔案即可。

sudo rm/usr/local/bin/docker-compose

PIP 安裝

這種方式是將 Compose 當作一個 Python 應用來從 pip 源中安裝。執行安裝命令:

sudo pipinstall-U docker-compose

使用PIP安裝的時候,解除安裝可以使用如下命令:

sudopip uninstall docker-compose

簡單入門

下面我們模擬一個網站,該網站的作用是能夠記錄頁面的訪問次數。我們使用Flask開發,快取使用redis

編寫wen應用

新建一個資料夾web,在該資料夾下建立app.py檔案,內容如下:

fromflaskimportFlaskfromredisimportRedisapp = Flask(__name__)redis = Redis(host="redis",port=6379)@app.route("/")defhello():count = redis.incr('hits')return'hello world! {}'.format(count)if__name__ =="__main__":    app.run(host="0.0.0.0",debug=True)

編寫Dockerfile檔案

FROMpython:3.6-alpineADD . /codeWORKDIR /codeRUN pip install redis flaskCMD["python","app.py"]

docker-compose.yml

編寫 docker-compose.yml 檔案,這個是 Compose 使用的主模板檔案。

version:'3'services:web:build: .ports:            -"5000:5000"redis:images:"redis:alpine"

執行 compose 專案

docker-compose up

此時訪問本地 5000 埠,每次重新整理頁面,計數就會加 1。