发布你的个人docker镜像

简介

  • 假如你有一个比较好的docker镜像怎么发布出来供大家使用呢?
  • 你是否遇到过国外某些镜像很难下载下来呢?
  • 你是否想过拥有一个自己的镜像仓库呢?

本文将介绍如何使用Docker Hub阿里云的容器镜像服务来创建自己的docker镜像仓库

Dockerfile

以下为本文构建镜像时所使用的Dockerfile

1
2
FROM k8s.gcr.io/etcd-amd64:3.1.12
MAINTAINER yancai yancai915@gamil.com

文件托管于https://github.com/yancai/myDockerfiles/blob/master/kubernetes/etcd-amd64/Dockerfile

Docker Hub

  1. 打开https://hub.docker.com

  2. 注册一个Docker Hub用户,并登录

  3. 绑定GitHub账号
    点击【Setting】 - 【Linked Accounts & Service】绑定Github账号

    选择Public and Private

    跳转至GitHub页面,授权即可

    授权后可以看到已经绑定成功

  4. 创建构建计划
    点击【Create】-【Create Automated Build】,选择GitHub

    选择Dockerfile所在的仓库

    填写镜像名称和介绍信息后点击【Create】

    设置构建计划
    选择【Type】,选择BranchTag
    填写【Name】,填写BranchTag的名称
    填写【Dockerfile Location】,此路径为相对于GitHub仓库代码根目录的Dockerfile所在的路径
    填写【Docker Tag Name】,版本信息
    完成后点击【Save Changes】保存

  5. 触发构建
    首次保存构建信息后,如需开始构建需要手动点击【Trigger】触发构建。稍等片刻即可完成构建。
    之后在GitHub上修改了相关代码提交后会自动触发Docker Hub构建。

  6. 下载镜像
    构建完成后可以根据【Repo Info】和【Tags】中的镜像信息下载镜像,例如本示例下载方式为:

    1
    sudo docker pull yancai/demo-image:3.1.12

Docker Hub提供的镜像构建服务挺好用的,唯一就是构建好之后下载镜像时候,由于网络原因可能会十分慢。可以借用国内的一些类似Docker Hub的镜像服务来进行镜像构建和下载。
以下将介绍如何在阿里云容器Hub上进行Docker镜像构建和下载。

阿里云 镜像容器服务

  1. 打开https://dev.aliyun.com

  2. 注册一个阿里云账号,并登录,进入容器镜像服务页面

  3. 绑定GitHub账号
    点击【代码源】-【Github 绑定账号】进行授权绑定代码源

  4. 创建镜像仓库
    点击【镜像仓库】-【创建镜像仓库】
    选择【地域】
    选择【命名空间】,如果没有则点击左侧【命名空间】创建命名空间
    填写【仓库名称】、【摘要】、【描述信息】
    选择【仓库类型】
    点击下一步继续

    选择GitHub,绑定Dockefile对应的仓库
    如果有些镜像在国内拉取比较慢或者无法拉取,可以勾选【海外机构建】
    点击【创建镜像仓库】保存镜像信息

    点击对应仓库的【管理】设置构建详情

    点击【构建】-【添加规则】
    选择代码分支或Tag
    填写【Dockerfile目录】,此路径为相对于GitHub仓库代码根目录的Dockerfile所在的路径
    填写【Dockerfile文件名】
    填写【镜像版本】
    点击【确认】保存

  5. 触发构建
    首次保存构建信息后,如需开始构建需要手动点击【立即构建】触发构建。稍等片刻即可完成构建。
    如果开启了【代码变更时自动构建镜像】,那么在GitHub上修改了相关代码提交后会自动触发构建。

  6. 下载镜像
    构建完成后根据镜像的【基本信息】、【镜像版本】中的内容可以获取到下载镜像的地址。

    例如本示例镜像下载方式为:

    1
    sudo docker pull registry.cn-hangzhou.aliyuncs.com/yancai/demo:3.1.12

使用阿里云下载构建好的镜像,感觉就一个字:快!
如此,国外有些镜像难以下载时候,使用阿里云间接拉取构建,下载到本地后重命名镜像名称,这样也就间接的下载了一些无法拉取下来的镜像。

0%