【Docker】Docker容器与虚拟机的对比、三要素、架构和镜像加速器的详细讲解

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【Docker】Docker容器与虚拟机的对比、三要素、架构和镜像加速器的详细讲解

f9db18e097574581a821a17457f15086.png

前言:Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux系统 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker与虚拟机的对比

Docker与虚拟机在几个方面有所不同。首先,磁盘空间使用方面,Docker的镜像层一般很小,只有几十KB,而虚拟机则通常以GB为单位。

  • 性能方面,Docker依附于宿主机,所以性能接近宿主机,而虚拟机相对于原主机来说性能较差。[1]再者,资源利用率方面,Docker的资源利用率较高,而虚拟机的资源利用率较低。
  • 隔离性方面,Docker和虚拟机都具有安全隔离的特性。
  • Docker直接在宿主机内核上运行,而虚拟机运行在隔离层Hypervisor上。
  • Docker可以同时运行上千个容器,而虚拟机相对较厚重,最多只能启动几十个。
  • 在运行速度方面,Docker优于虚拟机,Docker容器的启动和停止可以在秒级实现,而传统的虚拟机方式要慢得多。

总的来说,Docker作为一种轻量级的虚拟化方式,在运行应用上具有显著的优势,启动速度快,对系统资源需求少,指令简明,学习成本较低


Docker的三要素(镜像、容器、仓库)

Docker中的三要素为:Image(镜像),Container(容器),Repository(仓库)。

Image(镜像)一个只读的文件系统

Docker中的镜像是一个只读的文件系统,它包含了运行一个容器所需的所有文件和配置。镜像可以通过扩展现有镜像来创建新的镜像。大多数镜像都是通过在基础镜像中安装和配置需要的软件来构建的。基础镜像是镜像栈的最底部,而位于下面的镜像称为父镜像。当从一个镜像启动容器时,Docker会在该镜像的最顶层加载一个读写文件系统,我们想在Docker中运行的程序就是在这个读写层中执行的。


基础镜像可以是任何可用的镜像文件,如果在Docker主机上找不到指定的镜像文件,Docker会从Docker Hub Registry上拉取所需的镜像文件。如果找不到指定的镜像文件,docker build会返回一个错误信息。

7f49a701d582409fb26470fd8a7fb681.png

Container(容器)一个独立运行的应用程序的实例

在Docker中,容器是指一个独立运行的应用程序的实例。每个容器都是在Docker引擎上运行的一个进程,它具有自己的文件系统、网络和进程空间。容器是通过Docker镜像创建的,镜像是一个只读的模板,包含了运行应用程序所需的所有文件和配置。容器可以被启动、停止、删除和重启,它们提供了一种轻量级、可移植和可扩展的方式来打包和部署应用程序。


在Docker中,容器的网络配置是通过Linux桥接实现的。在宿主机上虚拟一个Docker容器网桥(docker0),当启动一个容器时,Docker会为容器分配一个IP地址,并将Docker网桥作为容器的默认网关。这样,同一宿主机上的容器可以通过容器的IP地址直接进行通信。Docker还提供了四种网络模式,包括桥接模式、主机模式、容器模式和无网络模式,以满足不同的网络需求。综上所述,Docker中的容器是一个独立运行的应用程序实例,它具有自己的文件系统、网络和进程空间。容器是通过Docker镜像创建的,可以被启动、停止、删除和重启。容器的网络配置是通过Linux桥接实现的,同一宿主机上的容器可以通过容器的IP地址直接进行通信。此外,Docker还提供了不同的网络模式来满足不同的网络需求。


993033f2a76742b380d2a23719a939e7.png

Repository(仓库)保存镜像统一存储的位置

在Docker中,仓库(Registry)是用来保存所有创建好的镜像统一存储的位置。它分为私有仓库(Private Registry)和公共仓库(Public Registry)。公共仓库的名字是Docker Hub,它是世界上最大的容器镜像存储库,包含了大量的镜像供使用。这些镜像可以是用户自己创建的,也可以是在别人的镜像基础上创建的。Docker Hub提供了免费的公共仓库供用户存储和共享镜像,同时也提供了私人仓库的订阅计划供用户选择。


对于私有仓库的搭建,可以通过以下步骤进行:


1.环境部署:准备好搭建私有仓库所需的环境。

2.自建仓库:搭建私有仓库,可以使用Docker Registry来实现。

3.使用TLS证书:生成TLS证书,以确保仓库的安全性。

4.Nginx反向代理仓库:使用Nginx作为反向代理来提供更好的访问控制和性能。

5.可视化私有仓库:可以使用一些可视化工具来管理和监控私有仓库的使用情况。

总结来说,Docker中的仓库是用来存储和分发镜像的地方,可以是公共仓库(如DockerHub)或私有仓库。私有仓库可以通过搭建自己的仓库来实现,并可以使用TLS证书和Nginx反向代理来增加安全性和性能。同时,还可以使用可视化工具来管理和监控私有仓库的使用情况。

Docker的架构及其工作原理

Docker的架构由多个组件组成。其中,Docker Daemon是Docker架构的主体部分,它提供了Server的功能,可以接受Docker Client的请求。Docker Engine是Docker内部的执行引擎,它以Job的形式执行一系列工作。


Docker架构中的其他主要模块包括:


1.Docker Client:作为用户与Docker交互的命令行工具或API。

2.Docker Registry:用于存储和分发Docker镜像的中央仓库。公有的Docker Registry包括Docker Hub,用户可以通过互联网访问获取容器镜像。同时,Docker也支持构建本地私有的Docker Registry,以在内网环境中获取容器镜像。

3.Graph:用于存储Docker镜像和容器的文件系统。它包含了镜像的各个层以及容器的文件系统变化。[2]

此外,Docker架构还包括Driver、libcontainer和Docker container等组件,它们在Docker的运行过程中发挥着重要的作用。

总结起来,Docker的架构由Docker Daemon、Docker Client、Docker Registry、Graph、Driver、libcontainer和Docker container等多个组件组成。Docker Daemon作为主体部分,接受Docker Client的请求并通过Docker Engine执行各种工作。Docker Registry用于存储和分发Docker镜像,可以是公有的Docker Hub或私有的本地Registry。Graph用于存储镜像和容器的文件系统。

87091459df254470906df0141591f5ec.png

Docker的镜像加速器的配置

Docker的镜像加速器是用来加速Docker官方镜像的下载的工具。阿里云容器镜像服务ACR提供了官方的镜像站点,可以加速官方镜像的下载。

要配置镜像加速器,可以按照以下步骤进行操作:

首先,在终端中输入命令:

sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://mqkiky4e.mirror.aliyuncs.com"] } EOF

这将在/etc/docker/目录下创建一个名为daemon.json的文件,并将镜像加速器的地址配置为为"https://mqkiky4e.mirror.aliyuncs.com"。

然后,重新加载配置文件,可以使用命令:

sudo systemctl daemon-reload

最后,重启Docker服务,可以使用命令:

sudo systemctl restart docker

这样你大概率可能也许或许应该是就成功配置了Docker的镜像加速器。


如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。


那么,我们下期再见。

相关文章
|
17天前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
70 5
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
254 5
|
1月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
127 6
|
3月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
682 108
|
4月前
|
存储 监控 测试技术
如何将现有的应用程序迁移到Docker容器中?
如何将现有的应用程序迁移到Docker容器中?
370 57
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
3月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
236 16