美文网首页docker
Docker的整体架构概览

Docker的整体架构概览

作者: water_lang | 来源:发表于2020-03-07 19:26 被阅读0次

如果您最近进入了容器世界,或者已经使用了一段时间,那么了解一下Docker的底层系统及元素其实是不错的主意。

了解基础

镜像还是容器?

首先是第一件事。对基本术语有明确的认知会对你有帮助的。镜像和容器似乎是等效的术语-但它们不是同一回事?我的意思是,我都使用它们将我的应用程序投放到某些服务器,PaaS或其他任何服务器上。

是的,但实际上不是

根据软件开发将容器描述为镜像的实例。这句话包括了如下含义:

  • 从一个镜像中可以创建出无数个实例
    -镜像内部的资源将出现在其所有生成的容器中。哪种资源?任何:文件,服务,二进制文件,cron作业等。
    -容器被删除后,其所有内容都将丢失。稍后,我们将学习如何处理数据持久性问题。
镜像和容器的实际差异

我们了解到,容器就是某种镜像的实例。了解基本区别就足够了。但是要提高我们的Docker技能,我们需要更深入地了解镜像概念。

镜像是一推图层。那是一层呢?一层是相对于上一层的一组差异。Dockerfile是定义如何构建映像的文件。该文件中的每条指令代表镜像的一层。层被缓存可以更快地构建镜像,因此好的Dockerfile实现确实可以使构建时间和镜像大小有所不同。


~

当生成容器时,我们将获取镜像的图层堆栈,并在顶部(容器层)上生成一个可写层。容器生命周期中生成的所有更改都将写入此层。因此,删除容器时,容器层数据将丢失。


图片.png

Docker架构101

Docker Engine

您是否尝试安装Docker?您可能已经注意到,不仅需要安装Docker,还需要安装dockerd。
那是因为Docker是一个客户端-服务器应用程序。您必须同时拥有这两个部分才能在计算机上运行Docker程序。此客户端-服务器联合起来称为docker引擎。

docker客户端只是一个CLI工具,用于针对REST API发出请求,该REST API负责与docker守护程序或dockerd进行交互。 dockerd将和操作系统一起处理以确保容器的产生正确的结果。


图片.png

等下,您刚是否说了有关客户端-服务器的东西?这是否意味着我可以向远程Docker守护程序发出请求?好了,您现在可能已经意识到诸如Kubernetes,OpenShift和Docker Swarm之类的编排服务是如何工作的。

The big picture

现在我们对Docker的主要元素有了清晰的了解,那么它们如何协同工作?

每当在Docker客户端中创建请求时,该请求会发送到Docker守护程序,它将执行所需的操作。

让我们以运行redis容器为例。我们通过运行这条命令:docker run redis


图片.png

首先,我们的计算机将向已配置的Docker主机API发出请求,该API将与Docker守护程序进行交互。

至此,Docker守护程序知道其要执行的操作。它将在主机注册表上查找redis镜像。如果不存在,则会进行一次新查找,这次将针对已配置的镜像注册中心(Docker Hub,ECR,ACR,GCR等)进行查找并提取(下载)。然后,它将基于下载的镜像生成一个容器。

其他主要Docker组件

持久性问题

如果由于某种原因,我们的postgres容器崩溃了,并且无法再次启动,则我们可能需要删除该容器并运行另一个容器。但是,如前所述,容器层数据将丢失,我们是不想丢失所有数据,对吗?

为持久性问题提供的两个解决方案是卷(volumes )和绑定安装(bind mounts)。通过这两者,我们可以将正在运行的容器的文件系统持久保存到主机中。

一方面,卷将数据存储在主机中,只有dockerd可以修改此文件系统。这是通常存储数据的首选方式。

另一方面,使用绑定安装,我们不仅可以将目录安装到容器中,还可以将具体文件安装到容器中。另外,绑定安装允许安装任何主机目录或文件。这意味着我们可以从主机将数据插入到容器中。对于配置文件而言,这是很牛逼的。


图片.png

第三种数据挂载模式tmps,他是使用Linux主机持久存储,我们不想在容器层或主机文件系统中写入的数据(例如密钥)。此数据保留在主机内存中。

为什么我的容器无法ping通Google?

也许您想在与世界隔绝的计算机中运行惊人的Web应用程序。但是,这并不是Docker的主要用例,因此网络在编排Docker容器时起着重要的作用。

Docker提供了将不同类型的网络驱动程序,而且可以附加到运行中的容器,从而实现了容器与另一个容器,Docker主机和/或Internet之间的连接。


图片.png

由于容器本身并不真正需要深度的网络知识,因此我们将离开这个话题,会在另一个主题中去讨论。

去玩吧!

现在,您应该对不同的Docker资源如何协同工作有了一个更清晰的认识。您现在应该至少能够理解“容器世界”中讨论的大多数基础概念。

我希望您进行自己的研究,以更深入地研究这些主题,并构建和部署您的容器化应用。这里有一些想法:
-尝试不同的卷/网络模式。
-测试使用琏缓存和不带缓存,并对比他们的构建时间。
-尝试多步骤构建。
-使用docker-compose。

原文 :https://medium.com/better-programming/an-overview-to-docker-architecture-15407c482c52

相关文章

  • Docker的整体架构概览

    如果您最近进入了容器世界,或者已经使用了一段时间,那么了解一下Docker的底层系统及元素其实是不错的主意。 了解...

  • 转载:[Docker] Docker整体架构图

    转载:[Docker] Docker整体架构图 一、Docker的总架构图 docker是一个C/S模式的架构,后...

  • docker 系列(二) - docker的核心组件

    整体架构 由图可知,docker整体分为三个部分: docker客户端(client) docker服务器(hos...

  • scrapy架构详解

    Scrapy架构概览 要探究清楚Spider Middleware,首先得对Scrapy框架的整体架构有个大致的认...

  • Android TV基础技术合集

    一、Android TV领域总体概览 1、OTT/IPTV领域开发你要知道的整体架构[https://www.ji...

  • Spring Cloud (一)概述

    SpringCloud整体架构概览 什么是SpringCloud 目标 协调任何服务,简化分布式系统开发。 简介 ...

  • Docker(二)

    Docker 架构 Docker 整体架构采用 C/S(客户端 / 服务器)模式,主要由客户端和服务端两大部分组成...

  • 技术架构的演进之路: 为什么需要微服务?

    整体发展概览 服务架构一直处于演变之中,为了适合自己的业务,不断的去调整。 整体的发展历程如下: 开发者视角 从一...

  • docker 小结

    原文在我的 Github 上 docker 架构 docker 整体的管理是围绕着容器和镜像进行的。镜像可以理解为...

  • Angular 4.0 架构详解

    Angular架构概览 先来看一下官方放出的架构图。 架构概览.png 这个架构图展现了 Angular 应用中的...

网友评论

    本文标题:Docker的整体架构概览

    本文链接:https://www.haomeiwen.com/subject/rvuqdhtx.html