《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。

相关文章
|
11月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
894 52
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
供应链 测试技术 开发者
用 Docker 轻松部署 ERPNext 15:多场景实战指南
ERPNext 15 是一款功能全面的开源企业资源规划系统,结合 Docker 容器化部署,具备高效、灵活、低成本等优势。适用于小微企业数字化起步、多分支机构协同办公、开发者测试环境搭建、短期项目管理及企业内部培训等多种场景。模块化设计支持按需扩展,满足不同规模企业需求,是实现高效企业管理的理想选择。
用 Docker 轻松部署 ERPNext 15:多场景实战指南
|
安全 Java Docker
Docker 部署 Java 应用实战指南与长尾优化方案
本文详细介绍了Docker容器化部署Java应用的最佳实践。首先阐述了采用多阶段构建和精简JRE的镜像优化技术,可将镜像体积减少60%。其次讲解了资源配置、健康检查、启动优化等容器化关键配置,并演示了Spring Boot微服务的多模块构建与Docker Compose编排方案。最后深入探讨了Kubernetes生产部署、监控日志集成、灰度发布策略以及性能调优和安全加固措施,为Java应用的容器化部署提供了完整的解决方案指南。文章还包含大量可落地的代码示例,涵盖从基础到高级的生产环境实践。
897 3
|
JavaScript Linux 持续交付
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
491 89
|
Ubuntu Linux Docker
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
364 27
|
关系型数据库 MySQL 数据库
Docker Compose-实战
Docker Compose-实战
409 5
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
577 3
实战~如何组织一个多容器项目docker-compose

热门文章

最新文章