介紹: docker compose 是 docker 官方推出的一款單機容器編排工具, 和 docker swarm, docker machine 並稱爲 docker 容器編排三劍客, 雖然其被 k8s 吊打, 可是因爲其簡單易學在中小規模的集羣中仍是佔有至關的一部分地位的 使用Compose的步驟: 一、定義您的應用程序環境,Dockerfile以即可以在任何地方進行復制 二、定義構成應用程序的服務,docker-compose.yml 以便它們能夠在隔離環境中一塊兒運行 三、運行 docker-compose up 和 Compose starts 運行整個應用程序 compose 的特性: 一、單個主機上的多個環境隔離 二、建立容器時保留卷數據 三、僅從新建立已更改的容器 四、變量和在環境之間移動合成 安裝: docker compose 依賴全部的工做依賴於 docker, 在安裝 compose 前請確保已在本地或遠程主機中安裝 docker 二進制安裝: curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose pip安裝: pip install docker-compose 一個簡單的例子: mkdir composetest && cd composetest #建立一個專用目錄,用於編寫和保存 compose 文件 cat app.py #編寫一個 flask web 應用做爲測試 import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) #鏈接 redis # 定義函數 def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() # 每訪問一次返回的 count 加 1 return 'Hello World! I have been seen {} times.\n'.format(count) if __name__ == "__main__": #運行 web 應用 app.run(host="0.0.0.0", debug=True) cat Dockerfile #編寫docker file 文件以便 compose 能夠根據 docker file 動態構建鏡像 FROM python:3.4-alpine ADD . /code WORKDIR /code RUN pip install flask redis CMD ["python", "app.py"] cat docker-compose.yml #編寫 compose 文件定義容器間的關係 version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code redis: image: "redis:alpine" docker-compose up #啓動 docker compose 定義的 docker 集羣 curl http://127.0.0.1:5000/ #訪問 Web APP # 示例來源 # https://docs.docker.com/compose/gettingstarted/#step-5-edit-the-compose-file-to-add-a-bind-mount docker-compose 命令: 介紹: 一、docker-compose 命令的執行都必須指定或者在當前目錄下存在 compose 文件, 且輸出的內容都是這個 compose.yml 文件定義的集羣內的信息 二、每一個集羣中能夠擁有多個 services, services 由 compose.yml 的 services 定義 選項: -f 指定 compose 文件路徑(能夠指定多個) 子命令: create 建立 compose 集羣, 但不啓動(已廢棄, 使用 up --no-start 代替) down 中止或刪除容器, 網絡, 鏡像和數據卷 exec 運行容器中的命令或者鏈接容器 help 查看幫助信息 images 列出 compose 集羣所用的鏡像 kill kill 掉 compose 集羣 logs 獲取 compose 集羣日誌 pause 暫停 compose 集羣 ps 列出正在運行的容器 pull 拉取 compose.yml 文件中定義的全部 docker 鏡像 push 上傳 compose.yml 文件中定義的全部 docker 鏡像 restart 重啓 compose 集羣 rm 刪除一箇中止的容器或者 compose 集羣 run 和 exec 相同 scale 更改 compose 集羣內指定的 services 的副本數量 start 啓動 compose 集羣 stop 中止 compose 集羣 top 顯示 compose 集羣中運行的進程及其狀態 unpause 恢復被暫停的 compose 集羣 up 建立並啓動一個 compose 集羣 version 輸出 compose 版本