目录
1、docker是什么
【问题】:问什么会有docker出现
Docker的出现 使得Docker得以打破过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
【docker理念】:解决了运行环境和配置问题的软件容器,方便持续继承并有助于整体发布的容器虚拟化技术。
2、容器与虚拟机比较
2.1、容器发展简史
2.2、传统虚拟机技术
虚拟机(virtual machine)就是带环境安装的一种解决方案。
它可以在一种操作系统里面运行另一种操作系统,比如在Windows10系统里面运行Linux系统CentOS7。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。
虚拟机的缺点:
1 资源占用多 2 冗余步骤多 3 启动慢
2.3、容器虚拟化技术
由于前面虚拟机存在某些缺点,Linux发展出了另一种虚拟化技术:
Linux容器(Linux Containers,缩写为 LXC)
Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
Linux 容器不是模拟一个完整的操作系统 而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。 容器与虚拟机不同,不需要捆绑一整套操作系统 ,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
2.4、容器与虚拟机对比
比较了 Docker 和传统虚拟化方式的不同之处:
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程; 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核 且也没有进行硬件虚拟 。因此容器要比传统虚拟机更为轻便。 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
2.5、为什么Docker会比VM虚拟机快
(1)docker有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
3、docker能干什么
3.1、技术职级变化
coder -> programmer -> software engineer -> DevOps engineer
3.2、开发/运维(Devops)新一代开发工程师
-
一次构建、随处运行
-
更快速的应用交付和部署
-
更便捷的升级和扩缩容
-
更简单的系统运维
-
更高效的计算资源利
3.3、Docker应用场景
Docker 借鉴了标砖集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。
3.4、哪些企业在使用docker
- 新浪
- 美团
- 蘑菇街
4、docker下载
4.1、下载地址
Docker Hub 官网:Docker Hub
4.2、docker三大发行版区别
docker.io:
为docker早期版本,由debian/ubuntu团队维护(中间停止维护过一段时间)。debian/ubuntu 官方基于docker社区源码封装的版本,有时候比docker-ce版本还要新,特点是将docker的依赖直接转接到主系统上(docker.io和docker-io是不一样的,在docker出现之前linux有一个名叫docker的系统托盘二进制文件名,为了区分文件名防止冲突,所以叫docker.io)。
docker-ce:
docker官方团队维护的社区版(免费),仅维护源码,特点是使用golang将依赖封装在一个包中。
docker-ee:
docker官方团队维护的商业版(收费),主要有以下三个级别:
- 基本:用于认证基础架构的Docker平台,得到Docker Inc.的支持以及来自Docker Store的认证容器和插件
- 标准:添加了高级映像和容器管理,LDAP / AD用户集成以及基于角色的访问控制.这些功能共同构成了Docker企业版
- 高级:添加Docker安全扫描和连续漏洞监控
【说明】
docker-ce有一个致命缺陷-依赖:docker本身依赖成百上千个第三方依赖,理论上只要有一个依赖出问题就需要完全重新编译docker,否则会被各种hack,反观 docker.io 将依赖托管给系统,只需要更新docker主程序即可,所以docker-ce不应该被用于任何期望稳定运行的产品中,推荐使用 docker.io 或者 docker-ee。centos7默认安装的是docker.io,ubuntu默认安装的是docker-ce。