Docker是什么?使用Docker的好处有哪些?
本文由小千带大家了解Docker是什么,Docker和传统虚拟化对比的区别,Docker架构是怎样的,Docker的作用以及使用Docker的好处有哪些?
Docker是什么?
1.1 什么是 Docker
docker是一个开源的软件部署解决方案;
docker也是轻量级的应用容器框架;
docker可以打包、发布、运行任何的应用。
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
1.2 Docker和传统虚拟化对比
Docker 跟传统的虚拟化方式相比具有众多的优势。
Docker 在如下几个方面具有较大的优势:
更快速的交付和部署
Docker在整个开发周期都可以完美的辅助你实现快速交付。Docker允许开发者在装有应用和服务本地容器做开发。可以直接集成到可持续开发流程中。
例如:开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
高效的部署和扩容
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
Docker的兼容性和轻量特性可以很轻松的实现负载的动态管理。你可以快速扩容或方便的下线的你的应用和服务,这种速度趋近实时。
更高的资源利用率
Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理
1.3 Docker架构
Docker引擎架构图
1.4 Docker总结
Docker是世界lingxian的软件容器平台
Docker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。Docke最初实现是基于LXC。
Docker能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。
用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
1.5 Docker的作用
轻量,在一台机器上运行的多个Docker容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。
标准,Docker容器基于开放式标准,能够在所有主流Linux版本、Microsoft Windows以及包括VM、裸机服务器和云在内的任何基础设施上运行。
安全,Docker赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker默认提供超强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。
1.6 Docker的好处
Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题;——一致的运行环境
可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。——更快速的启动时间
避免公用的服务器,资源会容易受到其他用户的影响。——隔离性
善于处理集中爆发的服务器使用压力;——弹性伸缩,快速扩展
可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。——迁移方便
使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署
希望以上的分享能帮到大家!如想了解更多Java知识,欢迎关注小千,后期分享更多Java知识。
本文来自千锋教育,转载请注明出处。
Docker是什么?使用Docker的好处有哪些?相关推荐
- .netcore项目docker化,以及docker之间通信
简言: 最近刚完成公司的新系统,系统使用的是微服务架构,由于领导说要将服务docker化.下面将我的研究结果分享出来,如若有错误的地方,还请各位大佬多多指点. 目录: 什么是docker? 使用doc ...
- 【转载】从Docker容器漏洞谈Docker安全
近日,一篇在Docker博客上发表的文章显示,Docker的容器已经被突破,并且能够遍历宿主机的文件了.由于Docker的轻量,快速等等优点,让Docker在PaaS[注]领域愈发火热,自然也就吸引了 ...
- 如何使用Docker Volumes在基于Docker的应用程序上启用实时重新加载
In this post you'll learn how to configure a development environment with live-reload enabled. This ...
- Docker学习四:Docker 网络
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- Docker知识总结 (六) Docker网络
文章目录 docker网络相关命令 Docker0 (虚拟网桥) - -link(docker0不支持容器名连接访问)(使两个容器网络连通) (不推荐使用) 自定义网络(支持容器名连接访问) 网络连通 ...
- Docker 入门教程(一) - Docker Tutorial
Docker 教程 作者: Jakob Jenkov 原文链接 Docker是一种使用名为Dockerfile的打包规范将应用程序和服务器配置打包为 Docker 镜像的简单方法. Docker 镜像 ...
- 一文搞定Docker(内含docker-compose及docker核心原理)
01-Docker概述 Docker简介 Docker是基于Go语言实现的云开源项目. Docker的主要目标是: Build, Ship and Run Any App, Anywhere ,也就是 ...
- Docker学习第一课 -- docker简介和和学习路线
Docker是一个用于开发,交付和运行应用程序的开放平台.Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,您可以以与管理应用程序相同的方式来管理基础架构.通过利用 ...
- Docker 从入门到实践系列四 - Docker 容器编排利器 Docker Compose
文章目录 Compose简介 概念 组成 安装与卸载 二进制包方式安装 测试 卸载 docker-compose.yml 文件详解 概念 案例 version services image build ...
- Docker应用容器引擎——docker的常用命令详解
文章目录 1.Docker常用命令 2.docker的启动.停止.重启 3.管理命令 4.镜像管理 5.命令的详细演示 docker create docker start docker run do ...
最新文章
- Struts2 拦截器 及如何获得 servlet 请求对象 以及Struts 基本配置 Session 超时设置...
- c++中使用 数据库相关知识点 部分后面慢慢加
- 使用U盘安装操作系统
- 上班族吐槽大集合:那些发生在公司的傻X奇遇
- 信息学奥赛一本通(1169:大整数减法)
- pandas打开csv表格表头错位问题解决
- java 视频 缩略图_java获取视频缩略图
- 51nod 1292 字符串中的最大值V2(后缀自动机)
- 真香 自从用了Charles,Fiddler已经被我彻底卸载了
- canvas 边界模糊_Canvas绘制线条模糊的解决方案
- 【leetcode 简单】第五题 最长公共前缀
- MyBatis简单了解
- erstudio连接mysql_ERStudio的使用
- 查看CAD图纸时怎么将文字隐藏
- 51单片机指令系统详解
- 【Unity游戏开发】动画系统(四)Unity3d动画基础
- Windows Workflow Foundation中实现人工活动的demo,按照XPDL规范的实现
- TensorBoard引起的AttributeError: ‘Sequential‘ object has no attribute ‘run_eagerly‘问题
- flex布局(弹性盒子三)
- python的文件读写方法有哪些_python读写文件的方法有哪些
热门文章
- ACM公选课第四节高精度 2020.4.9课-2020.4.10补
- 【科研绘图】Visio保存为PDF时去掉黑框
- 网页最少要有一个html标签,PHP_网页开发人员必须知道的10个不常用HTML标签, 网页开发人员常常希望能 - phpStudy...
- python 2x与python 3x是否兼容_使.next()与Python2和3兼容
- springboot图书管理怎么实现借书时间到期提醒_智能机器人充当图书管理员,看看它能干嘛...
- 软件测试——StringFunction测试
- Computer Game
- volatile关键字——保证并发编程中的可见性、有序性
- PostgreSQL 压缩包 在win7上安装
- CentOS 卸载OpenJdk和Tomcat开机启动