您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Docker架构概述

时间:2020-04-04 14:40:12  来源:  作者:

了解最常用的开发技术之一背后的基础组件和系统的基础

Docker架构概述

Image source: Docker Logos and Photos

如果您最近来到了一个美好的容器世界,或者您已经来过一段时间,那么了解可以协同工作以提供Docker巨大好处的基础系统和元素可能不是一个坏主意。

了解基础

镜像还是容器?

首先是第一件事。 具有基本术语的明确知识从未伤害任何人。 镜像和容器似乎是等效的术语-它们不是同一回事吗? 我的意思是,我都使用它们将我的应用程序投放到某些服务器,PaaS或其他任何服务器上。

好,是的,但实际上没有

可以根据软件开发将容器描述为镜像实例。 该语句有一些含义:

· 可以从同一镜像中生成无限数量的容器。

· 镜像内部的资源将出现在其所有生成的容器中。 哪种资源? 任何:文件,服务,二进制文件,cron作业等。

· 删除容器后,其所有内容都将丢失。 稍后,我们将学习如何处理数据持久性。

实际的镜像容器差异

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

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

Docker架构概述

Image layers as explained by docs.docker.com

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

Docker架构概述

Multiple containers from the same image, docs.docker.com

Docker架构101

Docker引擎

您是否尝试安装Docker? 您可能已经注意到,不仅需要安装Docker,还需要安装dockerd。

那是因为Docker是一个客户端服务器应用程序。 您必须同时拥有这两个部分才能在计算机上运行Docker应用程序。 此客户端-服务器串联称为docker引擎。

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

Docker架构概述

Docker engine as explained by docs.docker.com

 

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

大图景

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

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

让我们以运行redis容器为例。 我们通过运行docker run redis指令来实现这一点。

Docker架构概述

Docker architecture, docs.docker.com

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

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

 

其他主要Docker零件

持久性问题

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

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

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

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

Docker架构概述

Different data storage provided by Docker, docs.docker.com

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

为什么我的容器无法ping通google

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

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

Docker架构概述

Example of a bridge network provided by docs.docker.com

由于容器本身并不需要真正的网络知识,因此我们将在本主题中另辟piece径。

 

去玩吧!

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

我邀请您进行自己的研究,以更深入地研究这些主题,并构建和部署您的容器化应用。 这里有一些想法:

· 尝试不同的卷/网络模式。

· 测试层缓存与无缓存的构建时间。

· 尝试多步骤构建。

· 沉迷于出色的docker-compose。

 

(本文翻译自Víctor Suárez Fernández的文章《An Overview of Docker Architecture》,参考:https://medium.com/better-programming/an-overview-to-docker-architecture-15407c482c52)



Tags:Docker架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
了解最常用的开发技术之一背后的基础组件和系统的基础Image source: Docker Logos and Photos如果您最近来到了一个美好的容器世界,或者您已经来过一段时间,那么了解可以协同...【详细内容】
2020-04-04  Tags: Docker架构  点击:(70)  评论:(0)  加入收藏
一、简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++...【详细内容】
2019-08-20  Tags: Docker架构  点击:(248)  评论:(0)  加入收藏
▌简易百科推荐
一、前因闲来没事,想着升级下树莓派中的应用,没曾想,全是最新的,害我以为被黑客眷顾,帮我升级了。多方查证,才知道,是上次搭建的photoprism搞的鬼,不过也不全是它的锅,只是它的yml文...【详细内容】
2021-12-28  闲余悟道    Tags:Docker   点击:(2)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(12)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(11)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(48)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(34)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(62)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(168)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条