為什麼使用docker呢?是因為我看到Docker使用是了“Build once,Run anywhere”意思一次構建,任何地方運行的宣傳。
通過下面兩幅對比圖我們能瞭解容器化和虛擬機有什麼不同。
虛擬機架構
容器架構
通過這個對比圖我們能看到docker是建立在系統基本上的應用,在通過不同的鏡像實現APP應用的隔離。這樣能避免APP應用對操作系統的依賴,這樣可以構建好鏡像後任意安裝好docker的環境部署,降低對操作系統的依賴。這樣好處是在應用開發完成後,到部署階段避免系統依賴導致應用問題。開發階段就通過鏡像中運行,所有的依賴保持一致,可以無縫部署到生產環境。
1、檢查內核是否支持,需要3.10以上內核才支持
$ uname -r #檢查內核版本
4.4.0-47-generic #當前內核是4.4高於3.10符合要求
2、更新系統及軟件源啟用https支持
$ sudo apt-get update #更新軟件源列表
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common #安裝apt-transport-https、ca-certificates、curl和software-properties-common包
3、添加Docker的官方GPG密鑰
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4、設定docker更新版本
$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> xenial \
> stable"
5、更新軟件源列表及安裝docker-ce(社區版)
$ sudo apt-get update #更新軟件源列表
$ sudo apt-get install -y docker-ce #安裝docker-ce(社區版)
6、驗證docker是否安裝正確
$ sudo docker run hello-world # 用管理員權限運行docker
二、使用Pycharm在本機容器中開發
從PyCharm 2016.1 Professional Edition以上版本新增了開發工具支持docker和vagrant部署開發。
可以在項目新建的時候指定遠程python解釋器或者修改當前項目的解釋器都能切換到容器中運行。這裡演示使用Pycharm2017.1Professional Edition版將現有項目使用的python解釋器切換成容器中的python解釋器,使用docker容器作為項目的運行測試環境。
1、項目內容介紹
首先創建Dockerfile和docker-compose.yml兩個文件,Dockerfile是用來構建用於程序調試的容器環境配置,docker-compose.yml是用於如何運行由Dockerfile生成的容器配置。
Dockerfile File:
# 指定引用官方提供python3.6版本鏡像
FROM python:3.6
# 綁定宿主機5000端口
EXPOSE 5000
# 創建app目錄
RUN mkdir /app
# 指定工作目錄為app
WORKDIR /app
# 複製本地requirements.txt到容器/app下
COPY requirements.txt /app/requirements.txt
# 容器內運行命令,安裝依賴包
RUN pip install -r requirements.txt
# 複製所有內容到/app目錄下
COPY . /app
# 使用python解釋器運行flask-demo
CMD ["python", "flask-demo.py"]
docker-compose.yml file:
# Compose文件格式版本
version: '2'
# 定義服務
services:
# web服務
web:
# 構建
build: .
# 宿主機與容器的端口映射
ports:
- "5000:5000"
2、將本地python解釋器換成遠程python解釋器
在設置面板中,選擇Project:flask-demo選項中的Project Interpret,點擊右側齒輪,選擇Add Remote添加遠程解釋器,在彈出框中選擇Docker Compose,在Server中選擇上一步新建的遠程API,Configuration file是選擇用於遠程編譯時候的配置。
3、在容器中運行代碼
上面配置好環境後,按Alt+ F12調出控制檯輸入docker-compose up命令自動更加Dockerfile構建容器並使用docker-compose.yml中配置啟動容器。
4、構建好容器後,使用瀏覽器訪問http://0.0.0.0:5000或者http://localhost:5000訪問通過容器生成的網站。
更詳細內容請關注由電子工業出版社2017年10月出版的《python全棧開發實戰》全書400幅圖,包含各種坑解決方法。