文章目录

  • 前言
  • docker镜像分层加载原理
  • docker镜像commit操作产生新镜像
  • 本地镜像发布到阿里云
  • 将本地镜像推送到私有库

前言

大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理,及如何把本地镜像推送到阿里云服务器或者本地私服 ,感兴趣的朋友可以看一下以前的文章。
前文回顾:
docker入门(一):在centOS虚拟机上安装docker
docker入门(二):docker的常用命令

docker镜像分层加载原理

Docker 镜像的基础是UnionFS(联合文件系统) ,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录,但从外面看起来,只能看到一个文件系统 。docker的镜像实际上由一层一层的文件系统组成,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。这里的UnionFS包含bootfs和rootfs两种。

  • bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是引导文件系统bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
  • rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

问:平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??
答: docker可以看作是一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel(bootfs基本是一致的), 自己只需要提供 rootfs 就行了。

docker镜像commit操作产生新镜像

Docker镜像层都是只读的,容器层是可写的
当容器启动时,一个新的可写层被加载到镜像的顶部。 这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

#docker commit提交容器副本使之成为一个新的镜像命令格式:
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

尚硅谷讲解案例:可以从dockerhub下载一个ubuntu镜像,默认的是没有vim编辑器,通过镜像运行ubuntu容器后装一个vim,然后commit生成新镜像,比较新镜像是不是比刚下载的ubuntu大了很多。
ubuntu新镜像

#docker容器内执行以下两条命令安装vim:
apt-get update
apt-get -y install vim
#·安装完成后,commit我们自己的新镜像
docker commit -m="add vim cmd" -a='authoryu' 容器ID  myutuntu:1.1

小总结:
Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似Java继承于一个Base基础类,自己再按需扩展。新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层。

本地镜像发布到阿里云

阿里云开发者平台地址: https://promotion.aliyun.com/ntms/act/kubernetes.html

  1. 新建一个镜像仓库,因个人版是免费的,可以注册体验一下,通过首页的镜像搜索按钮可以直达镜像服务,在镜像列表中新建,如下图:
    请添加图片描述
  2. 进入管理界面获得脚本
    请添加图片描述
    请添加图片描述
  3. 推送镜像脚本实例
#注释:yuqingbuy是命名空间,cea1bb40441c是镜像id
docker login --username=yuqingbuy registry.cn-hangzhou.aliyuncs.com
docker tag cea1bb40441c registry.cn-hangzhou.aliyuncs.com/atguiguwh/myubuntu:1.1
docker push registry.cn-hangzhou.aliyuncs.com/atguiguwh/myubuntu:1.1
  1. 下载镜像命令
    docker pull registry.cn-hangzhou.aliyuncs.com/atguiguwh/myubuntu:1.1

将本地镜像推送到私有库

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。
镜像名称常用命名规则:远端仓库地址urI/分类仓库名字/镜像名字:标签名字
示例: harbor.test.com/test/nginx:v1

  1. 下载镜像Docker Registry
docker pull registry 
  1. 运行私有库Registry,相当于本地有个私有Docker hub
docker run -d -p 5000:5000  -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
#registry它的默认端口是5000;2、--restart=always的含义是容器出现故障时默认无限次的尝试重启
#默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调

启动后,直接访问IP:5000端口,访问不到任何内容,需要在后面加上/v2/_catalog

  1. curl验证私服库上有什么镜像

curl -XGET http://192.168.111.162:5000/v2/_catalog

也可以直接在浏览器访问,可以看到,目前私服库没有任何镜像上传过。。。。。。
4. 将新镜像修改成符合私服规范的Tag

按照公式: docker tag 镜像:Tag Host:Port/Repository:Tag
自己host主机IP地址,填写同学你们自己的,不要粘贴错误,O(∩_∩)O
比如将yyubuntu:1.2 这个镜像修改为192.168.111.162:5000/yyubuntu:1.2

docker tag yyubuntu:1.2 192.168.111.162:5000/yyubuntu:1.2

  1. 修改配置文件使之支持http
    为什么要该配置文件?
    docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。====> 修改完后如果不生效,建议重启docker
    docker配置文件-本地仓库地址
    registry-mirrors 配置的是国内阿里提供的镜像加速地址,不用加速的话访问官网的会很慢。
    2个配置中间有个逗号 ','别漏了,这个配置是json格式的。
  2. push推送到私服库

docker push 192.168.111.162:5000/zzyyubuntu:1.2

此时通过curl再次验证本地服务器已经有了镜像,且能正常启动容器了,本小节先分享到这里,动手试试?
在这里插入图片描述

docker学习(三):docker的常用命令问问

相关文章

  1. QQ气泡效果剖析

    对于QQ汽泡效果我想不用多说了,都非常的熟悉,而且当时这效果出来简直亮瞎眼了,挺炫的,这里再来感受下: 而这次只实现单个汽泡的效果,并不涉及到加入Listview上的处理,一步步来,先上一…...

    2023/3/26 20:57:39
  2. 【数学模拟卷总结】2023李林六套卷数学二第一套

    写个这个系列是为了逼自己总结。 题目复盘 把题给的三个无穷小量的最后一个γ\gammaγ改写为γ1ecx\gamma\frac{1}{e^{cx}}γecx1​,然后比较分母的三个无穷大量,所谓的高阶无穷小就是趋近于0的速度快,其倒数趋近于无穷的速度快,…...

    2023/3/26 20:57:35
  3. C++PrimerPlus 第八章 函数探幽-8.4 函数重载

    目录 8.4 函数重载 8.4.1 重载示例 8.4.2 何时使用函数重载 8.4 函数重载 函数多态是C在C语言的基础上新增的功能。默认参数让您能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让您能够使用多个同名的函数。术语“多态”指的…...

    2023/3/26 20:57:26
  4. IDEA Git 选项栏各项功能详解

    IDEA Git 选项栏各项功能详解 如图所示 Copy Revision Number 顾名思义 拷贝当前版本号 到剪切板 a8e4b86ce9ca01968629504a6e19b4b99d76a853 Create Patch 在 git 日志中选择要创建补丁的commit,右键选择Create Patch...同一个文件在多次commit中都存在&#xff…...

    2023/3/26 20:57:22
  5. Macbook Pro 删除启动台无效图标

    非常方便,亲测可用。 在启动台界面: 长按快捷键 control option command(该界面所有图标会抖动),单击待删除的(无效)图标,图标上方会出现问号: 再次按下这三个快捷键&…...

    2023/3/26 20:57:00
  6. 【论文阅读】基于混淆的加强网络安全的方法

    基于混淆的加强网络安全的方法一、摘要:二、相关工作1 相关检测工作:(1)排名算法:(2)用户行为分析:(3)网页质量:(4)机器学习:2 相关集成工作:(1)非加权投票:(2)最小二乘:(3)似然组合:(4)门控网络:(5)堆叠:三、具体做法&#xff1a…...

    2023/3/26 20:56:42
  7. 继承与派生(Part Ⅱ)——派生类的构造函数/析构函数

    派生类的构造函数和析构函数 构造函数的主要作用是对数据成员初始化。基类的构造函数是不能继承的,在声明派生类时,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数承担。所…...

    2023/3/26 20:56:06
  8. 帝国72后台密码

    帝国后台登录账号密码忘记了怎么办登录你空间的phpmyadmin管理数据库,phome_enewsmember这个表找到你的后台账户名把password这个字段的字符串修改一下就好了。请用这组加密的数据7a57a5a743894a0e替换即可,那么密码就是:admin,这个是16位的32位的是:21232f297a57a5a743894a0e…...

    2023/3/26 20:56:00
  9. 文件上传骚姿势合集

    目录 黑名单规则绕过 绕过前端 js 检测方法 判断是否为前端检测还是后端服务器检测方法 绕过 contnet-type 检测上传 常见MIME类型 绕过黑名单上传 同解析后缀名 . htaccess 重写解析绕过上传 大小写绕过上传 空格绕过 利用 windows 系统特征绕过上传 ::$DATA &…...

    2023/3/26 20:55:53
  10. java计算机毕业设计教师资格考试辅导系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计教师资格考试辅导系统源码mysql数据库系统lw文档部署 java计算机毕业设计教师资格考试辅导系统源码mysql数据库系统lw文档部署本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前…...

    2023/3/26 20:55:47
  11. 【Lua】xLua逻辑热更新

    1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新。 逻辑热更新是指:在保持程序正常运行的情况下,在后台修改代码逻辑,修…...

    2023/3/26 20:55:41
  12. C# 嵌入式数据库LiteDB

    之前就有写过LiteDB数据库相关的一篇文章,不过内容比较简单,简单的增删查改,最近项目中又有场景要用到数据库,索性重新写了一篇。 LiteDBHelper.cs LiteDBHelper.cs public sealed class LiteDBHelper{private static readonly La…...

    2023/3/26 20:55:39
  13. UNIX环境高级编程_文件IO_文件描述符

    这篇文章记录文件描述符,下一篇文章记录文件描述表。 1 文件描述符 先说说什么是文件IO。文件的IO就是文件的输入输出,也就是文件的读写。读和写是以CPU为参考的,从CPU向文件中写入数据,就是写操作;从文件中读取数据…...

    2023/3/26 20:55:33
  14. 给定一个字符串str,求最长回文子序列长度。

    问题描述: 给定一个字符串str,求最长回文子序列长度。 思想: 思想一: 根据回文串的性质,我们可以生成一个新的字符串,新字符串的顺序是原来字符串的倒序。本题可以转化为两个字符串求最长的公共子序列。 …...

    2023/3/26 20:55:19
  15. 【3D目标检测】Rethinking Pseudo-LiDAR Representation

    目录概述细节证明基于伪点云的3D目标检测算法效果好的原因并不是伪点云这种数据表示基于深度图的图像表示的算法PatchNet证明基于伪点云的3D目标检测算法效果好的原因是从图像到点云坐标系转换的过程概述 本文是基于图像的3D目标检测算法。 贡献: 作者认为基于伪点…...

    2023/3/26 20:55:16
  16. 《小强升职记》读后感

    为什么平庸? 成功的人每天都在忙碌,平庸的人每天也在忙碌,而时间对每个人来说是绝对公平的,那么,两者之间的差距到底是如何产生的呢? 第一,在这个人生的关键时期,我们被迫完成角色的转变。 …...

    2023/3/26 20:55:03
  17. Python制作GUI学生管理系统【毕设必备】

    前言 嗨嗨,我的素未谋面的朋友们,有多少是还在读大学的呢 今天就给你们分享一下,如何用python制作GUI 学生管理系统 咳咳,有些还不着急用的,也可以先码住一下,万一到时候就用到了,反正也不亏…...

    2023/3/26 20:54:52
  18. (六)汇编语言——包含多个段的程序

    目录 使用数据 使用栈 分段 代码 总结 使用数据 首先,我们来看一个问题,就是编程计算0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H的和,结果存在a…...

    2023/3/26 20:54:41
  19. VirtualBox下安装ubuntu虚拟机图文详细教程

    1 VirtualBox安装 请参考:VirtualBoxan下载安装 2 安装前配置 1)创建新虚拟机:选择“新建”(快捷键CtrlN),然后在弹出框如图所示,设置虚拟机名称,虚拟机存放文件夹、类型、版本信息,然后点击…...

    2023/3/26 20:54:27
  20. 【神器】嘉立创EDA推荐及一些技巧

    食肉何曾尽虎头,卅年书剑海天秋。 文章幸未逢黄祖,襆被今犹窘马周。 自是汝才难用世,岂真吾相不当侯。 须知少日拏云志,曾许人间第一流。 —— 清代-吴庆坻《题三十计小象》 背景 最近因为需要,所以又开始画点小板子来…...

    2023/3/26 20:54:20

最新文章

  1. docker学习(三):docker的常用命令问问

    文章目录前言docker镜像分层加载原理docker镜像commit操作产生新镜像本地镜像发布到阿里云将本地镜像推送到私有库前言 大家好,这是我学习docker系列的笔记文章,目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理,…...

    2023/3/26 20:58:02
  2. QQ气泡效果剖析

    对于QQ汽泡效果我想不用多说了,都非常的熟悉,而且当时这效果出来简直亮瞎眼了,挺炫的,这里再来感受下: 而这次只实现单个汽泡的效果,并不涉及到加入Listview上的处理,一步步来,先上一…...

    2023/3/26 20:57:39
  3. 【数学模拟卷总结】2023李林六套卷数学二第一套

    写个这个系列是为了逼自己总结。 题目复盘 把题给的三个无穷小量的最后一个γ\gammaγ改写为γ1ecx\gamma\frac{1}{e^{cx}}γecx1​,然后比较分母的三个无穷大量,所谓的高阶无穷小就是趋近于0的速度快,其倒数趋近于无穷的速度快,…...

    2023/3/26 20:57:35
  4. 【华为HCIE考试中心是什么?】

    华为认证考试分为笔试和实验室考试两部分,hcia(华为认证ICT工程师)和HCIP(华为认证ICT高级工程师)只需要参加笔试,HCIE(华为认证ICT专家)需要先参加笔试后参加实验室考试。而华为HCI…...

    2023/3/26 20:57:30
  5. C++PrimerPlus 第八章 函数探幽-8.4 函数重载

    目录 8.4 函数重载 8.4.1 重载示例 8.4.2 何时使用函数重载 8.4 函数重载 函数多态是C在C语言的基础上新增的功能。默认参数让您能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让您能够使用多个同名的函数。术语“多态”指的…...

    2023/3/26 20:57:26
  6. 重新标记ImageNet:从全局标签到局部标签(附github代码及论文)

    欢迎关注“计算机视觉研究院”计算机视觉研究院专栏作者:Edison_GImageNet可以说是最受欢迎的图像分类基准,但它也是一个具有显著噪声的标签。最近的研究表明,许多样本包含多个类,尽管被假定为单个标签基准。因此,他们…...

    2023/3/26 20:57:25
  7. IDEA Git 选项栏各项功能详解

    IDEA Git 选项栏各项功能详解 如图所示 Copy Revision Number 顾名思义 拷贝当前版本号 到剪切板 a8e4b86ce9ca01968629504a6e19b4b99d76a853 Create Patch 在 git 日志中选择要创建补丁的commit,右键选择Create Patch...同一个文件在多次commit中都存在&#xff…...

    2023/3/26 20:57:22
  8. @KafkaListener 详解及消息消费启停控制

    参考:Kafka参数一、KafkaListener注解KafkaListener(id "11111", groupId "demo-group",topics Constants.TOPIC)public void listen(String msgData) {LOGGER.info("收到消息" msgData); } KafkaListener(id "22222"…...

    2023/3/26 20:57:18
  9. Macbook Pro 删除启动台无效图标

    非常方便,亲测可用。 在启动台界面: 长按快捷键 control option command(该界面所有图标会抖动),单击待删除的(无效)图标,图标上方会出现问号: 再次按下这三个快捷键&…...

    2023/3/26 20:57:00
  10. 【论文阅读】基于混淆的加强网络安全的方法

    基于混淆的加强网络安全的方法一、摘要:二、相关工作1 相关检测工作:(1)排名算法:(2)用户行为分析:(3)网页质量:(4)机器学习:2 相关集成工作:(1)非加权投票:(2)最小二乘:(3)似然组合:(4)门控网络:(5)堆叠:三、具体做法&#xff1a…...

    2023/3/26 20:56:42
  11. 4. 寻找两个正序数组的中位数(数组)

    文章目录题目描述方法一,重组排序方法二,调用系统函数题目描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入&#…...

    2023/3/26 20:56:11
  12. 继承与派生(Part Ⅱ)——派生类的构造函数/析构函数

    派生类的构造函数和析构函数 构造函数的主要作用是对数据成员初始化。基类的构造函数是不能继承的,在声明派生类时,派生类并没有把基类的构造函数继承过来,因此,对继承过来的基类成员初始化的工作也要由派生类的构造函数承担。所…...

    2023/3/26 20:56:06
  13. 帝国72后台密码

    帝国后台登录账号密码忘记了怎么办登录你空间的phpmyadmin管理数据库,phome_enewsmember这个表找到你的后台账户名把password这个字段的字符串修改一下就好了。请用这组加密的数据7a57a5a743894a0e替换即可,那么密码就是:admin,这个是16位的32位的是:21232f297a57a5a743894a0e…...

    2023/3/26 20:56:00
  14. 文件上传骚姿势合集

    目录 黑名单规则绕过 绕过前端 js 检测方法 判断是否为前端检测还是后端服务器检测方法 绕过 contnet-type 检测上传 常见MIME类型 绕过黑名单上传 同解析后缀名 . htaccess 重写解析绕过上传 大小写绕过上传 空格绕过 利用 windows 系统特征绕过上传 ::$DATA &…...

    2023/3/26 20:55:53
  15. java计算机毕业设计教师资格考试辅导系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计教师资格考试辅导系统源码mysql数据库系统lw文档部署 java计算机毕业设计教师资格考试辅导系统源码mysql数据库系统lw文档部署本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前…...

    2023/3/26 20:55:47
  16. 【Lua】xLua逻辑热更新

    1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新。 逻辑热更新是指:在保持程序正常运行的情况下,在后台修改代码逻辑,修…...

    2023/3/26 20:55:41
  17. C# 嵌入式数据库LiteDB

    之前就有写过LiteDB数据库相关的一篇文章,不过内容比较简单,简单的增删查改,最近项目中又有场景要用到数据库,索性重新写了一篇。 LiteDBHelper.cs LiteDBHelper.cs public sealed class LiteDBHelper{private static readonly La…...

    2023/3/26 20:55:39
  18. UNIX环境高级编程_文件IO_文件描述符

    这篇文章记录文件描述符,下一篇文章记录文件描述表。 1 文件描述符 先说说什么是文件IO。文件的IO就是文件的输入输出,也就是文件的读写。读和写是以CPU为参考的,从CPU向文件中写入数据,就是写操作;从文件中读取数据…...

    2023/3/26 20:55:33
  19. 给定一个字符串str,求最长回文子序列长度。

    问题描述: 给定一个字符串str,求最长回文子序列长度。 思想: 思想一: 根据回文串的性质,我们可以生成一个新的字符串,新字符串的顺序是原来字符串的倒序。本题可以转化为两个字符串求最长的公共子序列。 …...

    2023/3/26 20:55:19
  20. 【3D目标检测】Rethinking Pseudo-LiDAR Representation

    目录概述细节证明基于伪点云的3D目标检测算法效果好的原因并不是伪点云这种数据表示基于深度图的图像表示的算法PatchNet证明基于伪点云的3D目标检测算法效果好的原因是从图像到点云坐标系转换的过程概述 本文是基于图像的3D目标检测算法。 贡献: 作者认为基于伪点…...

    2023/3/26 20:55:16