《Docker进阶与实战》——1.2节功能和组件

简介:

本节书摘来自华章社区《Docker进阶与实战》一书中的第1章,第1.2节功能和组件,作者华为Docker实践小组,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.2 功能和组件
Docker为了实现其所描述的酷炫功能,引入了以下核心概念:
Docker客户端
Docker daemon
Docker容器
Docker镜像
Registry
下面就分别来简单地介绍一下。
1.2.1 Docker客户端
Docker是一个典型的C/S架构的应用程序,但在发布上,Docker将客户端和服务器端统一在同一个二进制文件中,不过,这只是对于Linux系统而言的,在其他平台如Mac上,Docker只提供了客户端。
Docker客户端一般通过Docker command来发起请求,另外,也可以通过Docker提供的一整套RESTful API来发起请求,这种方式更多地被应用在应用程序的代码中。
1.2.2 Docker daemon
Docker daemon也可以被理解成Docker Server,另外,人们也常常用Docker Engine来直接描述它,因为这实际上就是驱动整个Docker功能的核心引擎。
简单地说,Docker daemon实现的功能就是接收客户端发来的请求,并实现请求所要求的功能,同时针对请求返回相应的结果。在功能的实现上,因为涉及了容器、镜像、存储等多方面的内容,daemon内部的机制会复杂很多,涉及了多个模块的实现和交互。
1.2.3 Docker容器
在Docker的功能和概念中,容器是一个核心内容,相对于传统虚拟化,它作为一项基础技术在性能上给Docker带来了极大优势。
在功能上,Docker通过Libcontainer实现对容器生命周期的管理、信息的设置和查询,以及监控和通信等功能。而容器也是对镜像的完美诠释,容器以镜像为基础,同时又为镜像提供了一个标准的和隔离的执行环境。
在概念上,容器则很好地诠释了Docker集装箱的理念,集装箱可以存放任何货物,可以通过邮轮将货物运输到世界各地。运输集装箱的邮轮和装载卸载集装箱的码头都不用关心集装箱里的货物,这是一种标准的集装和运输方式。类似的,Docker的容器就是“软件界的集装箱”,它可以安装任意的软件和库文件,做任意的运行环境配置。开发及运维人员在转移和部署应用的时候,不用关心容器里装了什么软件,也不用了解它们是如何配置的。而管理容器的Docker引擎同样不关心容器里的内容,它只要像码头工人一样让这个容器运行起来就可以了,就像所有其他容器那样。
容器不是一个新的概念,但是Docker在对容器进行封装后,与集装箱的概念对应起来了,它之所以被称为“软件界的创新和革命”,是因为它会改变软件的开发、部署形态,降低成本,提高效率。Docker真正把容器推广到了全世界。
1.2.4 Docker镜像
与容器相对应,如果说容器提供了一个完整的、隔离的运行环境,那么镜像则是这个运行环境的静态体现,是一个还没有运行起来的“运行环境”。
相对于传统虚拟化中的ISO镜像,Docker镜像要轻量化很多,它只是一个可定制的rootfs。Docker镜像的另一个创新是它是层级的并且是可复用的,这在实际应用场景中极为有用,多数基于相同发行版的镜像,在大多数文件的内容上都是一样的,基于此,当然会希望可以复用它们,而Docker做到了。在此类应用场景中,利用Unionfs的特性,Docker会极大地减少磁盘和内存的开销。
Docker镜像通常是通过Dockerfile来创建的,Dockerfile提供了镜像内容的定制,同时也体现了层级关系的建立。另外Docker镜像也可以通过使用docker commit这样的命令来手动将修改后的内容生成镜像,这些都将在后续的章节详细介绍。
1.2.5 Registry
在前面提到的镜像中,曾指出Docker通过容器集装箱可以很方便地转运软件,其实,Registry也在其中扮演了重要的角色。
Registry是一个存放镜像的仓库,它通常被部署在互联网服务器或者云端。通常,集装箱是需要通过邮轮经行海洋运输到世界各地的,而互联网时代的传输则要方便很多,在镜像的传输过程中,Registry就是这个传输的重要中转站。假如我们在公司将一个软件的运行环境制作成镜像,并上传到Registry中,这时就可以很方便地在家里的笔记本上,或者在客户的生产环境上直接从Registry上下载并运行了。当然,对Registry的操作也是与Docker完美融合的,用户甚至不需要知道Registry的存在,只需要通过简单的Docker命令就可以实现上面的操作。
Docker公司提供的官方Registry叫Docker Hub,这上面提供了大多数常用软件和发行版的官方镜像,还有无数个人用户提供的个人镜像。其实,Registry本身也是一个单独的开源项目,任何人都可以下载后自己部署一个Registry。因为免费的Docker Hub功能相对简单,所以多数企业会选择自己部署Docker Registry后二次开发,或者购买功能更强大的企业版Docker Hub。

相关文章
|
3月前
|
Docker 容器
电子书阅读分享《4天实战 轻松玩转docker》
电子书阅读分享《4天实战 轻松玩转docker》
123 3
|
3月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
108 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
9天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
1月前
|
Unix Docker 容器
【超强图解Docker常见命令与实战】
【超强图解Docker常见命令与实战】
50 0
|
2月前
|
Java Linux Docker
Docker入门到实战
Docker入门到实战、Centos7安装Docker
|
2月前
|
Cloud Native Go 数据安全/隐私保护
自定义Docker镜像推送到Docker Hub实战
自定义Docker镜像推送到Docker Hub实战
78 2
自定义Docker镜像推送到Docker Hub实战
|
2月前
|
KVM 虚拟化 Android开发
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例Docker+KVM的部署
52 1
|
3月前
|
Linux Docker Python
Python实战技术 - Python虚拟隔离环境 和 Docker技术
Python实战技术 - Python虚拟隔离环境 和 Docker技术
199 0
|
3月前
|
Kubernetes 监控 应用服务中间件
深入Docker实战(第2版):构建、部署和优化容器化应用
深入Docker实战(第2版):构建、部署和优化容器化应用
44 0
|
3月前
|
存储 运维 Linux
精彩推荐 | 【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(实战技术总结)
在使用Docker时,管理维护工作可能会显得复杂。然而,实际上,Docker提供了许多便捷且人性化的工具,这些工具的使用技巧可以大大简化维护工作,并提升效率。通过掌握这些技巧,你不仅能够更轻松地管理Docker环境,还能展现出专业的能力。接下来我们就给大家介绍一下对于我在工作当中对于Docker容器使用的技术实战总结
48 2
精彩推荐 | 【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(实战技术总结)