访问与搭建Docker仓库

仓库(Repository)是集中存放镜像的地方,分公共仓库和私有仓库.一个容易与之混淆的概念时注册服务器(Registry).注册服务器时存放仓库的具体服务器,一个注册服务器可以有多个仓库,而每个仓库下面可以有多个镜像.

一、Docker Hub公共镜像市场

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

1、登录

可以通过命令执行docker login来输入用户名、密码和邮箱来完成注册和登录,注册成功后,本地用户目录.dockercfg中将保存用户的认证信息.登录成功后,用户可以上传个人制作的镜像.

或者通过图像界面进行注册登录:

2、基本操作

用户无需登录即可通过docker search命令查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地:

根据是否为官方提供,可将这些镜像资源分为两类.一种时类似CentOS这样的基础镜像,称为基础或根镜像.这些镜像是由Docker公司创建、验证、支持、提供.这样的镜像往往用单个单词作为名字.

还有一种类型,比如ansible/centos7-ansible镜像,他是有Docker用户ansible创建并维护的,带有用户名称为前缀,表明是某用户下的某仓库.可以通过名称前缀user_name/镜像名来指定使用某个用户提供的镜像.

另外,在查找的时候通过-s N参数可以指定仅显示评价为N星以上的镜像.

下载官方CentOS镜像到本地:

3、自动创建

对于需要升级镜像内程序来说,十分方便.有时候,用户茶创建了镜像,安装某个软件,如果软件发布新版本则需要手动更新镜像.

而自动创建允许用户通过Docker Hub指定一个目标网站(目前支持GitHub或BitBucket)上的项目,一旦项目发生新的提交,则自动执行茶创建.

步骤如下:

创建并登录Docker Hub,以及目标网站;*在目标网站中连接账户到Docker Hub;

在Docker Hub中配置一个"自动创建";

选取一个目标网站中的项目(需要含Dockerfile)和分支;

指定Dockerfile的位置,并提交创建.

之后,可以在Docker Hub的"自动创建"页面中跟踪每次创建的状态.

二、搭建本地私有仓库

1、使用registry镜像创建私有仓库

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

下载registry:

这将自动下载并启动一个registry容器,创建本地的私有仓库服务,v2.4.1的registry是把image文件放到了/var/lib/registry下。

启动registry:

--name:指定容器名称

--privileged=true:CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误

2、管理私有仓库

在 CentOS 7.0系统中查看已有的镜像:

然后在本机通过docker push 127.0.0.1:5000/test;首先标记上传镜像为127.0.0.1:5000/xxx(格式为docker tag IMAGE [:TAG] [REGISTRYHOST/] [USERNAME/] NAME [:TAG]):

但是只能在本地使用127.0.0.1进行推送,不能在其他主机上传镜像,包括本机通过IP地址也不可以推送镜像。

当在其他主机或者在本机通过IP推送镜像时,docker默认会认为地址是HTTPS加密的,而实际上我们启动registry时并没有加密,所以会报错:

解决方案

修改dockerd启动参数【官方资料】,然后重启docker。再推送镜像时就会认为这个地址是HTTP,不会报错了,但在每一台主机添加这个配置是很麻烦和危险的:

再次push上传就OK:

第二种操作办法:生成证书

列出当前所有镜像:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180715G029NS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券