Docker实践(七):Docker Hub(镜像分发、自动化构建)

一、Docker Hub简介

Docker Hub的网址是https://hub.docker.com,提供的是镜像托管服务,它与GitHub类似,利用Docker Hub,我们可以搜索、创建、分享和管理镜像,还可以利用其提供的自动化构建技术直接在集群云服务器上构建镜像。

Docker Hub为用户提供不限数目的公开镜像托管服务,但仅提供一个私有镜像托管服务。

Docker Hub上的镜像分为两类。一类是官方镜像,比如ubuntu、redis等,此类镜像一般由权威的第三方进行开发维护,最后还需要Docker官方认证通过。另一类为普通用户镜像。

二、镜像的分发(Docker Hub、阿里云)

1、Docker Hub分发

这里默认你已经有了DockerHub账号,没有的话,就自行创建一个。

注册成功之后,在命令行客户端登录我们刚才注册的账号;并且登录信息都保存在~/.docker/config.json中(有的是~/.dockercfg),我这里DockerHub和阿里云的登录信息。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第1张图片

使用push命令上传镜像。如果不指定镜像TAG,指定的仓库在本地的所有镜像都会上传到Docker Hub。push之前,我的docker hub test仓库下只有TAG=V1的镜像。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第2张图片

  • docker push gutianlangyu/test:build_dockerfile_test_github:将我们创建的本地build_dockerfile_test_github镜像推送到docker hub。

  • 成功后,刷新Docker Hub的test仓库,会发现仓库下已经多了TAG=build_dockerfile_test_github的镜像。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第3张图片

2、阿里云分发

首先登陆阿里云镜像仓库,使用docker tag重命名镜像,并将它通过私网ip推送至registry,我这里只贴出我本地操作的流程,阿里云在镜像仓库-管理中给出了操作指南(下面会列出)。

这里写图片描述

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第4张图片

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第5张图片

操作指南(阿里云)

登录阿里云docker registry:

$ sudo docker login [email protected] registry.cn-hangzhou.aliyuncs.com

登录registry的用户名是您的阿里云账号全名,密码是您开通namespace时设置的密码。 你可以在镜像管理首页点击右上角按钮修改docker login密码。

从registry中拉取镜像:

$ sudo docker pull registry.cn-hangzhou.aliyuncs.com/gutianlangyu/test:[镜像版本号]

将镜像推送到registry:

  $ sudo docker login --username=gubaijing2004@163.com registry.cn-hangzhou.aliyuncs.com
  $ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/gutianlangyu/test:[镜像版本号]
  $ sudo docker push registry.cn-hangzhou.aliyuncs.com/gutianlangyu/test:[镜像版本号]

其中[ImageId],[镜像版本号]请你根据自己的镜像信息进行填写。

sample:使用docker tag重命名镜像,并将它通过私网ip推送至registry:

$ sudo docker images
  REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
  registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB

$ sudo docker tag 37bb9c63c8b2 registry.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

通过docker images 找到您的imageId 并对于改imageId重命名镜像domain到registry内网地址。

$ sudo docker push registry.cn-hangzhou.aliyuncs.com/acs/agent

从内网push镜像,速度将大大提升,并且将不会损耗您的公网流量。注意,如果您申请的机器是在vpc网络的,请使用registry-cn-hangzhou-vpc.aliyuncs.com的域名前缀进行推送。

三、自动化构建

除了在本地创建镜像然后使用push命令将其推送到Docker Hub之外,我们还可以使用Docker Hub提供的自动化构建技术在服务端直接构建镜像。通过在Docker Hub连接一个包含Dockerfile文件的Git Hub或Bit Bucket的仓库, Docker Hub的构建集群服务器就会自动构建镜像。通过这种方式构建出来的镜像会被标记为Automated Build,也可以称为受信构建(Trusted Build)。

使用自动化构建有以下几个有点:

  • 用户可以确保他拉取的镜像是使用特定方式构建出来的。

  • 访问你的Docker Hub的用户能够自由查阅Dockerfile文件。

  • 因为构建的过程是自动的,所以能确保仓库里的镜像都是最新的。

下面我们使用GitHub来自动构建镜像:

前提

  • GitHub的Dockerfile项目,我们使用在Docker实践(六):创建本地镜像(commit、Dockerfile)中创建的。

登录DockerHub,选择右上角的Create,下拉框中选择Create Automated Build

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第6张图片

选择用来构建的源,这里我们选择GitHub:

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第7张图片

如果首次操作,会需要GitHub登录、授权,我这边之前操作过了,就会直接显示我的GitHub项目列表:

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第8张图片

点击选择我们的docker项目,这时会让填一些命名空间、仓库,选择私有还是公开、描述等信息,最后点击Create即可创建成功。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第9张图片

这时,在控制面板(Dashboard)中就能看到一个标有automated build的仓库docker

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第10张图片

点击进入gutianlangyu/docker

只要你的Git Hub上的Dockerfile文件有了最新更新,这边就会自动构建最新镜像。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第11张图片

  • Repo Info:一些仓库的基本信息。

  • Tags:此仓库构建出的镜像TAGS列表。

  • Dockerfile:对应Git Hub上的Dockerfile文件的内容。

  • Build Details:显示构建进度信息。

  • Build Settings:一些自动构建的配置选项:

    • Build Setting:对所自动构建的分支、tags等进行触发配置。

    • Repository Links:可以配置进行关联触发自动构建,一般用在本镜像会被作为其它镜像的根镜像。

    • Build Triggers:开启后,可以通过URL手动请求构建。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第12张图片
Docker实践(七):Docker Hub(镜像分发、自动化构建)_第13张图片

  • Collaborators:可以添加用户参与镜像的维护。

  • Webhooks:可以指定自动构建的回调地址,从而与本系统关联。

-Settings:对此仓库的一些基本操作:设为公开、私有、删除。

Docker实践(七):Docker Hub(镜像分发、自动化构建)_第14张图片

你可能感兴趣的:(Docker)