尚硅⾕Docker笔记(1)--Docker简介
⼀、是什么?
1、问题:为什么会有 docker 的出现
⼀款产 品从开发到上线,从操作系统,到运⾏环境,再到应⽤配置。作为开发+运维之间的协作我们需要关⼼很多东西,这也是很多互联⽹公司都不得不⾯对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维⼈员都是考验
Docker之所以发展如此迅速,也是因为它对此给出了⼀个标准化的解决⽅案。
环境配置如此⿇烦,换⼀台机器,就要重来⼀次,费⼒费时。很多⼈想到,能不能从根本上解决问题,软件可以带环境安装?也就是说,安装的时候,把原始环境-模-样地复制过来。开发⼈员利⽤Docker可以消除协作编码时“在我的机器上可正常⼯作”的问题。
之前在服务器配置⼀个应⽤的运⾏环境,要安装各种软件,就拿尚硅⾕电商项⽬的环境来说吧,Java/TomcatMySQL/JDBC驱动包等。安装和配置这些东西有多⿇烦就不说了,它还不能跨平台。假如我们是在Windows上安装的这些环境,到了Linux ⼜得重新装。况且就算不跨操作系统,换另⼀台同样操作系统的服务器,要移植应⽤也是⾮常⿇烦的。
传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执⾏的⼆进制字节码等java为例)。⽽为了让这程序可以顺利执⾏,开发团队也得准备完整的部署⽂件,让维运团队得以部署应⽤程式,开发需要清楚的告诉运维部署团队,⽤的全部配置⽂件+所有软件环境。不过,即便如此,仍然常常发⽣部署失败的状况。Docker镜 像的设计,使得Docker得以打过去「程序即应⽤」的观念。透过镜像(images)将作业系统核⼼除外,运作应⽤程式所需要的系统环境,由下⽽上打包,达到应⽤程式跨平台间的⽆缝接轨运作。
2、docker理念
Docker是基于Go语⾔实现的云开源项⽬。
Docker的主要⽬标是“Build, Ship[ and Run Any App,Anywhere",也就是通过对应⽤组件的封装、分发、部署、运⾏等⽣命期的管理,使⽤户的APP (可以是⼀个WEB应⽤或数据库应⽤等等)及其运⾏环境能够做到“⼀次封装,到处运⾏”。
Linux容器技术的出现就解决了这样⼀ ⼀个问题,⽽Docker就是在它的基础上发展过来的。将应⽤运⾏在Docker容器上⾯,⽽Docker容器在任何操作系统上都是⼀-致的,这就实现了跨平台、跨服务器。只需要⼀次配置好环境,换到别的机⼦上就可以⼀键部署好,⼤⼤简化了操作
3、⼀句话
解决了运⾏环境和配置问题的软件容器,⽅便做持续集成并有助于整体发布的容器虚拟化技术
⼆、能⼲嘛
1、之前的虚拟机技术
虚拟机**(virtual machine)就是带环境安装的⼀种解决⽅案。
它可以在⼀种操作系统⾥⾯运⾏另⼀种作系统,⽐如在Windows系统⾥⾯运⾏Linux系统**。应⽤程序对此毫⽆感知,因为虚拟机看上去跟真实系统- -模-样,⽽对于底层系统来说,虚拟机就是⼀个普通⽂件,不需要了就删掉,对其他部分毫⽆影响。这类虚拟机完美的运⾏了另⼀套系统,能够使应⽤程序,操作系统和硬件三者之间的逻辑不变。
虚拟机的缺点:
1、资源占⽤多
2、冗余步骤多
3、启动慢
2、容器虚拟化技术
由于前⾯虛拟机存在这些缺点,Linux 发展出了另⼀种虚拟化技术: Linux 容器(Linux Containers,缩为LXC)。
Linux容器不是模拟⼀个完整的操作系统,⽽是对进程进⾏隔离。有了容器,就可以将软件运⾏所的所有资源打包到⼀个隔离的容器中。容器与虚拟机不同,不需要捆绑⼀整套操作系统,只需要软件⼯作所需的库资源和设置。系统因此⽽变得⾼效轻量并保证部署在任何环境中的软件都能始终如⼀地运⾏。.
⽐较了Docker和传统虚拟化⽅式的不同之处:
1、传统虚拟机技术是虚拟出⼀套硬件后,在其上运⾏⼀个完整操作系统,在该系统上再运⾏所需应⽤进程;
2、⽽容器内的应⽤进程直接运⾏于宿主的内核,容器内没有⾃⼰的内核,⽽且也没有进⾏硬件虚拟。因此容器要⽐传统虚拟机为轻便。
3、每个容器之间互相隔离,每个容器有⾃⼰的⽂件系统,容器之间进程不会相互影响,能区分计算资源。
3、开发/运维(DevOps)
⼀次构建、随处运⾏
①、更快速的应⽤交付和部署
传统的应⽤开发完成后,需要提供⼀堆安装程序和配置说明⽂档,安装部署后需根据配置⽂档进⾏繁杂的配置才能正常运⾏。Docker化
之后只需要交付少量容器镜像⽂件,在正式⽣产环境加载镜像并运⾏即可,应⽤安装配置在镜像⾥已经内置好,⼤⼤节省部署配置和测
试验证时间。
go语言开发环境搭建②、更便捷的升级和扩缩容
随着微服务架构和Docker的发展,⼤量的应⽤会通过微服务⽅式架构,应⽤的开发构建将变成搭乐⾼积⽊⼀样,每个Docker容器将变成-块“积⽊”,应⽤的升级将变得⾮常容易。当现有的容器不⾜以⽀撑业务处理时,可通过镜像运⾏新的容器进⾏快速扩容,使应⽤系统的扩容从原先的天级变成分钟级甚⾄秒级。
③、更简单的系统运维
应⽤容器化运⾏后,⽣产环境运⾏的应⽤可与开发、测试环境的应⽤⾼度–致,容器会将应⽤程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不⼀致性给应⽤带来影响,产⽣新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进⾏快速定位和修复。
④、更⾼效的计算资源利⽤
Docker是内核级虚拟化,其不像传统的虚拟化技术⼀样 需要额外的Hypervisor⽀持,所以在-台物理机上可以运⾏很多个容器实例,可⼤⼤提升物理服务器的CPU和内存的利⽤率。
4、企业级
新浪
美团
蘑菇街
三、去哪下
1、官⽹
2、仓库
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论