如何打包Docker鏡像並推送到遠程倉庫

這個demo簡單演示瞭如何把一個flask的 Hello World 頁面打包成docker鏡像, 而且發到遠程鏡像倉庫的方法.html

0.新建 Docker 鏡像

首先, 新建應用文件app.py, requirments.txt, 和一個docker文件.python

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"]
複製代碼

準備好文件就能夠開始打包鏡像了redis

docker build --tag=demo .
複製代碼

查看新鏡像docker

docker image ls -a
複製代碼

運行鏡像flask

docker run -p 8000:80 demo
複製代碼

打開瀏覽器訪問 http://localhost:8000, 就能夠看到 hello world 了.瀏覽器

1. Docker鏡像倉庫

爲了方便學習 Docker 咱們能夠安裝桌面客戶端的 Docker for Mac / Docker for Windows.bash

推鏡像以前咱們通常會給鏡像打標籤, 方便維護管理app

打標籤命令:python2.7

docker tag image username/庫名:標籤

# 咱們能夠這樣敲
docker tag demo monk/demo:v1.0
複製代碼
1.1 Docker Hub

到官方的鏡像倉庫 Docker Hub 註冊登陸, 推鏡像時就會在這裏看到你的image了, 公開的鏡像能夠分享給別人使用.socket

推送鏡像以前須要先在終端登陸 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
複製代碼

阿里管理後臺說明了如何登陸, 推送, 還有內網地址等操做, 跟着作就能夠了, 步驟跟 DockerHub 的差很少只是換了阿里的地址.

2. 鏡像加速

阿里雲還有鏡像加速器, 其實就是一個加速連接.

Docker Desktop 設置 Prefrence > Daemon > Basic

Registy mirrors 用阿里給你分配的加速地址, 而後應用重啓 Docker for Mac / Docker for Windows.

完.

相關文章
相關標籤/搜索