【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的镜像加速器。


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


那么,我们下期再见。

相关文章
|
11天前
|
缓存 安全 Docker
《Docker 简易速速上手小册》第3章 Dockerfile 与镜像构建(2024 最新版)
《Docker 简易速速上手小册》第3章 Dockerfile 与镜像构建(2024 最新版)
42 0
|
5天前
|
运维 Linux 虚拟化
Docker详解(二)——Docker技术原理与架构
Docker详解(二)——Docker技术原理与架构
13 1
|
3天前
|
Docker 容器
【Docker】掌握 Docker 镜像操作:从基础到进阶
【Docker】掌握 Docker 镜像操作:从基础到进阶
|
1天前
|
Kubernetes 监控 Docker
|
1天前
|
Java Docker 微服务
|
1天前
|
运维 Linux Docker
Docker详解(四)——Docker换源与镜像拉取
Docker详解(四)——Docker换源与镜像拉取
10 0
|
2天前
|
应用服务中间件 Shell nginx
制作docker镜像的dockerfile编写规则汇总
制作docker镜像的dockerfile编写规则汇总
|
2天前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI 操作报错合集之在本地构建easyrec docker镜像时遇到了无法连接docker服务如何解决
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
2天前
|
Linux 网络安全 Docker
【Linux】-docker配置容器并打包成镜像
【Linux】-docker配置容器并打包成镜像
|
3天前
|
Kubernetes 负载均衡 Docker
【专栏】构建高效微服务架构:Docker与Kubernetes的完美搭档
【4月更文挑战第27天】本文介绍了Docker和Kubernetes在构建微服务架构中的应用。Docker是开源容器引擎,用于打包和分发应用,实现隔离和封装,提升可扩展性和可维护性。Kubernetes是容器编排平台,自动化部署、扩展和管理容器,提供负载均衡和故障转移。二者结合,能高效支持微服务架构。文中通过实例展示了如何将用户、商品和订单服务用Docker打包,再用Kubernetes部署和管理,确保微服务稳定运行。

热门文章

最新文章