Docker之仓库以及私有仓库的搭建(五)

仓库

仓库(Repository)是集中存放镜像的地方。
一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。

Docker Hub

目前Docker官方维护了一个公共仓库https://hub.docker.com,其中已经包括15000多个的镜像。大部分需求都可以通过在Docker Hub中直接下载镜像来实现。

登录
可以通过执行docker login命令来输入用户名,密码和邮箱来完成注册和登录。注册成功后,本地用户目录的。dockercfg中将保存用户的认证信息。

基本操作
用户无需登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地。
用户也可以在登录后通过docker push命令来将本地镜像推送到Docker Hub

创建和使用私有仓库

使用registry镜像创建私有仓库
安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:

$ sudo docker run -d -p 5000:5000 registry

这将自动下载并启动一个registry容器,创建本地的私有仓库服务。
默认情况下,会将仓库创建在容器的/tmp/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径上。
例如下面的例子将上传的镜像放到/opt/data/registry目录:

$ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

此时,在本地将启动一个私有仓库服务,监听端口为5000.

管理私有仓库镜像
首先查看你系统的ip地址192.168.43.216
使用docker tag命令将这个要上传的镜像标记为192.168.43.216/test
$ sudo docker tag ubuntu:latest 192.168.43.216/test

使用docker push上传标记的镜像:
$ sudo docker push 192.168.43.216/test

这儿会出现错误:

The push refers to a repository [192.168.43.216:5000/registry]
Get https://192.168.43.216:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这个问题可能是由于客户端采用https,docker registry未采用https服务所致。一种处理方式是把客户对地址“192.168.43.216:5000”请求改为http。

目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题。但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。

解决方法:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

{ "insecure-registries":["192.168.43.216:5000"] }

保存退出后,重启docker。问题解决
重启docker命令是:

$ sudo systemctl restart docker

继续后面步骤,我们可以用curl查看仓库192.168.43.216:5000中的镜像:

$ curl http://192.168.43.216:5000/v2/_catalog

现在我们可以到任意一台能访问到192.168.43.216地址的机器去下载这个镜像了:

$ sudo docker pull 192.168.43.216/test

猜你喜欢

转载自blog.csdn.net/huang_yong_peng/article/details/82931369
今日推荐