Python快速入門(鏡像)
本文主要演示如何在本地創建鏡像,並使用該鏡像在蜂巢上部署 Python 應用。示例采用 Python 的 Flask 框架構建了一個簡單的 Web 應用。
目錄
安裝 Docker 工具
在Windows 或 Mac 環境下 ,安裝 Boot2docker、DockerToolBox 等工具。
具體請參考:Install Docker Engine。
注:Docker 客戶端版本要求 1.7 及以上。
創建 Python 應用
本地創建 Python 應用 hello.py,且該應用的源碼如下所示:
#-*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run(host="0.0.0.0", port=80)注意如下問題:
- Python 語言的縮進問題;
- IP 應指定為 0.0.0.0 (不要指定為 127.0.0.1 或 localhost,否則隻能本機訪問);
- 端口需要與服務部署時的負載均衡目的端口(默認 80)一致。
創建 Dockerfile
本地創建的 Dockerfile,具體內容如下所示,主要進行了如下操作:- 更新 Python 版本;
- 安裝 Pip 與 Flask;
- 添加本地的 Python 應用(本示例為 hello.py)並執行。
FROM hub.c.163.com/nce2/python:2.7 # Sources RUN echo "deb https://mirrors.163.com/debian wheezy main non-free contrib" > /etc/apt/sources.list RUN echo "deb https://mirrors.163.com/debian wheezy-proposed-updates main contrib non-free" >> /etc/apt/sources.list RUN echo "deb-src https://mirrors.163.com/debian wheezy main non-free contrib" >> /etc/apt/sources.list RUN echo "deb-src https://mirrors.163.com/debian wheezy-proposed-updates main contrib non-free" >> /etc/apt/sources.list RUN \ apt-get update -y && \ apt-get remove -y python && \ apt-get install -y python RUN wget -q "https://bootstrap.pypa.io/get-pip.py" && \ python get-pip.py > /dev/null && \ pip install Flask ADD hello.py /root/hello.py WORKDIR /root/ CMD python hello.py
注意:此 Dockerfile 隻能在 Windows 和 Mac 上麵創建成功,在 Linux 係統上則會報錯。
創建本地鏡像
切換到 Dockerfile 所在的目錄下,然後執行如下命令生成本地鏡像:
docker build -t flaskdemo .
執行的過程如下圖所示:
推送本地鏡像
上傳本地鏡像至鏡像倉庫的方法請參考 如何推送本地鏡像。
上傳成功後,可在蜂巢的鏡像倉庫列表查看。
創建集群
上傳鏡像成功後,可利用自定義鏡像創建容器或服務。對於一般的 Web 應用,蜂巢建議采用集群的方式進行創建,可以提供負載均衡的服務。
1. 登錄蜂巢控製台;
2. 點擊左側導航菜單的「集群管理」;
3. 選擇「自定義鏡像」;
4. 選中本地推送的鏡像,開始創建集群:
添加監聽
在負載均衡實例中添加監聽,具體操作請見 創建負載均衡。並且,負載均衡的目的端口號需與集群監聽的端口號保持一致(負載均衡的端口號為對外暴露的端口)。
添加監聽時選擇需要關聯的容器或集群,填寫完相應信息,點擊「立即添加」。
部署完畢
在負載均衡列表中查看對應實例的公網 IP :
在瀏覽器中輸入該 IP 地址及設置的端口(本例設置為 80,故省略),即可訪問部署的 Python 應用:
FAQ
- 為什麼 flaskdemo 的容器創建成功之後,卻無法運行?
- 使用上傳的鏡像創建容器時,出現「私有網 IP 綁定失敗」時,是什麼原因?
- 為什麼服務創建成功以後,輸入 IP 地址後出現以下界麵?
檢查 hello.py 文件是否輸入錯誤,邏輯獨立的語句前麵不能留有空格。
可能是 hello.py 文件存在問題。
端口配置出現錯誤,端口應當設置成:源端口:80 目的端口:80。
支持文檔
最後更新:2017-01-03 10:48:58