Docker Compose 容器編排

1. 前言

Docker Compose 是 Docker 容器進行編排的工具,定義和運行多容器的應用,能夠一條命令啓動多個容器。python

使用Compose 基本上分爲三步:git

  1. Dockerfile 定義應用的運行環境
  2. docker-compose.yml 定義組成應用的各服務
  3. docker-compose up 啓動整個應用

2. 安裝Compose

Compose repository release page on GitHub 最新版的Docker Compose,例如:github

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

安裝成功後,查看版本web

$ docker-compose --version
docker-compose version 1.14.0, build 1719ceb

3. 使用Compose

3.1 建立一個Python應用, 使用Flask,將數值記入Redis

  1. 建立一個項目目錄
# mkdir composetest
# cd composetest
  1. 在項目目錄下,建立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)
  1. 在項目目錄下,建立requirements.txt文件
flask
redis

3.2 建立 Dockerfile

在項目目錄下,建立Dockerfileredis

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

對上面的Dockerfile作一下簡單說明:docker

  • 容器使用Python 3.4的鏡像
  • 將當前目錄下文件拷貝到容器內/code
  • 指定工做目錄爲/code
  • 安裝python須要的庫:flask, redis
  • 容器執行命令 python app.py

3.3 建立Compose腳本

在項目目錄下,建立docker-compose.yml文件flask

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

3.4 啓動應用

會執行編排腳本,分別製做和抓取web,redis鏡像,啓動容器瀏覽器

$ docker-compose up
 Pulling image redis...
 Building web...
 Starting composetest_redis_1...
 Starting composetest_web_1...
 redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3
 web_1   |  * Running on http://0.0.0.0:5000/
 web_1   |  * Restarting with stat

3.5 訪問應用

每刷新一下頁面,次數加1
app

3.6 更新應用

  1. 修改app.py內容,而後保存,例如:
return 'Hello from Docker! I have been seen {} times.\n'.format(count)
  1. 刷新瀏覽器頁面,發現頁面內容改變,而且次數依然在遞增

4. 體驗其餘命令

  1. 使用daemon模式啓動,而且查看容器狀態
$ docker-compose up -d
Starting composetest_redis_1...
Starting composetest_web_1...
$ docker-compose ps
Name                 Command            State       Ports
-------------------------------------------------------------------
composetest_redis_1   /usr/local/bin/run         Up
composetest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp
  1. 查看容器環境變量
$ docker-compose run web env
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=bdc78b829f9f
TERM=xterm
LANG=C.UTF-8
GPG_KEY=97FC712E4C024BBEA48A61ED3A5CA953F73C700D
PYTHON_VERSION=3.4.6
PYTHON_PIP_VERSION=9.0.1
HOME=/root
  1. 中止Compose啓動的容器
$ docker-compose stop
  1. 中止和刪除全部容器
$ docker-compose down
相關文章
相關標籤/搜索