想試試Docker?六分鐘入門學習

開發時,咱們老是會碰到這樣一些問題:

  • 在多臺服務器重複安裝同一個環境
  • 開發時項目在本地正常運行,一放到服務器上就掛了
  • 測試人員提的bug,在本身的電腦上並無出現,懷疑是環境問題和測試員左右爭辯
  • 測試數據不隔離,因數據問題產生錯誤
  • 管理環境配置文件麻煩

爲了解決以上問題,咱們但願能夠這樣:

  • 經過簡單的幾條命令,就能配置好運行環境
  • 服務之間能夠自由組合,自定義特殊環境需求
  • 義正詞嚴的接受測試員拋過來的bug

幸運的是,docker實現了咱們的願望。 docker甚至在部分狀況下,搭建環境就和安裝app同樣簡單,只須要一條命令行就可讓服務跑起來。html

例如要搭建一個nginx文件服務:python

docker run -v build:/etc/nginx/html -p 80:80 nginx
複製代碼

不只過程極其簡單,屢次重複嘗試,運行的結果也能保持一致。nginx

一個簡單的網站

docker官方提供了一個新手示例git

項目目錄結構
|-- templates // 頁面模版
  |-- index.html
|-- Dockerfile // docker鏡像配置文件
|-- app.py // python服務入口文件
|-- requirements.txt // python依賴文件
複製代碼

自定義一個應用,是經過配置Dockerfile來實現的:github

# 依賴的鏡像
FROM alpine:3.5

# 安裝 python 和 pip
RUN apk add --update py2-pip

# 更新 pip
RUN pip install --upgrade pip

# 安裝應用須要的python依賴包
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt

# 複製應用運行須要用到的文件
COPY app.py /usr/src/app/
COPY templates/index.html /usr/src/app/templates/

# 容器須要暴露給外部的接口
EXPOSE 5000

# 運行應用
CMD ["python", "/usr/src/app/app.py"]
複製代碼

在項目根路徑執行構建鏡像命令:docker

docker build -t app:1.0 .
複製代碼

成功後,就可使用生成的鏡像運行應用了:flask

docker run -p 80:5000 app:1.0
複製代碼

當咱們開始完整嘗試用docker部署項目時,會遇到各類須要google的問題:bash

  • 多個服務的容器之間是如何聯繫的?
  • Dockerfilevolume爲何沒法實現run命令 -v的效果?
  • CMDENTRYPOINT 有什麼區別?
  • 構建鏡像時,項目編譯速度異常的慢怎麼辦?等等

相關文章
相關標籤/搜索