仓库(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:
第二种操作办法:生成证书
列出当前所有镜像:
领取专属 10元无门槛券
私享最新 技术干货