Docker概述
容器技术?
容器是一个允许我们在资源隔离的过程中,运行应用程序和其依赖项的 、轻量的 、操作系统级别的虚拟化技术, 运行应用程序所需的所有必要组件都打包为单个镜像,这个镜像是可以重复使用的。
当镜像运行时,它是运行在独立的环境中,并不会和其他应用共享主机操作系统的内存、CPU或磁盘。这保证了容器内的进程不会影响到容器外的任何进程。
什么是Docker?
Docker官网地址 : https://www.docker.com/
Docker文档地址 : https://docs.docker.com/
Docker镜像仓库地址 : https://hub.docker.com/
Docker是一个开源的应用容器引擎,让开发者把他们的应用以及依赖打包到一个可移植的镜像中(打包),然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全 使用沙箱机制,相互之间不会有任何接口(隔离)。Docker底层用的Linux的cgroup和namespace这两项技术来实现应用隔离,一个完整的Docker有以下几个部分组成:
Docker Client:客户端。
Docker Daemon:守护进程。
Docker Image:镜像。
Docker Container:容器。
为什么要使用Docker?
Docker可以解决项目部署问题,比如 传统方式的项目部署会遇到以下问题:
1.组件兼容问题。(比如项目依赖jdk8的环境,如果给他降jdk7就会遇到各种兼容问题) 2.操作系统环境不同问题。(比如测试环境在centos,生产环境迁到ubuntu,就会遇到系统兼容问题)
Docker如何解决组件兼容问题?
Docker会将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包。
将每个应用放到一个隔离的容器去运行,避免相互干扰。(沙箱机制)
Docker如何解决操作系统不同问题?
Docker会将应用程序与所需要调用的操作系统函数库一起打包。(会占用很多资源)
Docker运行到不同操作系统时,直接基于打包的系统函数库,借助于操作系统的Linux内核来运行。
操作系统基本结构:
1.计算机硬件:例如CPU、内存、硬盘、网卡等 2.系统内核:所有Linux发行版的内核都是Linux,例如CentOS、Ubuntu、Fedora等。内核可以与计算机硬件进行交互,对外提供内核指令,用于操作计算机硬件。 3.系统应用:操作系统本身提供的应用、函数库。这些函数库是对内核指令的封装,使用更加方便。
Docker和虚拟机的对比
首先两者都是用来做隔离的,Docker作为一种新兴的虚拟化方式, 跟传统的虚拟化方式相比具有众多的优势。
1.更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用 率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
2.更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
3.一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些bug并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性
4.持续交付和部署
4.1 对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
4.2 使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试, 而运维人 员则 可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
4.3 而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便 运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
5.更轻松的迁移
由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。 因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行 环境的变化导致应用无法正常运行的情况。
6.更轻松的维护和扩展
Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,以及应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。
对比传统虚拟机总结如下:
特性 | Docker | 虚拟机 |
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB | 一般为 GB |
性能 | 接近原生 | 性能较差 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
引用:https://blog.csdn.net/qq_46921028/article/details/129096134