开新坑了,开始挖坑Docker了,兄弟们。为什么需要Docker呢?Docker是什么?这里开始揭开Docker的面纱。

作者:IT王小二
博客:https://itwxe.com

一、为什么需要Docker

可能每个开发人员都有一种困扰,软件开发完之后部署项目,明明测试环境部署了一点问题没有,怎么一到正式环境就出错呢?

这种情况有时候问题可能就出在环境配置上,操作系统版本是否一致,软件运行依赖库版本是否一致,操作系统设置是否一致…等等都有可能造成部署失败。

那么有没有一种办法可以保持所有机器的环境配置都一致呢,这样同时也方便我们迁移系统,不然每次扩容部署就要重新配置一台机器的环境,这种繁琐的工作能不能配置好一次,之后就复用呢?

答案是有,这时候就提出了一种方案,虚拟机(大家应该都知道是啥吧,就不啰嗦了)。

虚拟机对于操作系统来说只是一个文件,如果需要多个只需要把虚拟机导出为ova文件,安装后即和导出的系统环境一摸一样,这样就解决了环境配置繁琐的问题,这样可以说 99.9999% 项目跑不起来不可能是环境的问题了。

那么你可能会问,既然虚拟机都解决了环境配置繁琐的问题,那为啥 Docker 还过来凑热闹呢?

这就涉及到虚拟机的不足了,虚拟机占用资源问题。

  • 虚拟机是一个完整的操作系统,会占用磁盘的资源,一个系统需要多少磁盘那么就会占用多少磁盘资源。也就意味着假如有 10 台虚拟机,那么就占用了 10 个操作系统的磁盘空间。
  • 哪怕虚拟机真实使用的内存 1MB,虚拟机仍然需要几百 MB 的内存。同理,几个虚拟机则造成了几个操作系统内存的资源浪费。
  • 启动慢,启动时间基本和操作系统启动时间一致。

说到这里,你肯定明白了,Docker就可以解决上述的不足。

Docker 是怎么解决虚拟机带来的不足呢?

其实也不能说是 Docker 解决的,应该说 Linux 发展了另一种虚拟化技术:Linux容器。有兴趣的小伙伴可以去查查资料看看 Linux容器技术发展简史

Linux 容器不虚拟化出整个操作系统,简单来说就是共享操作系统内核 + 必要运行环境,而主角 Docker 只是 Linux容器 思想的实践产品之一。

  • 容器虚拟化的不是一个完整的操作系统,所以当然磁盘资源占用少很多。
  • 容器复用了 Linux 内核,作为一个进程运行,所以占用的内存自然也少很多。
  • 容器作为系统中的一个进程,所以启动速度当然快很多,基本上是秒级。

对比 虚拟机 和 容器

特性 虚拟机 容器
硬盘使用 一般为GB 一般为MB
启动 分钟级 秒级
系统支持量 一般几十个 单机支持上千个容器

二、Docker是什么

1. Docker简介

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余 项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 的基础是 Linux 容器(LXC)等技术。

2. Docker的三大基础概念

Docker镜像(Image)

Docker 镜像就是一个只读的模板,镜像可以用来创建 Docker 容器。

例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或 用户需要的其它应用程序。

Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接 从其他人那里下载一个已经做好的镜像来直接使用。

Docker容器(Container)

Docker 利用容器来运行应用。 容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看做是一个简易版的 Linux 环境(包括root 用户权限、进程空间、用户空 间和网络空间等)和运行在其中的应用程序。

Docker仓库(Registrty)

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为 一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

最大的公开仓库是 DockerHub,存放了数量庞大的镜像供用户下载。 当然,用户也可以在本地网络内创建一个私有仓库。

当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这 样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

3. 镜像、容器、仓库关系

4. 镜像、容器、仓库的运行关系

都读到这里了,来个 点赞、评论、关注、收藏 吧!

揭开Docker的面纱相关推荐

  1. 揭开Docker的面纱(理论+安装)

    文章目录 Docker概述 Docker是什么 Docker与虚拟机的区别 Docker的使用场景 Douker的核心概念以及安装方式 Docker核心概念 CentOS安装Docker的两种方式 安 ...

  2. 揭开Annotation的面纱

    Annotation是Java5.6只后的新特征(中文称之为注解),并且越来越多的得到了应用,比如Spring.Hibernate3.Struts2.iBatis3.JPA.JUnit等等都得到了广泛 ...

  3. python可以干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  4. 偷梁换柱——揭开多态的面纱

    偷梁换柱--揭开多态的面纱                                     --从C++到.NET   声明:本文的前半部分纯粹是为初学者写的,如果你对C++对象模型稍有了解, ...

  5. Android开源框架Afinal第一篇——揭开圣女的面纱

    Android开源框架Afinal第一篇--揭开圣女的面纱 分类: Android开源框架哪点事2013-09-02 14:25 260人阅读 评论(0) 收藏 举报 Afinal 这是Afinal在 ...

  6. python可以给你干什么-Python可以用来做什么 为你揭开python神秘面纱

    Python可以用来做什么 为你揭开python神秘面纱 时间:2018-01-24     来源:解读Python 最近,编程界又一语言可谓是着实又火了一把,什么语言呢?python,python为 ...

  7. 微信支付官方揭开刷脸支付神秘面纱

    无利不起早这句话经久不衰,想要提高用户的站粘性,就必须在服务或附加值上面花点心思.微信青蛙Pro就是二者之间的建设桥梁,它将给予消费者一种全新的支付体验.今年,刷脸支付大面积普及,各种消息不胫而走,好 ...

  8. Machine Learning -- 揭开机器学习的面纱

    揭开机器学习的面纱 1. 何为机器学习? 2. 机器学习的前世今生 3. 机器学习的常用算法 4.机器学习的分类 4.1 按照学习方式类 4.1.1 监督学习 4.1.2 无监督学习 4.1.3 强化 ...

  9. 基于wayland的linux桌面,揭开Wayland的面纱 - iTech - 博客园

    揭开Wayland的面纱 - iTech - 博客园 (2011-11-30 22:38:22) 标签: 锦衣夜行 娱乐 如果在两年前,按照那篇<Wayland:Linux的新X Server& ...

  10. 柔宇六周年庆2000人齐聚,揭开“柔性星球”面纱

    深圳2018年8月13日电 /美通社/ -- 2018年8月1日,柔宇迎来第6个生日.6年前的这一天,3个人.3个小花篮组成了最简单的开业庆典,6年后的这一天,柔宇已经汇聚了来自15个国家和地区的20 ...

最新文章

  1. 关于SQL的基础知识点
  2. vue.js几行实现的简单的todo list
  3. C#最基本的小说爬虫
  4. RxSwift之深入解析核心逻辑Observable的底层原理
  5. dump解析入门-用VS解析dump文件进行排障
  6. java连接zookeeper_java 学习笔记(四) java连接ZooKeeper
  7. 程序员如何应对中年危机?让编程变得不再重要
  8. Mike Krueger 加入Mono团队
  9. python可以给你干什么-python是什么Python能干什么?python学习用法干货介绍
  10. 向日葵远程控制工具安装
  11. 搭建无人机仿真环境之PX4安装中出现的一些问题的解决
  12. GCD栅栏函数和信号量
  13. TOGAF架构愿景阶段经常用到的3种经典分析模型
  14. 【Android面试题】准备、hr面试问题总结
  15. 项目实战:Qt贝塞尔曲线拽托顶点实时显示工具
  16. 2022.10.14 英语背诵
  17. 线性表——链表的应用
  18. tomcat配置启动端口和默认项目及默认404
  19. oracle11g 使用数据泵导出导入数据
  20. 【一次认识一个市场技术指标】之RSI(相对强弱指标)

热门文章

  1. java 耗时_Java中计算程序运行耗时的方法对比
  2. Python: Basemap进行数据可视化分析------专题图绘制
  3. java开发手机app_java可以开发哪些软件
  4. 物联网蓝牙芯片的选型
  5. linux dnw工具,dnw for linux(pc)
  6. linux怎么下载dnw工具,Deepin Linux 安装dnw工具
  7. 取关几十个优质公众号,是否可惜?
  8. java观察者模式举例_写个观察者模式(Observer Pattern)的例子
  9. css3中自适应边框图片运用
  10. 计算机用word做海报,【2人回答】电脑Word怎么做海报?-3D溜溜网