Docker Compose安裝以及入門

Docker Compose 是 Docker 官方編排(Orchestration)項目之一,負責(zé)快速在集群中部署分布式應(yīng)用

Compose 簡介

Compose 項目是 Docker 官方的開源項目,負責(zé)實現(xiàn)對 Docker 容器集群的快速編排。Compose 定位是 「定義和運行多個 Docker 容器的應(yīng)用(Defining and running multicontainer Docker applications)」,其前身是開源項目 Fig。

使用一個 Dockerfile 模板文件,可以讓用戶很方便的定義一個單獨的應(yīng)用容器。然而,在日常工作中,經(jīng)常會碰到需要多個容器相互配合來完成某項任務(wù)的情況。例如要實現(xiàn)一個 Web 項目,除了 Web 服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫服務(wù)容器,甚至還包括負載均衡容器等。

Compose 恰好滿足了這樣的需求。它允許用戶通過一個單獨的 docker-compose.yml 模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應(yīng)用容器為一個項目(project)。

Compose 中有兩個重要的概念:

服務(wù) ( service ):一個應(yīng)用的容器,實際上可以包括若干運行相同鏡像的容器實例

項目 ( project ):由一組關(guān)聯(lián)的應(yīng)用容器組成的一個完整業(yè)務(wù)單元,在 dockercompose.yml 文件中定義。

Compose 的默認管理對象是項目,通過子命令對項目中的一組容器進行便捷地生命周期管理??梢?,一個項目可以由多個服務(wù)(容器)關(guān)聯(lián)而成, Compose 面向項目進行管理

Compose 項目由 Python 編寫,實現(xiàn)上調(diào)用了 Docker 服務(wù)提供的 API 來對容器進行管理。因此,只要所操作的平臺支持 Docker API,就可以在其上利用 Compose 來進行編排管理。

安裝與卸載

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

二進制包安裝

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

例如,在 Linux 64 位系統(tǒng)上直接下載對應(yīng)的二進制包。

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 當(dāng)作一個 Python 應(yīng)用來從 pip 源中安裝。執(zhí)行安裝命令:

sudo pipinstall-U docker-compose

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

sudopip uninstall docker-compose

簡單入門

下面我們模擬一個網(wǎng)站,該網(wǎng)站的作用是能夠記錄頁面的訪問次數(shù)。我們使用Flask開發(fā),緩存使用redis

編寫wen應(yīng)用

新建一個文件夾web,在該文件夾下創(chuàng)建app.py文件,內(nèi)容如下:

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 端口,每次刷新頁面,計數(shù)就會加 1。

每天進步一點點

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容