如何打包Docker映象並推送到遠端倉庫
這個demo簡單演示瞭如何把一個flask的 Hello World 頁面打包成docker映象, 並且發到遠端映象倉庫的方法.
0.新建 Docker 映象
Dockerfile
首先, 新建應用檔案app.py, requirments.txt, 和一個docker檔案.
mkdir demo && cd demo touch Dockerfile app.py requirements.txt 複製程式碼
requirments.txt
flask redis 複製程式碼
app.py
from flask import Flask from redis import Redis, RedisError import os redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = 0 html = "<h3>Hello {name}!</h3>" \ "<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", "world"), visits=visits) if __name__ == "__main__": app.run(host='0.0.0.0', port=80) 複製程式碼
Dockerfile
# 基於python2.7官網映象 FROM python:2.7-slim # 設定工作目錄 WORKDIR /app # 複製當前目錄下的檔案到工作目錄 COPY . /app # 安裝pip庫 RUN pip install --trusted-host pypi.python.org -r requirements.txt # 暴露80埠 EXPOSE 80 # 定義環境變數 ENV NAME World # 容器啟動後執行命令, 執行app CMD ["python", "app.py"] 複製程式碼
準備好檔案就可以開始打映象了
docker build --tag=demo . 複製程式碼
檢視新映象
docker image ls -a 複製程式碼
執行映象
docker run -p 8000:80 demo 複製程式碼
開啟瀏覽器訪問 http://localhost:8000 , 就可以看到 hello world 了.
1. Docker映象倉庫
為了方便學習 Docker 我們可以安裝桌面客戶端的 Docker for Mac
/ Docker for Windows
.
推映象之前我們一般會給映象打標籤, 方便維護管理
打標籤命令:
docker tag image username/庫名:標籤 # 我們可以這樣敲 docker tag demo monk/demo:v1.0 複製程式碼
1.1 Docker Hub
到官方的映象倉庫Docker Hub 註冊登入, 推映象時就會在這裡看到你的image了, 公開的映象可以分享給別人使用.
推送映象之前需要先在 終端 登入 dockerhub:
docker login 複製程式碼
推送完我們可以在docker hub上看到這個映象.
docker push monk/demo:v1.0 複製程式碼
1.2 阿里雲
在國內docker hub的速度比較慢, 建議還是用國內的映象倉庫, 比如阿里的, 需要在阿里管理後臺容器映象服務設定倉庫.
在終端切換阿里的docker賬號
docker login --username=username registry.cn-shenzhen.aliyuncs.com 複製程式碼
阿里的說明了如何登入, 推送, 還有內網地址等操作, 跟著做就可以了.
2. 映象加速
阿里雲還有映象加速器, 其實就是一個加速連結.
在 Docker Desktop
設定 Prefrence > Daemon > Basic

Registy mirrors
用阿里給你分配的加速地址.