欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker 容器編排利器Compose(起步篇)

 更新時(shí)間:2018年06月08日 10:19:24   作者:一書(shū)生VOID的博客  
這篇文章主要介紹了Docker 容器編排利器Compose(起步篇),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一個(gè)大型的Docker組成的微服務(wù)應(yīng)用中,容器的數(shù)量是非常龐大的,如果依賴(lài)傳統(tǒng)的人工配置方式進(jìn)行維護(hù),對(duì)于開(kāi)發(fā)和運(yùn)維來(lái)說(shuō)簡(jiǎn)直就是噩夢(mèng)。Compose的出現(xiàn)正是為了解決這個(gè)問(wèn)題。

Compose簡(jiǎn)介

Compose的前身是Fig,F(xiàn)ig被Docker收購(gòu)之后正式更名為Compose,Compose向下兼容Fig。Compose是一個(gè)用于定義和運(yùn)行多容器Docker應(yīng)用的工具,只需要一個(gè)Compose的配置文件和一個(gè)簡(jiǎn)單的命令就可以創(chuàng)建并運(yùn)行應(yīng)用所需的所有容器。在配置文件中,所有容器通過(guò)services來(lái)定義,并使用docker-compose命令啟動(dòng)或停止容器以及所有依賴(lài)容器。

安裝Compose

Compose的安裝方式有多種,這里推薦使用curl命令安裝,在安裝之前,要確保你的機(jī)器上已經(jīng)安裝了Docker,可以運(yùn)行sudo docker version命令來(lái)確認(rèn)是否已安裝了Docker。截至目前,Compose的最新發(fā)布版為1.11.2,下面演示在一臺(tái)已經(jīng)安裝好Docker的Linux主機(jī)上安裝Compose。

安裝很簡(jiǎn)單,只需要執(zhí)行下面的命令即可:

復(fù)制代碼 代碼如下:
sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

等待安裝完畢后,執(zhí)行下面的命令,為docker-compose添加可執(zhí)行權(quán)限:

chmod +x /usr/local/bin/docker-compose

輸入docker-compose --version命令可以查看安裝結(jié)果。

除了這種安裝方式之外,還可以通過(guò)Python的pip命令安裝或?qū)ompose安裝成Docker容器,詳情請(qǐng)參見(jiàn)https://docs.docker.com/compose/install/#install-as-a-container。

如果要卸載Compose,可以執(zhí)行sudo rm /usr/local/bin/docker-compose命令。

Compose入門(mén)

下面我們通過(guò)一個(gè)簡(jiǎn)單的例子演示Compose的使用步驟,使用Python構(gòu)建一個(gè)Web應(yīng)用,該應(yīng)用使用Flask框架,并在Redis中維護(hù)一個(gè)命中計(jì)數(shù)(即使你不熟悉Python也沒(méi)有關(guān)系,你甚至不需要安裝Python和Redis,我們會(huì)從容器中獲取這些依賴(lài)環(huán)境)。

創(chuàng)建工程

首先需要一個(gè)文件夾作為項(xiàng)目文件夾:

mkdir composetest
cd composetest

在項(xiàng)目文件夾下創(chuàng)建一個(gè)app.py的文件,并將下面的代碼拷貝并粘貼到該文件中:

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
  count = redis.incr('hits')
  return 'Hello World! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
  app.run(host="0.0.0.0", debug=True)

在項(xiàng)目文件夾下創(chuàng)建一個(gè)requirements.txt的文件,并將下面的代碼拷貝并粘貼到該文件中:

flask
redis

到此,我們已經(jīng)完成了新建項(xiàng)目,編碼,添加依賴(lài)等工作。

創(chuàng)建Dockerfile

下面我們創(chuàng)建一個(gè)Dockerfile文件用于構(gòu)建Docker鏡像,該鏡像包含了運(yùn)行該Web應(yīng)用的所有依賴(lài),包括Python運(yùn)行環(huán)境。

在項(xiàng)目文件夾下創(chuàng)建一個(gè)Dockerfile文件,并將下面的內(nèi)容拷貝并粘貼到該文件中:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

大概解釋一下這個(gè)配置文件:

  1. 使用python-3.4-alpine作為基礎(chǔ)鏡像
  2. 將當(dāng)前目錄添加到鏡像中/code目錄下
  3. 將/code設(shè)置為工作目錄
  4. 安裝Python依賴(lài)
  5. 設(shè)置默認(rèn)執(zhí)行命令

在Compose文件中定義services

在項(xiàng)目文件夾下創(chuàng)建一個(gè)docker-compose.yml文件,并將下面的內(nèi)容拷貝并粘貼到該文件中:

version: '2'
services:
 web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
 redis:
  image: "redis:alpine"

該配置文件中包含兩個(gè)services,即web和redis。web會(huì)使用當(dāng)前目錄中的Dockerfile文件構(gòu)建鏡像,并將容器的5000端口暴露給主機(jī),然后將項(xiàng)目文件夾掛載到容器中的/code目錄下;redis使用官方發(fā)布的鏡像構(gòu)建。

構(gòu)建并運(yùn)行

執(zhí)行下面的命令構(gòu)建并運(yùn)行容器:

sudo docker-compose up

容器構(gòu)建完成并啟動(dòng)后,可以在瀏覽器中輸入http://localhost:5000查看結(jié)果。頁(yè)面會(huì)打印“Hello World! I have been seen 1 times.”,刷新頁(yè)面后,計(jì)數(shù)會(huì)累加變成2。

更新應(yīng)用

由于項(xiàng)目文件夾掛載到了容器中,所以我們可以直接修改項(xiàng)目文件夾的應(yīng)用,修改的結(jié)果立即反應(yīng)到容器中,而不用重新啟動(dòng)容器。將app.py文件中的hello方法中的返回值修改成如下:

return 'Hello from Docker! I have been seen {} times.\n'.format(count)

保存后刷新瀏覽器,發(fā)現(xiàn)打印結(jié)果已經(jīng)更新。

Compose的其他命令

上面提到的Componse使用命令構(gòu)建并啟動(dòng)容器,是以前臺(tái)的方式啟動(dòng)的,如果希望以后臺(tái)啟動(dòng),可以添加參數(shù)-d,比如下面這樣:

sudo docker-compose up -d

docker-compose ps命令可以查看正在運(yùn)行的容器:

liuwei@liuwei-Ubuntu:~$ sudo docker-compose ps
Name           Command        State      Ports
-------------------------------------------------------------------------------------
composetest_redis_1  docker-entrypoint.sh redis ...  Up   6379/tcp
composetest_web_1   python app.py          Up   0.0.0.0:5000->5000/tcp

如果使用sudo docker-compose up -d命令以后臺(tái)方式啟動(dòng),可以用docker-compose stop命令停止。docker-compose down --volumes命令可以停止容器并將其刪除, --volumns表示同時(shí)刪除redis數(shù)據(jù)文件目錄。

有關(guān)Compose的更多命令,可以通過(guò)sudo docker-compose --help查看。

以上就是Compose的一個(gè)基本使用過(guò)程,可以發(fā)現(xiàn),Compose將docker run命令整合到了一個(gè)docker-compose.yml配置文件中,對(duì)于大型Docker集群的管理是很方便的,例可以將多個(gè)service組合成更復(fù)雜的service組,為每個(gè)service指定不同的Dockerfile,然后把它們link在一起。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù)的示例教程

    spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù)的示例教程

    這篇文章主要介紹了spring-boot構(gòu)建docker鏡像上傳倉(cāng)庫(kù),受限創(chuàng)建一個(gè)簡(jiǎn)單spring-boot-web項(xiàng)目,查看鏡像上傳倉(cāng)庫(kù)這時(shí)候有兩種解決方案,對(duì)docker鏡像上傳倉(cāng)庫(kù)相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • docker常用命令及設(shè)置開(kāi)機(jī)自啟方式

    docker常用命令及設(shè)置開(kāi)機(jī)自啟方式

    這篇文章主要介紹了docker常用命令及設(shè)置開(kāi)機(jī)自啟方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • docker-compose管理容器network與ip問(wèn)題

    docker-compose管理容器network與ip問(wèn)題

    這篇文章主要介紹了docker-compose管理容器network與ip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mac下docker 安裝 ES的詳細(xì)過(guò)程

    mac下docker 安裝 ES的詳細(xì)過(guò)程

    這篇文章主要介紹了mac下docker 安裝 ES的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù)執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu)的方法

    docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù)執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu)的方法

    這篇文章主要介紹了docker運(yùn)行PostgreSQL數(shù)據(jù)庫(kù)維護(hù),執(zhí)行腳本備份數(shù)據(jù)庫(kù)與更新表結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • k8s 與docker空間使用分析與清理方法

    k8s 與docker空間使用分析與清理方法

    使用Docker 運(yùn)行業(yè)務(wù)一段時(shí)間后,可能會(huì)出現(xiàn)宿主節(jié)點(diǎn)的磁盤(pán)容量占用高,導(dǎo)致宿主機(jī)磁盤(pán)空間不足等異常,對(duì)業(yè)務(wù)造成影響,本文對(duì) Docker 的空間占用進(jìn)行匯總分析,需要的朋友可以參考下
    2022-12-12
  • Docker?發(fā)布自定義鏡像到公共倉(cāng)庫(kù)的方法實(shí)現(xiàn)

    Docker?發(fā)布自定義鏡像到公共倉(cāng)庫(kù)的方法實(shí)現(xiàn)

    在本文我們將學(xué)習(xí)如何使用Docker從公共倉(cāng)庫(kù)拉取Nginx鏡像,定制該鏡像,添加自定義配置文件,并將定制后的鏡像發(fā)布到公共倉(cāng)庫(kù),同時(shí)指定自定義的名稱(chēng)、描述和版本號(hào),感興趣的可以了解一下
    2024-01-01
  • 詳解Docker下使用Elasticsearch可視化Kibana

    詳解Docker下使用Elasticsearch可視化Kibana

    本篇文章主要介紹了詳解Docker下使用Elasticsearch可視化Kibana,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • docker刷新配置、修改默認(rèn)驅(qū)動(dòng)方式

    docker刷新配置、修改默認(rèn)驅(qū)動(dòng)方式

    這篇文章主要介紹了docker刷新配置、修改默認(rèn)驅(qū)動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • docker中安裝quagga詳細(xì)介紹

    docker中安裝quagga詳細(xì)介紹

    這篇文章主要介紹了docker中安裝quagga詳細(xì)介紹的相關(guān)資料,這里提供了詳細(xì)的步驟,及注意事項(xiàng),需要的朋友可以參考下
    2016-10-10

最新評(píng)論