Docker基础:Docker是什么,为什么这么火?

开源
什么是LXC?LXC 是 Docker 的底层基石,但是在 Docker 0.9 版本的时候,Docker引入了基于 Go 语言构建的 Libcontainer 的 execution driver。

​一、Docker是什么?

Docker是一个开源的应用容器引擎,它基于go语言开发,并遵从Apache2.0开源协议。使用Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发布到任意的 Linux 机器上运行。Docker 的核心思想打包装箱,每个箱子是互相隔离的,互不影响。

二、Docker 历史

2010 年,几个搞 IT 的年轻人,在美国旧金山成立了一家名叫 dotCloud 的公司。dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。dotCloud 平台底层利用了 Linux 的 LXC 容器技术。       

什么是LXC?LXC 是 Docker 的底层基石,但是在 Docker 0.9 版本的时候,Docker引入了基于 Go 语言构建的 Libcontainer 的 execution driver。有了 Libcontainer 这个项目,Docker 不再需要依赖于 Linux 部件(LXC,libvirt,systemd-nspawn...)就可以处理 namespaces、control groups、capabilities、apparmor profiles、network interfaces。LXC 逐渐沦为可选项。       

图片

 后来为了方便创建和管理这些容器,dotCloud 基于 Google 公司推出的 Go 语言开发了一套内部工具,之后被命名为 Docker。Docker 就是这样诞生的。Docker 1.8 版本 中 LXC 被 弃用,在Docker 1.10版本LXC 彻底离开Docker。Docker 官方推出的Libcontainer 集成了 Linux 内核中的很多特性,成为一个独立、稳定且不受制于 Linux 的 Library。       

2013 年 3 月,dotCloud 公司的创始人之一28 岁的 Solomon Hykes 正式决定,将 Docker 项目开源。开源当月发布了 Docker 0.1 版本。此后的每一个月, Docker 都会发布一个迭代版本。到 2014 年 6 月 9 日, Docker 1.0 版本正式发布了。       

图片

这个时候的 Docker已经成为行业里人气最火的开源技术、。Google、微软、Amazon、 VMware 这样的互联网巨头们都对它青睐有加,表示将全力支持。Docker 火了之后, dotCloud 公司干脆把公司名字也改成了 Docker Inc. 。

三、为什么选择 Docker

3.1 更高效的利用系统资源

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外的开销,Docker 对系统资源的利用率比虚拟机更高。无论是应用执行速度、内存损耗或者文件存储,都要比传统虚拟机技术更高效。

3.2 更快速的启动时间

传统的虚拟机技术启动应用服务往往需要好几分钟, Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,可以达到秒级、甚至毫秒级的启动时间。大大的节约了项目部署的时间。

3.3 保证一致的项目运行环境

开发过程中一个非常常见的问题是本地环境、测试环境、生产环境不一致。经常能碰到开发、测试环境运行正常而到了生产环境出现莫名其秒的问题。而 Docker 的镜像提供了除内核外完整的项目运行环境,确保了应用运行环境一致性,从而避免了因为开发环境不一致造成的部署问题。

3.4 持续交付和部署

对开发和运维(DevOps)人员来说,最理想的就是一次创建或配置,可以在任意服务器上正常运行。使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration)系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment)系统进行自动化部署。而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的在生产环境中部署该镜像。

3.5 更轻松的服务迁移

由于 Docker 确保了运行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易地将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

3.6 更轻松的维护和扩展

Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大降低了应用服务的镜像制作成本。

四、容器与虚拟机的比较

Docker 和传统虚拟化方式的不同,容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。       

图片

与传统的虚拟机相比,Docker 优势体现为启动速度快、占用体积小。

特性​

Docker​

虚拟机​

启动​

秒级​

分钟级​

硬盘使用​

MB​

GB​

性能​

接近原生​

较差​

系统支持量​

单机支持上千个容器​

一般几十个​

个人博客网站:https://programmerblog.xyz。

责任编辑:武晓燕 来源: IT技术分享社区
相关推荐

2014-10-10 13:46:33

Docker

2013-03-04 10:10:36

WebKit浏览器

2024-01-10 17:04:13

通信模块通信技术通信模组

2024-03-07 10:21:56

2021-03-26 08:47:01

SD-WAN网络5G

2020-05-06 16:47:59

ServerlessMVC架构

2021-06-30 06:56:18

数据泄露零信任网络安全

2020-05-25 20:46:59

Python编程语言程序员

2015-01-14 14:27:18

Docker容器镜像

2016-12-28 10:37:46

AndroidGradleApache Ant

2018-07-25 14:36:46

边缘计算云计算

2024-03-01 17:01:15

GraphQL后端

2023-05-04 11:39:17

经营分析流量项目

2022-03-31 11:38:09

经营分析传统企业运营商

2016-06-06 11:14:21

DockerDelphix

2024-02-04 16:51:47

2022-12-22 07:44:04

2017-07-26 10:21:46

DockerLinux容器

2021-03-16 08:35:14

Kubernetes Docker容器

2020-04-26 12:08:10

Python编程语言开发
点赞
收藏

51CTO技术栈公众号