【Docker】Registry(注册中心)

Registry、Repository、Tag

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
一个 Docker Registry 中可以包含多个 仓库(Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Ubuntu 镜像为例,ubuntu 是仓库的名字,其内包含有不同的版本标签,如,16.04, 18.04。我们可以通过 ubuntu:16.04,或者 ubuntu:18.04 来具体指定所需哪个版本的镜像。如果忽略了标签,比如 ubuntu,那将视为 ubuntu:latest
仓库名经常以 两段式路径 形式出现,比如 fan/myconsole,前者往往意味着 Docker Registry 多用户环境下的用户名,后者则往往是对应的软件名。但这并非绝对,取决于所使用的具体 Docker Registry 的软件或服务。

Docker Hub

Docker官方维护的Registry是:Docker Hub

注册

你可以在 https://hub.docker.com 免费注册一个 Docker 账号。

登录

可以通过执行 docker login 命令交互式的输入用户名及密码来完成在命令行界面登录 Docker Hub。

docker login -u fan410577910

搜索镜像

docker search fan410577910

推送镜像

用户也可以在登录后通过 docker push 命令来将自己的镜像推送到 Docker Hub。
以下命令中的 username 请替换为你的 Docker 账号用户名。

docker tag fan/aspnetcore fan410577910/aspnetcore
docker push fan410577910/aspnetcore

打一个tag,fan410577910是我dockerhub的用户名,我试了这里必须得是自己的用户名,不然推不上去
镜像推送成功,上面镜像没有指定版本号,默认latest
也可以指定版本号:

docker tag fan/aspnetcore fan410577910/aspnetcore:1.0
docker push fan410577910/aspnetcore:1.0

私有 Docker Registry

除了使用公开服务外,用户还可以在本地搭建私有 Docker RegistryDocker 官方提供了 Docker Registry镜像,可以直接使用做为私有 Registry 服务。

搭建私有Registry步骤

1、拉取私有仓库镜像

docker pull registry

2、启动私有仓库容器

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

3、测试是否安装成功

http://xx.xx.xx.xx:5000/v2/_catalog

4、Registry为了安全性考虑,默认是需要https证书支持的.但是我们可以通过一个简单的办法解决,客户机修改/etc/docker/deamon.json,添加insecure-registries
注::Registry的机器ip地址,在安装registry的节点和客户端需要访问私有Registry的节点都需要执行此步操作

vim /etc/docker/deamon.json
{
"insecure-registries":["<ip>:5000"]
}

5、客户机修改/usr/lib/systemd/system/docker.service,在 ExecStart 那行后面加 --insecure-registry 139.155.44.138:5000
这个是在客户机的docker配置文件里添加的(即上传镜像到私有仓库里或从私有仓库下载镜像的客户机)。
比如说在A机器上将它的镜像上传到192.168.1.23的私有仓库上或从该私有仓库下载镜像,那么就在A机器的本地docker配置文件中添加。
6、客户机重启服务

systemctl daemon-reload
systemctl restart docker

7、客户机镜像加tag

docker tag jdk1.8 139.155.44.138:5000/jdk1.8

8、推送

docker push 139.155.44.138:5000/jdk1.8

9、先删除已有镜像,再尝试从私有仓库中下载这个镜像

docker rmi 139.155.44.138:5000/jdk1.8
docker pull 139.155.44.138:5000/jdk1.8
posted @ 2020-01-07 19:28  .Neterr  阅读(326)  评论(0编辑  收藏  举报