前面我们已经写过一篇文章,从官网翻译过来的,源生的搭建Docker Registry的方法。但是,当配置通过https访问时,需要通过letsencrypt签发一个证书时,出了问题,就是签发的证书的格式不对。一直都没有解决。

而最近又需要一个Docker的私有仓库,本来可以使用Docker hub提供的,但是考虑到国内的网络问题,就直接放弃了这种想法。在寻找解决方案的时候,找到了另一个更加方便的方案,就是我们今天要介绍的HARBOR.HARBOR其实也是基于registry镜像的,通过docker-compose来组合了一些容器,使我们更加方便的搭建这样的一个私有的仓库。

先直接给你一张我搭建好之后访问的图片,就问你有没有兴趣!

搭建Docker Registry之HARBOR_安装过程

提醒

我们这里只给你一个最简单的流程,让你能看到上面的这种界面。至于更多配置选项,请你自行参考官方文档。文档介绍的挺详细,也很容易理解。

过程

前提条件

  • python的版本至少为2.7
  • Docker engine的版本至少为1.10
  • Docker Compose的版本至少为1.6.0

步骤

1.下载installer,网址为https://github.com/vmware/harbor/releases。在其中下载Online installer或者Offline installer。

Online installer中没有包含相关的镜像,所以在一会的安装过程中,会下载镜像。而Offline installer则已经包含了镜像。

2.下载完成后,解压。

3.配置。

我们这里只配置一个hostname,其他的为默认值。本来还应该修改admin账户的密码,而官方文档不建议在这里修改。所以一会我们会在打开上面的时,进行修改。

配置文件在解压后的文件夹下,名为harbor.cfg。这里我修改hostname为我的主机的FQDN.如果你没有的话,也可以使用主机的ip地址。不要使用localhost或者127.0.0.1,因为这个registry要对外部客户端可见。

搭建Docker Registry之HARBOR_docker_02

4.安装

sudo ./install.sh

使用上面的这条命令,自动就会下载镜像并安装。其中,因为容器映射了某些端口,比如443,所以你需要现在主机中,把这些端口停掉。防止因为端口被占用而导致安装失败。

5.验证

如果没有提示失败错误,那你就安装成功了。我们可以在浏览器中输入 http://hostname 来查看是否成功。其中hostname就是上面我们在配置文件中修改的那个。我这里访问的地址为 http://docker.alstonwilliams.site 。你可以登陆下试试。记住默认的用户名/密码为admin/Harbor12345.

6.使用

我们部署这个就是为了使用的。那么要如何使用呢?首先,我们需要在这个registry中新建一个project。创建的方法很简单,你登陆进去一试便知。这里不解释。

然后,在我们的客户端,也就是安装了docker engine的机器上,我们需要先重启一下Docker engine。因为上面我们安装过程中,没有使用https。而Docker engine在连接远程registry时,默认使用的是https。我们可以在客户端的/etc/default/docker这个文件中,添加DOCKER_OPTS=”$DOCKER_OPTS –insecure-registry=docker.alstonwilliams.site”这一行。其中–insecure-registry=后面跟的,就是刚才的hostname.insecure-registry前面是两个’-‘:

搭建Docker Registry之HARBOR_docker_03

修改完之后,保存并重启docker engine:

sudo service docker restart

然后,我们登陆进上面的那个docker registry:

docker login docker.alstonwilliams.site

从docker hub上面pull一个hello-world镜像,然后修改其仓库,然后再提交到我们的registry:

docker pull hello-world

docker tag hello-world docker.alstonwilliams.site/hello-world:latest

docker push docker.alstonwilliams.site/hello-world:latest

注意,把上面的docker.alstonwilliams.site全部换成你的主机名.

这样,你就能看见你的私有的registry中,多了一个仓库.

后记

前面也说了,这里只介绍最简单的用法.其他的,比如配置https访问,验证方式等,请自行查看官方文档,我们这里不介绍了.