Docker架构及入门组件
传统与新一代虚拟化
早些时候,我们曾经创建虚拟机,每个虚拟机都有一个占用大量空间并使其繁重的操作系统。
现在在docker容器的情况下,您有一个操作系统,并且容器之间共享资源。因此它重量轻,可以在几秒钟内启动。
Docker架构
下面是Docker架构的简单图表。
让我向您解释一个docker架构的组件。
Docker引擎
它是整个Docker系统的核心部分。Docker Engine是一个遵循客户端 - 服务器架构的应用程序。它安装在主机上。Docker Engine中有三个组件:
服务器:这是名为dockerd的docker守护进程。它可以创建和管理泊坞窗图像。集装箱,网络等
Rest API:用于指示docker守护进程做什么。
命令行界面(CLI):它是一个用于输入docker命令的客户端。
Docker客户端
Docker用户可以通过客户端与Docker进行交互。当任何docker命令运行时,客户端将它们发送到dockerd守护程序,该守护程序执行它们。Docker API使用Docker API。Docker客户端可以与多个守护进程通信。
Docker注册表
它是Docker镜像存储的位置。它可以是公共docker注册表或私有docker注册表。Docker Hub是docker图像的默认位置,它是商店的公共注册表。您还可以创建和运行自己的私有注册表。
执行docker pull或docker run命令时,将从配置的注册表中提取所需的docker镜像。执行docker push命令时,docker镜像存储在已配置的注册表中。
Docker对象
当您使用Docker时,您使用图像,容器,卷,网络; 所有这些都是Docker对象。
图片
Docker镜像是只读模板,其中包含创建docker容器的说明。Docker镜像可以从Docker集线器中提取并按原样使用,或者您可以向基本图像添加其他指令并创建新的和修改过的docker镜像。您也可以使用dockerfile创建自己的docker镜像。创建一个dockerfile,其中包含创建容器并运行它的所有说明; 它将创建您的自定义docker镜像。
Docker镜像有一个只读的基础层,可以写入顶层。编辑dockerfile并重建它时,只在顶层重建修改后的部分。
集装箱
运行docker镜像后,它会创建一个docker容器。所有应用程序及其环境都在此容器内运行。您可以使用Docker API或CLI来启动,停止,删除docker容器。
下面是运行ubuntu docker容器的示例命令:
docker run -i -t ubuntu /bin/bash
卷
docker生成并由Docker容器使用的持久数据存储在Volumes中。它们完全由docker通过docker CLI或Docker API进行管理。卷适用于Windows和Linux容器。不是将数据保存在容器的可写层中,而是为它使用卷总是一个很好的选择。卷的内容存在于容器的生命周期之外,因此使用卷不会增加容器的大小。
您可以使用-v或-mount标志来启动具有卷的容器。在此示例命令中,您正在使用带geekflare容器的geekvolume卷。
docker run -d --name geekflare -v geekvolume:/app nginx:latest
网络
Docker网络是所有隔离容器通信的通道。docker中主要有五个网络驱动程序:
Bridge:它是容器的默认网络驱动程序。当您的应用程序在独立容器上运行时,即使用与同一个docker主机通信的多个容器,您可以使用此网络。
主机:此驱动程序删除docker容器和docker主机之间的网络隔离。当您不需要在主机和容器之间进行任何网络隔离时,可以使用它。
覆盖:该网络使群组服务能够相互通信。当容器在不同的Docker主机上运行或者由多个应用程序组成swarm服务时使用它。
无:此驱动程序禁用所有网络。
macvlan:这个驱动程序为容器分配mac地址,使它们看起来像物理设备。流量通过其mac地址在容器之间路由。当您希望容器看起来像物理设备时(例如,在迁移VM设置时),将使用此网络。