《Docker技术入门与实战》——1.1 什么是Docker

简介:

本节书摘来自华章计算机《Docker技术入门与实战》一书中的第1章,第1.1节,作者:杨保华,戴王剑,曹亚仑著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.1 什么是Docker

Docker开源项目
Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司。Docker自开源后受到广泛的关注和讨论,目前已有多个相关项目,逐渐形成了围绕Docker的生态体系。dotCloud公司后来也改名为Docker Inc,专注于Docker相关技术和产品的开发。
Docker项目目前已加入了Linux基金会,遵循Apache 2.0协议,全部开源代码均在https://github.com/docker/docker上进行维护。在最近一次Linux基金会的调查中,Docker是仅次于OpenStack的最受欢迎的云计算开源项目。
现在主流的Linux操作系统都已经支持Docker。例如,Redhat RHEL 6.5/ CentOS 6.5往上的操作系统、Ubuntu 14.04操作系统,都已经默认带有Docker软件包。Google公司宣称在其PaaS(Platform as a Service)平台及服务产品中广泛应用了Docker。微软公司宣布和 Docker公司合作,以加强其云平台Azure对Docker的支持。公有云提供商亚马逊近期也推出了AWS EC2 Container,提供对Docker的支持。
Docker的主要目标是“Build, Ship and Run Any App, Anywhere”,即通过对应用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。
Docker基于Linux的多项开源技术提供了高效、敏捷和轻量级的容器方案,并且支持在多种主流云平台(PaaS)和本地系统上部署。可以说Docker为应用的开发和部署提供了“一站式”的解决方案。
Linux容器技术
Docker引擎的基础是Linux容器(Linux Containers,LXC)技术。IBM DeveloperWorks上给出了关于容器技术的准确描述:
容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化(paravirtualization)和系统调用替换中的复杂性。
Linux容器其实不是一个全新的概念。最早的容器技术可以追溯到1982年Unix系列操作系统上的chroot工具(直到今天,主流的Unix、Linux操作系统仍然支持和带有该工具)。早期的容器实现技术包括Sun Solaris操作系统上的Solaris Containers(2004年发布),FreeBSD操作系统上的FreeBSD jail(2000年左右出现),以及GNU/Linux上的Linux-VServer (2001年10月)和OpenVZ(2005年)。
虽然这些技术经过多年的演化已经十分成熟,但是由于种种原因,这些容器技术并没有被集成到主流的Linux内核中,使用起来并不方便。例如,如果用户要使用OpenVZ技术,就需要先给操作系统打上特定的内核补丁方可使用。
后来LXC项目借鉴了前人成熟的容器设计理念,并基于一系列新的内核特性实现了更具扩展性的虚拟化容器方案。更加关键的是,LXC被集成到了主流Linux内核中,进而成为Linux系统轻量级容器技术的事实标准。
从Linux容器到Docker
在LXC的基础上,Docker进一步优化了容器的使用体验。Docker提供了各种容器管理工具(如分发、版本、移植等)让用户无需关注底层的操作,可以简单明了地管理和使用容器。用户操作Docker容器就像操作一个轻量级的虚拟机那样简单。
读者可以简单地将Docker容器理解为一种沙盒(Sandbox)。每个容器内运行一个应用,不同的容器相互隔离,容器之间也可以建立通信机制。容器的创建和停止都十分快速,容器自身对资源的需求也十分有限,远远低于虚拟机。很多时候,甚至直接把容器当作应用本身也没有任何问题。
有理由相信,随着Docker技术的进一步成熟,它将成为更受欢迎的容器虚拟化技术实现,得到更广泛的应用。

目录
打赏
0
0
0
0
1408
分享
相关文章
大模型文件Docker镜像化部署技术详解
大模型文件Docker镜像化部署技术详解
101 2
自学软硬件第755 docker容器虚拟化技术youtube视频下载工具
docker容器虚拟化技术有什么用?怎么使用?TubeTube 项目使用youtube视频下载工具
Docker核心技术:Docker原理之Namespace
通过以上内容,您可以深入了解Docker中的Namespace机制及其在资源隔离中的应用,从而更好地理解和应用Docker技术。
94 25
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Docker技术背景与应用:解决现代开发中的关键问题
Docker作为一种革命性的容器化技术,极大地改变了现代软件开发的方式。通过解决环境一致性、依赖管理、部署复杂性和资源利用率等问题,Docker为开发者提供了高效、灵活的开发和部署环境。尽管面临着一些挑战,但随着技术的发展和完善,Docker将继续在现代软件开发中发挥重要作用。作为全栈工程师,掌握并善用Docker技术,将为我们的开发工作带来更多便利和可能性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
476 5
docker入门-快速学会docker
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
137 3
实战~如何组织一个多容器项目docker-compose
|
4月前
|
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
118 5
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
128 14
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等