1.什么是DockerCompose? 編排和配置容器集群的工具。 編排:定義被部署的對象的各組成部分之間的耦合關(guān)系,部署流程中各個動作的執(zhí)行順序,部署過程所需要的依賴文件和被部署文件的存儲位置和獲取方式,以及如何驗(yàn)證部署成功。這些信息都會在編排工具中以指定的格式定義并保存下來,從而保證這個流程可以在新的環(huán)境中快速的復(fù)現(xiàn)。 場景:redis容器,tomcat容器,nginx容器,mysql容器,這4個容器的啟動是有順序性的,docker compose就是為了組合啟動的,而不是手動來啟動。(本例子講的是2個容器,redis和web) 2.Docker Compose安裝 下載docker-compose 二進(jìn)制文件 curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose- 黑魔法: 下載地址:https://github.com/docker/compose/releases 可以訪問外網(wǎng)的環(huán)境,在線安裝省心 還有一種服務(wù)器在內(nèi)網(wǎng),下載后安裝 3.DockerCompose使用入門 準(zhǔn)備環(huán)境 1) 創(chuàng)建測試項(xiàng)目文件夾 mkdir composetest cd composetest 默認(rèn)python2.7在centos都安裝了,就用python來演示,演示之前需要安裝pip工具,類似java的maven管理python模塊的工具 2) 編輯app.py并保存(描述:簡單的一個httpserver,主要是為了類似tomcat的一個sevlet,當(dāng)訪問一次,redis節(jié)點(diǎn)就增加一個,就可以看到相應(yīng)的輸出) from flask import Flask from redis import Redis app = Flask(name) redis = Redis(host=’redis’,port=6379) @app.route(‘/’) def hello(): redis.incr(‘hits’) return ‘Hello World! I have been seen %s times.’ %redis.get(‘hits’) if name == “main“: app.run(host=”0.0.0.0”, debug=True) 3) 在項(xiàng)目目錄創(chuàng)建requirements.txt并保存 flask redis 利用dockerfile創(chuàng)建docker鏡像(重頭戲) FROM python:2.7 ADD . /code WORKDIR /code RUN pip install -r requirements.txt CMD python app.py docker build -t web . 定義服務(wù) 創(chuàng)建docker-compose.yml文件 Compose文件定義了2個服務(wù),web和redis。 Web服務(wù): 1 從當(dāng)前目錄下的dockerfile創(chuàng)建 2 容器的5000端口與宿主機(jī)5000端口綁定 3 將項(xiàng)目目錄與容器內(nèi)的/code目錄綁定 4 web服務(wù)與redis服務(wù)建立連接 version: ‘2’ services: web: build: . ports:
volumes:
depends_on:
redis: image: redis 通過compose運(yùn)行app服務(wù) docker-compose up 前臺啟動 備注: docker-compose up –d (后臺啟動) docker-compose stop (停止運(yùn)行) Compose命令集:https://docs./compose/reference/ >>原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會,謝謝!>>原文鏈接地址:跟我一起學(xué)docker(12)–docker compose的使用 上一篇: 跟我一起學(xué)docker(11)–jenkins+github+Docker下一篇: 跟我一起學(xué)docker(13)–docker Machine的使用 |
|