1.前面我制作了很镜像,利用docker images可以看到我自己制作的所有的镜像

第一列  是我利用docker build -t 镜像名   制作镜像指定的镜像名,但是它对应的是REPOSITORY

实际上一个镜像的名字是由2部分组成的:repostory+tag

但在之前的制作镜像的过程中,我并没有指定镜像的tag,所以使用的是默认的tag:latest

TAG可以用任何字符表示,通常用于描述版本信息,但其实没有任何的含义

每个repository可以有多个tag,而多个tag可能对应的是同一个镜像

TAG的制作

我们可以使用命令docker tag给镜像打tag

就是如此简单,并没体会出有什么用途:突然发现利用docker tag制作出来的镜像ID一致

下面介绍一下docker HUB

docker hub是docker公司维护的公共registry。用户可以将自己的镜像保存在docker hub免费的repository。如果不希望别人访问自己的镜像,可以购买私有的repository

quay.io是另一个公共的registry,提供与docker hub类似的服务

如何在docker hub上面获取镜像呢?

1.首先在docker hub上面注册一个账号:https://hub.docker.com/

2.在docker host上面登录:docker login -u 用户名,然后输入密码

3.docker hub为了区分不同用户的镜像,镜像的镜像名registry中要包含用户名,完整格式为:【username】/xxx:tag

例如

注:docker官方自己维护的镜像没有用户名

4.通过docker push将镜像上传到docker hub

docker 会上传镜像的每一层,但由于13051839892/cmd:test中只有这一层与官方镜像不一样,所以只上传这一层新的镜像,实际上传的数据很少。总结起来就是上传镜像的时候只有新增加的层会被上传

如果想上传同一镜像名(repository相同)不同tag的镜像,使用docker push 上传时省略tag的名字就可以了:如:docker push 13151839892/cmd

5.登录https://hub.docker.com,在public repository中就可以看到上传的镜像

如果要删除docker hub中上传的镜像,只能在docker hub上面删除

6。这个镜像可以被其他的Docker host下载使用

使用docker pull【username】/xxx:tag

Docker Hub虽然非常方便,但还是有些限制:

1.需要外网的连接,上传和下载的速度非常慢

2.上传到Docker Hub的镜像任何人都能访问,私有的repository并不是免费的

3.安全原因,很多组织不允许把镜像放到外网

我们可以通过搭建本地registry解决

搭建本地registry:学习这里的时候有坑有难点,下面我仔细的记录一下每一步的操作!!!

1.首先下载一个registry镜像(这里必须使用registry镜像)

2.后台启动一个registry容器,-d:后台运行,-p:将容器的5000的端口映射到 Host 主机上的5000的端口,-v:将容器的/var/lib/registry映射到Host的/myregistry上

docker ps看到registry这个容器是运行的状态

 3.修改镜像的tag

4.上传镜像:可以看到push并没有成功,报错:http:server gave HTTP response to HTTPS client,

出现这个问题的原因是Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务,所以与私有镜像交时出现以上错误。

解决办法是在docker server启动的时候增加启动参数默认使用http访问:

修改/usr/lib/systemd/system/docker.service中的第12行

      将

修改为

然后重启docker:systemctl restart docker

5.重新上传镜像

我们发现还是不成功:connection refused

这是由于重启我们之前在后台启动的registry容器将会成为Exited状态,所以我们要再次在后台启动一个registry容器

6.这时我们再次重新上传镜像:能够成功上传

7.从私有仓库下载镜像

a。先将本地的镜像删除

b。重新pull镜像

当我重新pull完这个镜像之后,我很傻逼的想了一个问题:如何判断pull下来的这个镜像是在我私有仓库里面下载下来的呢?答案应该是:首先下载这个镜像的时候特别快,其次是应该不会有这么巧合的事情,别人上传的镜像和你上传的镜像名字一致吧。

centos7下安装docker(5镜像命名)的更多相关文章

  1. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  2. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  3. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  4. centos7 下安装docker报错:You could try using...

    搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...

  5. centos7下安装docker(2镜像)

    docker最小的镜像——hello-world 下载镜像  docker pull docker pull hello-world 查看镜像  docker images docker images ...

  6. Linux(centos7)下安装Docker

    近期公司开始推Docker技术.这个系列的文章都是基于CentOS7系统下进行讲解的. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...

  7. Centos7下安装Docker(详细的新手装逼教程)

    早就听说过Docker,一直不清楚是个啥,今天捣鼓了一下,这里做个记录. --------------------------------------------------------------- ...

  8. Centos7下安装Docker[z]

    [z]https://www.cnblogs.com/qgc1995/p/9553572.html https://yq.aliyun.com/articles/691610?spm=a2c4e.11 ...

  9. Centos7下安装docker(1)

    1.确认系统没安装任何docker相关的安装包 yum remove docker docker-common docker-selinux docker-engine centos7的docker存 ...

  10. Docker学习系列(一)-CentOS7下安装Docker

    CentOS7下Docker的安装 一.操作系统要求 CentOS 7 64位 Kernel 3.10+ 本机系统信息 二.卸载旧版本 如果之前安排过旧版本的Docker,先卸载掉旧版Docker以及 ...

随机推荐

  1. JavaWeb学习 (十四)————JSP基础语法

    一.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素.  JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. 二.JSP表达式 JSP脚本表达式(expression)用于将 ...

  2. JS下计算当前日期(当天)后N天出现NAN或者undefined的情况

    前言: 帮客户做一个订单系统,需要一个日期1,一个日期2,默认情况下日期1为当天,日期2为明天,只是当时有些疑惑的是日期2偶尔会出现NAN的情况,今天在segmentfault.com看到了同样的问题 ...

  3. Linux中ls命令用法

    ls 命令的含义是list显示当前目录中的文件名字.注意不加参数它显示除隐藏文件外的所有文件及目录的名字. 1)ls –a 显示当前目录中的所有文件,包含隐藏文件 命令: aijian.shi@U-a ...

  4. link rel=alternate网站换肤功能

    此方法借助HTML rel属性的alternate属性值实现. <link href="reset.css" rel="stylesheet" type= ...

  5. 《深入理解Java虚拟机》(一)Java虚拟机发展史

    Java虚拟机发展史 1.Sun Classic/Exact VM 1.Sun Classic:世界第一款商用Java虚拟机. 2.Exact VM:准确式GC:虚拟机可以知道内存中的某个位置的数据具 ...

  6. JAVAEmail工具错误java.lang.ClassNotFoundException: javax.activation.DataSource

    JDK9以上或JDK6以下使用mail.jar包不加JAF的activation.jar包会抛出该错误!JDK6以上不需要加该jar包: 参考原文 https://stackoverflow.com/ ...

  7. MVC和WebForm区别

    WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.JavaSc ...

  8. MVC架构介绍—查询功能的开发

    select和from语句 注意:select和from可以不设置,默认情况下: select获取映射表的所有字段: from获取实体映射表的表名:如果设置select则必须设置frorm,但是允许仅 ...

  9. 如何在 ASP.NET Core 测试中操纵时间?

    有时候,我们会遇到一些跟系统当前时间相关的需求,例如: 只有开学季才允许录入学生信息 只有到了晚上或者周六才允许备份博客 注册满 3 天的用户才允许进行一些操作 某用户在 24 小时内被禁止发言 很显 ...

  10. InheritParasitic.js

    // 寄生式继承 // 其基本思路是类似创建对象时的工厂模式,将继承过程封装在一个函数里,然后返回一个对象 function createObject(o){ var clone = Object.c ...