跟我一起學docker(12)--docker compose的使用
編排和配置容器集群的工具。
編排:定義被部署的對象的各組成部分之間的耦合關系,部署流程中各個動作的執行順序,部署過程所需要的依賴文件和被部署文件的存儲位置和獲取方式,以及如何驗證部署成功。這些信息都會在編排工具中以指定的格式定義並保存下來,從而保證這個流程可以在新的環境中快速的復現。
場景:redis容器,tomcat容器,nginx容器,mysql容器,這4個容器的啟動是有順序性的,docker compose就是為了組合啟動的,而不是手動來啟動。(本例子講的是2個容器,redis和web)
2.Docker Compose安裝
下載docker-compose 二進制文件
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname-s`-`uname -m` > /usr/local/bin/docker-compose && chmod +x/usr/local/bin/docker-compose
黑魔法:
下載地址:https://github.com/docker/compose/releases
可以訪問外網的環境,在線安裝省心
還有一種服務器在內網,下載後安裝
3.DockerCompose使用入門
準備環境
1) 創建測試項目文件夾
mkdir composetest
cd composetest
默認python2.7在centos都安裝了,就用python來演示,演示之前需要安裝pip工具,類似java的maven管理python模塊的工具
2) 編輯app.py並保存(描述:簡單的一個httpserver,主要是為了類似tomcat的一個sevlet,當訪問一次,redis節點就增加一個,就可以看到相應的輸出)
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) 在項目目錄創建requirements.txt並保存
flask
redis
利用dockerfile創建docker鏡像(重頭戲)
FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py
docker build -t web .
定義服務
創建docker-compose.yml文件
Compose文件定義了2個服務,web和redis。
Web服務:
1 從當前目錄下的dockerfile創建
2 容器的5000端口與宿主機5000端口綁定
3 將項目目錄與容器內的/code目錄綁定
4 web服務與redis服務建立連接
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
通過compose運行app服務
docker-compose up
前臺啟動
備註:
docker-compose up –d (後臺啟動)
docker-compose stop (停止運行)
Compose命令集:https://docs.docker.com/compose/reference/
跟我一起學docker(12)--docker compose的使用