Py学习  »  docker

如何打包Docker镜像并推送到远程仓库

Dom_秋 • 5 年前 • 237 次点击  
阅读 9

如何打包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 用阿里给你分配的加速地址.

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29988
 
237 次点击