Docker是什么?Docker为什么出现?

首先看docker图标,鲸鱼背上驮着集装箱

假定您在开发一个电商项目,您使用的是一台笔记本电脑,而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。此外,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列的支持文件。您希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销。请问?

您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复?

答案就是使用容器。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案----系统平滑移植,容器虚拟化技术

举个例子:

在以前,开发人员只需要提交源代码(jar包等等)直接发给运维人员即可。然后,运维开始完成部署。会有三种情况让运维人员头疼。

第一种情况,部署环境问题。

运维在部署的时候会有很多环境问题:mysql版本、redis补丁、java版本(开发的时候是java8,生产的时候是java7,可能一些java8的新特性,根本无法使用)

第二种情况 ,安装过于繁琐。

运维因为环境问题导致各种软件版本不一样,这时候运维人员就会要求开发人员写一张list清单(环境配置表)。开发是什么环境,我运维就怎么配。那么问题来了:在多台集群的情况下。这时候运维就疯了,或许我的mysql是1主1从,装2台。redis是3主3从,装6台。运维稍微因为版本和环境配置,装错一步,可能系统就跑不起来了,大家只能互相扯皮,运维是非常非常痛苦的。

第三种情况,弹性发布太慢。

假设服务器不够用了,运维需要扩容、缩容,符合弹性的发布。redis是六台3主3从。现在环境并发量大了,需要马上扩容,变成4主4从,瞬间要求你起来两个实例,如果按照以前的安装步骤,你把运维逼疯,也不可能秒级别的把服务跑起来。

环境配置相当麻烦,换一台机器,就要重来一次,费力费时。很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境一模一样复制过来,开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。

能不能把软件和环境打包成一个镜像文件给运维?

这时候就要用到docker引擎。开发过程所跑的环境和配置可以原封不动的移植过来,达到了环境的匹配和整合。

假设你在北京某小区,5号楼5单元朝北的屋子501室,找到工作后要搬家到上海,绝对不可能是同样的小区,同样的楼层,同样的户型。这时候你就要打包、解压、货拉拉搬家公司,搬过去,重新收拾,非常麻烦,而且还可能适应不了新环境。

用了docker以后,陆地航空母舰,类似于推土机直拔下去,连根基都搬起来,搬到另外一个地方,也就是直接搬楼,就没有上面述说的问题了。

也就是说,docker实现了从搬家到搬楼

之前在服务器配置一个应用的运行环境,要安装各种软件,就拿某电商项目的环境来说,Java/ RabbitMQ/ MySQL/ JDBC等驱动包等。安装和配置这些东西有多麻烦就一一举例了,它还不能跨平台使用。假如我们在windows上安装的这些环境,到了Linux又得重新装,况且就算不跨操作系统,换另一台同样操作系统的服务器,要移植应用也是非常麻烦的。

传统上认为,软甲编码开发/测试结束后,所产生的成果即是程序或是能够编译执行的二进制字节码等(java为例)。而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让运维团队得以部署应用程式。开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,仍然常常发生部署失败的状况。Docker的出现使得Docker得以打破过去[程序及应用]的观念。通过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由上而下打包,达到应用程式跨平台的无缝运作。

[视频链接:尚硅谷]

http://【尚硅谷2022版Docker实战教程(docker教程天花板)】https://www.bilibili.com/video/BV1gr4y1U7CY?p=2&vd_source=8e158ad327778f3c8fcf0d37f14b6a8a

Docker为什么出现相关推荐

  1. /var/lib/docker/overlay2/xxxxx no such file or directory docker文件删除引发的问题

    记一次误删引发的服务雪崩 K8s node节点磁盘报警,报警后我找到服务中占用磁盘最多的地方,在overlay2目录下,对下面的文件进行了删除   删除后,有状态服务先出现了问题,服务无法启动.停止. ...

  2. 本地打包Docker镜像上传至阿里云远程仓库(一站式脚本)

    打包镜像上传至远程仓库: 1. 本地项目为 mytest-project 2. 仓库为阿里云镜像仓库 registry.cn-beijing.aliyuncs.com/test/mytest-proj ...

  3. docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name

    docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming ext ...

  4. Docker容器的备份与恢复,Docker镜像的备份与恢复

    1. 备份容器 首先,为了备份Docker中的容器,我们会想看看我们想要备份的容器列表.要达成该目的,我们需要在我们运行着Docker引擎,并已创建了容器的Linux机器中运行 docker ps 命 ...

  5. docker安装kafka消息队列

    1. 启动zookeeper容器(Zookeeper用于崩溃检测,实现Topic发现,和维护Topic的生产和消费状态) docker run -d --name zookeeper -p 2181: ...

  6. 设置普通用户执行docker命令,执行docker命令无需输入密码或者切换root用户

    每次执行docker命令都要输入密码或者切换root用户,非常不方便,尤其是在shell脚本中就更麻烦了,一起来解决这个问题: 1. 创建名为docker的组,如果之前已经有该组就会提示已存在: su ...

  7. docker :open /var/lib/docker/tmp/GetImageBlob318829910: no such file or directory异常解决

    千万不要直接去重装docker,不要删除镜像,不要手动创建目录和文件,只需要这样就好了!

  8. 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包

    假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...

  9. 使用rancher对Docker容器服务升级

    这是笔者以前使用到的一个docker管理工具--rancher 升级服务的步骤 记录一下,说不定有人需要或者以后能用上呢? 1.打包好后上传服务器,编写Dockerfile FROM jdk8apli ...

  10. Linux/docker下oracle开启监听,开启自动启动

    写在前头: 之前呢,使用docker安装了oracle,但它默认是会关闭的.使用了几天以后突然连接异常了,报的问题是oracle监听有问题了,我知道了是oracle服务自动关闭了,监听也跟着关了.所以 ...

最新文章

  1. 结对编程项目作业-设计文档
  2. openstack学习笔记五 多节点部署之 rabbitmq信息中枢与元数据
  3. java 网站源码 四套模版 兼容手机平板PC 在线编辑模版 freemaker 静态引擎
  4. 奇怪吸引子---LuChen
  5. Actor IM 中 WebRTC的设定
  6. spring mvc静态资源访问的配置
  7. 技术沙龙|实力赋能开发者,助力企业从容应对数字化转型难题
  8. Java面试宝典 Beta5.0版 (2018年最新公测版)
  9. bootstrapform表单重置_“bootstrap table”怎么重置表单?
  10. 30个必会的Axure小技巧
  11. java中的各种集合排序
  12. PMP-35项目沟通管理
  13. json格式校验(json格式校验器)
  14. 百度竞价后台操作技巧
  15. UOJ #449. 【集训队作业2018】喂鸽子
  16. 一台电脑安装两个jdk的方法
  17. 易生活(二)-APP—安卓中评论功能的实现
  18. 【小程序源码】宝宝起名神器
  19. 金蝶KIS商贸版即时库存表二次开发增加保质期有效期至字段列
  20. 关于表单的Validform自定义验证

热门文章

  1. Win10计算机首次使用时间,Win10系统如何查看开机用时?Windows10系统查看开机时间的两种方法...
  2. DDR2 IP核地址总线解疑
  3. 天基实业谈谈对投资理财的认识
  4. 学计算机是否加速掉发,你的电脑是否经常发生卡顿?让程序员来教你几个提速妙招...
  5. Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependen
  6. 解决Pytorch:raise err OSError: [WinError 126] 找不到指定的模块caffe2_detectron_ops.dll” or one of its dependen
  7. 通达信版F10检索工具下载
  8. java中Pair怎么用
  9. 《新托业语法和词汇详解及实战试题》
  10. 阿里云服务器安装RocketMQ及其控制台