Docker Registry
1.1、Docker Registry简介

Docker Registry是用于存放镜像的地方,可以类比apt-getyum的仓库。

1.2、Docker Hub

Docker HubDocker公司官方提供的一个公开的Docker Registry

Docker Hub官网:https://hub.docker.com

由于Docker Hub服务器在国外,对于中国用户来说,下载速度非常慢。

1.3、Docker Registry Mirror - DaoCloud

DaoCloud在国内提供了一个Docker Hub镜像服务,而且免费, 大大提高了国内Docker用户的使用热情。

使用方法:

1、修改Docker配置文件/etc/default/docker如下:

DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"

2、重启Docker服务即可:

sudo service docker restart

现在使用docker pull拉取镜像真是特别爽,速度很快,感谢DaoCloud公司。

1.4、搭建私有Docker Registry

Docker Hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。 但是,假如公司有很多的不想公开的私有镜像,为了方便公司内部使用这些镜像,有必要自己搭建一个私有的Docker Registry。 这个可以通过开源软件Registry来达成目的。

RegistryGitHub上有两份代码:

  • Python编写的,由于存在pullpush的性能问题, 到0.9.1版本之后就标记为Deprecated,不再继续开发。
  • 从2.0版本开始就到在,采用golang编写,修改了镜像id的生成算法、Registry上镜像的保存结构, 大大优化了pullpush镜像的效率。
1.4.1、Registry环境搭建

Registry官方在Docker Hub上提供了镜像,我们可以直接使用该镜像来运行一个容器。

拉取taglatest的镜像:

sudo docker pull registry

运行容器:

sudo docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry

说明:Registry默认会将上传的镜像保存在容器的/var/lib/registry目录里, 我们将主机的/opt/registry目录挂载到容器的/var/lib/registry目录, 即可实现将镜像保存到主机的/opt/registry目录了。

验证一下容器是否运行正常:

curl http://127.0.0.1:5000/v2
1.4.2、推送到私有Registry

1、假设,我们的本地仓库中有一个名称为registry的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库:

sudo docker tag registry 127.0.0.1:5000/registry

再查看一下本地的镜像:

2、推送:

sudo docker push 127.0.0.1:5000/registry

我们查看一下宿主机器上的/opt/registry目录:

1.4.3、从私有Registry拉取
sudo docker pull 127.0.0.1:5000/registry