Docker仓库(Repository)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yang731227/article/details/83827640

title: Docker仓库(Repository)
tags: Docker


        在前面的几篇文章中,我们简单的提及了Docker官方的仓库Docker Hub,本文将详细的介绍仓库的使用,并且搭建出自己的私人仓库。

Docker Hub

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

一、登录

        可以通过执行 docker login命令来输入用户名、密码登录。

二、基本操作

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

1.搜索镜像

例: docker search centos

        我们可以将这些镜像资源分为两类。一种是类似 centos这样的基础镜像,称为基础或根镜像。这些镜像是由 Docker公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。还有一种类型,比如tutum/centos 镜像,它是由 DockerHub的用户 tutum创建并维护的,带有用户名称为前缀,表明是某用户的某仓库。可以通过用户名称前缀username/来指定使用某个用户提供的镜像,比如tutum用户的镜像前缀为 tutum/ 。

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

例: docker search -s 3 centos

2.拉取镜像

        我们这里下载官方提供的镜像。

例:docker pull centos

3.将镜像推送到Docker Hub

        当然我们也可以上传镜像,上传镜像必须要使用docker login登录。
        分享的image一定要以自己docker用户名开头,如果不加自己的用户名,Docker会认为这是一个root仓库,root仓库是由Docker公司管理的,因此会拒绝我们都上传请求。所以我们必须要在前面添加用户名,例如:clown95/centos,还有在上传我们的镜像之前,如果你没设置tag,那么现在我们需要设置下镜像的tag,如:docker tag centos clown95/centos ,如果不经过这一步,docker会提示我们An image does not exist locally with the tag: clown95/centos

例:docker push clown95/centos

4.分享镜像

        当上传好镜像后,我们就可以分享给好友使用了。

注意:如果需要分享自己的镜像,一般不建议分享image,通常建议分享Dockerfile。

5.查看镜像详情信息

        使用docker inspect 命名来查看我们刚刚提交到镜像详情信息。

docker inspect clown95/centos

只截了部分信息

三、与gitHub关联

1.登录上你的Docker Hub
2. 选择setting

3. 选择Linked Accounts & Services -> Link gitHub

4. 点击select

5.

6. 登入你的gitHub账号
7. 成功关联

创建和使用私有仓库

        显然,拥有 Docker镜像的一个公共的 Registry非常有用。但是,有时候我们可能希望构建和存储包含不想被公开的信息或数据的镜像。这时候我们有以下两种选择

  • 利用 Docker hub上的私有仓库。
  • 在防火墙后面运行你自己的 Registry

一、运行私人仓库

        感谢 Docker公司的团队开源了他们用于运行 Docker Registry的代码,这样我们就可以基于此代码在内部运行自己的 Registry。目前 Registry还不支持用户界面,只能以AP服务的方式来运行。

例: docker run -d -p 5000:5000 registry:2

二、推送镜像到私人仓库

        现在我们想要把本机的clown95/centos上传到我们的私人仓库, 我们先使用docker images 来查看下clown95/centos的ID ,我这里为75835a67d134,接着我们需要再镜像名签名加上主机名和端口前缀。 10.211.55.3 是我的主机名,实际操作根据自己的情况来。

例:docker tag 75835a67d134 10.211.55.3:5000/clown95/centos

镜像标签打完之后,我们就应该进入最关键的一步了,通过docker push命令将镜像推送到我们的仓库。

例:docker push 10.211.55.3:5000/clown95/centos

注意:私人仓库必须要一直运行才能上传,可以想象成后台服务器。

三、可能遇到的错误

        可能有很人一直上传不了,提示dial tcp xxx.xxx.xxx.xxx:5000: connection refused 。这是因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。
解决方案:
1.创建一个daemon.json文件
touch /etc/docker/daemon.json
2.编辑json文件
vi /etc/docker/daemon.json
加入本地registry的地址, 如:
{ "insecure-registries":["10.211.55.3:5000"] }
3.然后重启docker服务和本地仓库:
service docker restart
docker run -d -p 5000:5000 registry:2

四、从私人仓库拉取镜像

        最后我们依然通过docker pull 拉取镜像,相比于官方仓库拉取有所不同,需要再镜像名字前面添加我们的私人主机地址加端口。
docker pull 10.211.55.3:5000/clown95/centos

猜你喜欢

转载自blog.csdn.net/yang731227/article/details/83827640
今日推荐