文章目录

  • 1. 我们为什么使用Docker?
  • 2. Docker是什么?
    • 2.1 镜像-(概念:复制的程序)
    • 2.2 容器-(概念:集装箱)
    • 2.3 仓库-(概念:存放镜像的地方)
  • 3. Docker的作用?
    • 3.1 结论
    • 3.2 总结
    • 3.3 举例
  • 4. 传统虚拟机与Docker虚拟化技术的对比
  • 5. Docker和虚拟机形象比喻

关于Docker的应用我其他两篇文章中有,链接如下:

安装: Centos7安装docker并更改阿里云下载镜像地址
使用: Docker拉取Mysql镜像并启动访问及docker常用命令介绍

1. 我们为什么使用Docker?

当我们在工作中,一款产品从开发设计到上线运行,其中需要开发人员和运维工程师,开发人员负责代码编写,开发产品,运维工程师需要测试环境,产品部署。这之间就会有分歧。

就好比我之前开发的一个电商项目,其中包括 Java 环境/Tomcat/ MySQL / JDBC 驱动包/相应 jar 包,还有SSM框架及搜索引擎Solr等技术,仅仅是在windows系统上协调这些项目的版本,保证环境不冲突及项目正常运行,就需要大量时间来调试,而我们技术人员往往在windows系统上开发及调试,那么上线的时候需要部署到linux系统中,这就会导致由于环境不同的产品部署问题。

往往就算不跨系统,而是换一台同样操作系统的服务器,要移植部署依然很麻烦,那么为了解决这个问题,Docker就体现出了他的用处!

2. Docker是什么?

Docker 是一个开源的应用容器引擎

Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。

再通俗点说,我们使用Docker,只需要配置一次Docker容器上面的应用,就可以跨平台,跨服务器,实现应用程序跨平台间的无缝衔接

Docker实际上就相当于一个封闭的沙盒或者是集装箱,它可以把不同的应用全都放在它的集装箱里面,并且以后有需要的时候,可以直接把集装箱搬到其他平台或者服务器上,实现容器虚拟化技术,随用随搬

一句话,Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

2.1 镜像-(概念:复制的程序)

  1. 定义:Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
  2. 作用 : Docker镜像是用来启动容器的,也用来创建新的容器,类似于虚拟机的快照。
  3. 特点 : 镜像不包含任何动态数据,其内容在构建之后也不会被改变,在Docker里可以创建镜像,也可以从第三方的网站上下载别人已经做好的镜像来使用

2.2 容器-(概念:集装箱)

  1. 定义 : 一个Docker镜像可以实例化出来多个容器,而每一个容器之间是独立运行的,没有任何依赖
  2. 作用 : 运行程序员开发的应用程序的
  3. 特点 : Docker镜像是不能运行的,是静态的,而Docker容器是运行的,是动态的,可以将Docker容器想像成一个简化版的操作系统和一些核心基础的应用。每个容器运行一个独立的应用程序。

2.3 仓库-(概念:存放镜像的地方)

  1. 定义 : Docker仓库提供一个注册服务器,用于存储多个仓库,而仓库是用来存储镜像位置的
  2. 作用: 我们自已创建了一个镜像之后,可以使用push命令将镜像文件上传到仓库中,后期如果在其它服务器上需要使用镜像,就可以从仓库上下载过来并使用

总结: 说白了镜像就等于一个centos系统的安装程序,一个镜像只是一个只读环境而已,这个镜像提供的是基础的运行环境,而你在Centos7系统中安装的应用,比如Redis,Mysql这些应用就相当于一个容器,这些容器都是单独可运行的,仓库的概念就更好理解了,在Centos7系统中下载的所有应用都被收集到同一个仓库里了,比如Maven仓库

3. Docker的作用?

3.1 结论

绝大部分应用,开发者都可以通过docker build创建镜像,通过docker push上传镜像,用户通过docker pull下载镜像,用docker run运行应用。用户不需要再去关心如何搭建环境,如何安装,如何解决不同发行版的库冲突,而且通常不会需要消耗更多的硬件资源,不会明显降低性能。这就是所说的标准化、集装箱的原因所在。

  1. 解决运行环境不一致所导致的问题。这样就不会产生“本地运行没问题,可一到服务器上就不行了”的情况
  2. 限定最大的cpu使用内存硬盘,这样就起到了隔离的作用,避免产生“一块代码产生死循环,把磁盘占满了,其它程序也挂了”的情况。
  3. docker的标准化让快速扩展,弹性伸缩变得简单

3.2 总结

容器不是模拟一个完整的操作系统而是对进程进行隔离,有了容器,我们就可以将软件运行所需的所有资源打包到一个隔离的容器中,容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行

3.3 举例

举例: 我把货物一辆兰博基尼跑车(好比开发好的应用APP),打包放到一容器集装箱里,它通过货轮可以轻而易举的从上海码头(CentOS7.2环境)运送到纽约码头(Ubuntu14.04环境)。而且运输期间,我的兰博基尼(APP)没有受到任何的损坏(文件没有丢失),在另外一个码头卸货后,依然可以完美风骚的赛跑(启动正常)

4. 传统虚拟机与Docker虚拟化技术的对比

领域 传统虚拟机 Docker虚拟化
应用交付与部署 每发布一个应用程序,都需要走一遍流程 集装箱式交付,整体交付
资源消耗 传统虚拟机要具备独立的虚拟CPU、内存、操作系统,如果我们有10个虚拟机,则需要安装10个操作系统,虚拟出来10个CPU、内存等,因此造成大量的资源浪费 容器可以运行相同的一个操作系统内核,让一个容器的消耗与一个进程一样
启动 虚拟机硬件需要初始化,需要启动时间 没有虚拟机硬件初始化过程,开箱即用
应用安装 需要大量的安装包及安装过程,如下载完整镜像也非常耗费时间 统一仓库拉取,结构简单,拉取速度快
故障 虚拟机内应用崩溃,理论上不会影响其它虚拟机以及上面运行的应用的,除非是硬件或者Hypervisor有Bug 因为共用内核,只靠cgroup隔离,应用之间的隔离是不如虚拟机彻底的,如果某个应用运行时导致内核崩溃,所有的容器都会崩溃

5. Docker和虚拟机形象比喻

什么是物理机


什么是虚拟机


什么是Docker

参考资料:
https://www.zhihu.com/question/28300645/answer/585166942
https://baijiahao.baidu.com/s?id=1665273511649700130&wfr=spider&for=pc
https://baijiahao.baidu.com/s?id=1668622380573288716&wfr=spider&for=pc
https://blog.csdn.net/qsbbl/article/details/86715741
https://baijiahao.baidu.com/s?id=1666555716941349742&wfr=spider&for=pc

Docker是什么?它的优点与作用是什么?我们为什么使用docker?相关推荐

  1. Baumer工业相机中曝光与增益两种功能的优点和作用以及使用方法

    项目场景 Baumer工业相机堡盟相机是一种高性能.高质量的工业相机,可用于各种应用场景,如物体检测.计数和识别.运动分析和图像处理. Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分 ...

  2. docker 镜像修改的配置文件自动还原_所以到底该如何修改 docker 容器的端口映射!!!...

    |问题背景 docker 创建容器时,指定了端口映射(-p) 如果容器运行之后发现端口需要改怎么办? 当前是访问 9999 端口 |删除原有容器,重新创建新的容器 |删除容器 docker |重新创建 ...

  3. docker宿主机访问容器_干货来啦!带你初探Docker逃逸

    Docker是当今使用范围最广的开源容器技术之一,具有高效易用的优点.然而如果使用Docker时采取不当安全策略,则可能导致系统面临安全威胁. 本期安仔课堂,ISEC实验室的张老师将为大家介绍不同环境 ...

  4. docker和虚拟机的区别_详解win7操作系统下安装部署Docker环境

    概述 大多数朋友还是用win7,有时不想打开vmware虚拟机想直接打开docker的话可以用下面的方式,还是挺方便的,下面基于win7操作系统环境,需要系统支持" Hardware Vir ...

  5. docker文件过大,Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区。docker迁移

    docker文件过大,Docker容器引擎,迁移/var/lib/docker/到本机其它挂载分区或远程主机的某个分区.docker迁移. 0. 迁移前检查镜像和容器 docker images 和d ...

  6. Docker的安装部署及优化详解(汇总版,学习docker这一篇就够了)

    目录 一.部署20版本的docker 1.1 安装依赖包 1.2 设置阿里云镜像 1.3 安装docker社区版 1.4 关闭增强机制 1.5 前体准备(开启服务) 1.6 设置镜像加速 1.6-1 ...

  7. docker容器杀不死_了解如何停止,杀死和清理Docker容器

    docker容器杀不死 In the previous article 'learn how to create and start Docker containers', we discussed ...

  8. docker配置阿里云镜像加速、镜像和容器常用命令、docker镜像原理

    6. Docker 配置阿里镜像加速服务 6.1 docker 运行流程 6.2 docker配置阿里云镜像加速 查看自己的镜像加速地址(链接直达):https://cr.console.aliyun ...

  9. Docker 私有仓库部署和管理 | Harbor 概述 - 核心组件 - 架构拓扑 | Harbor 构建 Docker 私有仓库实战(理论+实操,超详细!)

    文章目录 一.Docker Harbor 概述 1.Harbor 简介 2.Harbor 的优势 二.Harbor 的核心组件 1.Proxy 2.Registry 3.Core services 4 ...

最新文章

  1. 33.搜索插件——autocomplete
  2. 青少年蓝桥杯_2020_steam考试_中级组_第四题
  3. Hibernate 缓存
  4. nginx官方模块之http_sub_status_module
  5. apt-mirror 校验错误文件处理
  6. 在ABAP XSLT中调用ABAP类的方法
  7. python特殊函数__str__、__repr__和__len__
  8. 【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(1)
  9. 编程中的移位运算符简单解释
  10. 容器编排技术 -- Kubernetes kubectl create namespace 命令详解
  11. Java即时编译器JIT之简单介绍
  12. 什么是Java Marker Interface(标记接口) 1
  13. 未来已来?揭开量子计算机的神秘面纱
  14. 你该学点HTML/CSS知识的9大理由
  15. ns账号切换服务器对存档有影响吗,switch主副账号切换与存档机制简介 - 步蜗网...
  16. 手机网络IP地址问题
  17. FIL、XCH、BZZ哪个更好?
  18. 详解Win10系统下打开.jks签名文件的方法
  19. 佳能软件不用光盘安装升级包的方法
  20. 关于小程序上传图片到服务器

热门文章

  1. Compose的主题Theme(十)
  2. TFRecord相关资料
  3. 关于组织支持度和员工敬业度
  4. 利用ESP8266+ESPNOW实现多点无线通信
  5. 14、ESP-NOW 使用
  6. 2022年全球市场驱蚊产品总体规模、主要生产商、主要地区、产品和应用细分研究报告
  7. 弱校联盟#con4海豹的队列
  8. centos7配置静态网络
  9. android实现runnable接口,013 Android多线程-实现Runnable接口
  10. 笔记本各型号CPU性能比较