0


【Docker晋升记】No.1--- Docker工具核心组件构成(镜像、容器、仓库)及性能属性

文章目录


前言

在这里插入图片描述

👧个人主页:@小沈YO.
😚小编介绍:欢迎来到我的乱七八糟小星球🌝
🔑本章内容:Docker工具核心组件构成(镜像、容器、仓库)及性能属性
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~


提示:以下是本篇文章正文内容,下面案例可供参考

🌟一、Docker工具

Docker 是一个开放源代码的容器化平台,它使开发者能够打包、分发和运行应用程序及其依赖项。Docker 工具主要由以下几个组件构成:

  • Docker 引擎(Docker Engine):Docker 引擎是 Docker 的核心组件,负责构建和运行容器。它使用容器镜像来创建容器,提供了一套 API 和命令行接口,允许用户管理容器的生命周期、网络和存储等方面的配置。
  • Docker 镜像(Docker Images):Docker 镜像是用于创建 Docker 容器的只读模板。镜像包含了运行应用程序所需的一切,包括操作系统、应用程序代码、运行时环境、库文件等。用户可以从现有的镜像构建新的镜像,也可以通过 Dockerfile 定义自己的镜像。
  • Docker 容器(Docker Containers):Docker 容器是 Docker 镜像的实例化对象,是一个独立运行的应用程序环境。容器可以被创建、启动、停止、删除等操作,它隔离了应用程序及其依赖项,使其可以在不同的环境中以一致的方式运行。
  • Docker 仓库(Docker Hub):Docker 仓库是一个集中存储和分享 Docker 镜像的平台。Docker Hub 是公共的 Docker 仓库,用户可以从中获取现有的镜像,也可以将自己构建的镜像上传到仓库分享给他人。在这里插入图片描述

🌟二、Docker 引擎

Docker 引擎(Docker Engine)是 Docker 的核心组件,负责构建和运行容器。它是一个轻量级的容器运行时环境,提供了一套 API 和命令行接口,用于管理容器的生命周期、网络和存储等配置。
Docker 引擎使用了一种称为 Linux 容器(Linux Containers,LXC)的技术来实现容器化。它利用 Linux 内核的功能,如命名空间(namespace)和控制组(cgroup),来隔离容器的进程、文件系统、网络和资源使用。

#mermaid-svg-7w8ZYj9PN6XL5K63 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .error-icon{fill:#552222;}#mermaid-svg-7w8ZYj9PN6XL5K63 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7w8ZYj9PN6XL5K63 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .marker.cross{stroke:#333333;}#mermaid-svg-7w8ZYj9PN6XL5K63 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7w8ZYj9PN6XL5K63 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .cluster-label text{fill:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .cluster-label span{color:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .label text,#mermaid-svg-7w8ZYj9PN6XL5K63 span{fill:#333;color:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .node rect,#mermaid-svg-7w8ZYj9PN6XL5K63 .node circle,#mermaid-svg-7w8ZYj9PN6XL5K63 .node ellipse,#mermaid-svg-7w8ZYj9PN6XL5K63 .node polygon,#mermaid-svg-7w8ZYj9PN6XL5K63 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7w8ZYj9PN6XL5K63 .node .label{text-align:center;}#mermaid-svg-7w8ZYj9PN6XL5K63 .node.clickable{cursor:pointer;}#mermaid-svg-7w8ZYj9PN6XL5K63 .arrowheadPath{fill:#333333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7w8ZYj9PN6XL5K63 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7w8ZYj9PN6XL5K63 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7w8ZYj9PN6XL5K63 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7w8ZYj9PN6XL5K63 .cluster text{fill:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 .cluster span{color:#333;}#mermaid-svg-7w8ZYj9PN6XL5K63 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7w8ZYj9PN6XL5K63 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
Docker 引擎的主要功能包括:

🌏2.1.容器管理:

Docker 引擎可以创建、启动、停止和删除容器。它允许用户指定容器的配置,如映射主机端口到容器端口、挂载主机目录到容器内部等。

🌏2.2.镜像管理:

Docker 引擎可以从 Docker 镜像创建容器。它可以从 Docker Hub 或其他 Docker 仓库拉取现有的镜像,也可以通过 Dockerfile 构建新的镜像。

🌏2.3.资源管理:

Docker 引擎使用控制组来限制和管理容器对计算资源(如 CPU 和内存)的使用。它可以设置容器的资源限制和优先级,以确保不同容器之间的资源隔离和公平共享。

🌏2.4.网络管理:

Docker 引擎提供了一组网络驱动程序,用于创建和管理容器的网络。它可以为容器分配 IP 地址,定义容器间的网络连接关系,以及与主机网络进行通信。

🌏2.5.存储管理:

Docker 引擎支持多种存储驱动程序,用于管理容器的文件系统和持久化数据。它可以将主机文件系统挂载到容器内部,也可以创建匿名卷和命名卷来存储容器的数据。

🌏2.6.总结:

通过 Docker 引擎,开发者可以轻松地构建、部署和管理容器化的应用程序。它提供了统一的接口和工具,使得应用程序在不同的环境中以一致的方式运行,具备了可移植性和可复制性的优势。

🌟三、Docker 镜像

Docker 镜像(Docker Images)是用于创建 Docker 容器的只读模板。镜像包含了运行应用程序所需的一切,包括操作系统、应用程序代码、运行时环境和库文件等。

🌏3.1. 镜像的特点

#mermaid-svg-m2mU6glBbKk4VIGW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-m2mU6glBbKk4VIGW .error-icon{fill:#552222;}#mermaid-svg-m2mU6glBbKk4VIGW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-m2mU6glBbKk4VIGW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-m2mU6glBbKk4VIGW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-m2mU6glBbKk4VIGW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-m2mU6glBbKk4VIGW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-m2mU6glBbKk4VIGW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-m2mU6glBbKk4VIGW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-m2mU6glBbKk4VIGW .marker.cross{stroke:#333333;}#mermaid-svg-m2mU6glBbKk4VIGW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-m2mU6glBbKk4VIGW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-m2mU6glBbKk4VIGW .cluster-label text{fill:#333;}#mermaid-svg-m2mU6glBbKk4VIGW .cluster-label span{color:#333;}#mermaid-svg-m2mU6glBbKk4VIGW .label text,#mermaid-svg-m2mU6glBbKk4VIGW span{fill:#333;color:#333;}#mermaid-svg-m2mU6glBbKk4VIGW .node rect,#mermaid-svg-m2mU6glBbKk4VIGW .node circle,#mermaid-svg-m2mU6glBbKk4VIGW .node ellipse,#mermaid-svg-m2mU6glBbKk4VIGW .node polygon,#mermaid-svg-m2mU6glBbKk4VIGW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-m2mU6glBbKk4VIGW .node .label{text-align:center;}#mermaid-svg-m2mU6glBbKk4VIGW .node.clickable{cursor:pointer;}#mermaid-svg-m2mU6glBbKk4VIGW .arrowheadPath{fill:#333333;}#mermaid-svg-m2mU6glBbKk4VIGW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-m2mU6glBbKk4VIGW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-m2mU6glBbKk4VIGW .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-m2mU6glBbKk4VIGW .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-m2mU6glBbKk4VIGW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-m2mU6glBbKk4VIGW .cluster text{fill:#333;}#mermaid-svg-m2mU6glBbKk4VIGW .cluster span{color:#333;}#mermaid-svg-m2mU6glBbKk4VIGW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-m2mU6glBbKk4VIGW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
Docker 镜像的特点包括:

  1. 只读性:Docker 镜像是只读的,即镜像的内容在创建后不可更改。这意味着镜像本身是不可变的,任何对容器的修改都会在容器运行时创建新的可写层(writeable layer)。
  2. 分层结构:Docker 镜像采用分层结构,每一层都是前一层的基础。这样的结构使得镜像的复用和共享变得更加高效,因为不同的镜像可以共享相同的基础层。
  3. 版本控制:Docker 镜像可以同时存在多个版本,每个版本都有唯一的标识符(例如镜像 ID 或标签),可以根据需要选择特定的版本进行使用。

🌏3.2. 镜像的流程

#mermaid-svg-2xOYg2NEPxfbMmKp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp .error-icon{fill:#552222;}#mermaid-svg-2xOYg2NEPxfbMmKp .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-2xOYg2NEPxfbMmKp .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-2xOYg2NEPxfbMmKp .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-2xOYg2NEPxfbMmKp .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-2xOYg2NEPxfbMmKp .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-2xOYg2NEPxfbMmKp .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-2xOYg2NEPxfbMmKp .marker{fill:#333333;stroke:#333333;}#mermaid-svg-2xOYg2NEPxfbMmKp .marker.cross{stroke:#333333;}#mermaid-svg-2xOYg2NEPxfbMmKp svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-2xOYg2NEPxfbMmKp .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp .cluster-label text{fill:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp .cluster-label span{color:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp .label text,#mermaid-svg-2xOYg2NEPxfbMmKp span{fill:#333;color:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp .node rect,#mermaid-svg-2xOYg2NEPxfbMmKp .node circle,#mermaid-svg-2xOYg2NEPxfbMmKp .node ellipse,#mermaid-svg-2xOYg2NEPxfbMmKp .node polygon,#mermaid-svg-2xOYg2NEPxfbMmKp .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-2xOYg2NEPxfbMmKp .node .label{text-align:center;}#mermaid-svg-2xOYg2NEPxfbMmKp .node.clickable{cursor:pointer;}#mermaid-svg-2xOYg2NEPxfbMmKp .arrowheadPath{fill:#333333;}#mermaid-svg-2xOYg2NEPxfbMmKp .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-2xOYg2NEPxfbMmKp .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-2xOYg2NEPxfbMmKp .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-2xOYg2NEPxfbMmKp .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-2xOYg2NEPxfbMmKp .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-2xOYg2NEPxfbMmKp .cluster text{fill:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp .cluster span{color:#333;}#mermaid-svg-2xOYg2NEPxfbMmKp div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-2xOYg2NEPxfbMmKp :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
使用 Docker 镜像的流程如下:

  1. 获取镜像:可以从 Docker Hub 或其他 Docker 仓库获取现有的镜像。Docker Hub 是一个公共的 Docker 镜像仓库,用户可以在其中搜索、下载和共享镜像。
  2. 构建镜像:通过使用 Dockerfile 来定义自己的镜像。Dockerfile 是一个文本文件,其中包含了一系列的指令,用于指定从基础镜像开始,通过逐步的操作构建出一个新的镜像。
  3. 运行容器:通过 Docker 镜像创建容器,并将容器启动起来运行。一个镜像可以创建多个容器,并且每个容器都是相互独立的运行实例。
  4. 分享镜像:可以将自己构建的镜像上传到 Docker Hub 或其他 Docker 仓库,与他人共享使用。

通过使用 Docker 镜像,开发者可以快速构建、交付和运行应用程序及其依赖项。镜像的可复用性和轻量级特性使得应用程序在不同的环境中可以快速、可靠地部署和扩展。

🌟四、Docker 容器

Docker 容器(Docker Containers)是 Docker 镜像的实例化对象,是一个独立运行的应用程序环境。容器提供了应用程序运行所需的所有资源,包括文件系统、运行时环境、应用程序代码和依赖项等.

🌏4.1. Docker 容器的一些特点

#mermaid-svg-xPtfeKhRwVZynFB0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 .error-icon{fill:#552222;}#mermaid-svg-xPtfeKhRwVZynFB0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xPtfeKhRwVZynFB0 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-xPtfeKhRwVZynFB0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xPtfeKhRwVZynFB0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xPtfeKhRwVZynFB0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xPtfeKhRwVZynFB0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xPtfeKhRwVZynFB0 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xPtfeKhRwVZynFB0 .marker.cross{stroke:#333333;}#mermaid-svg-xPtfeKhRwVZynFB0 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xPtfeKhRwVZynFB0 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 .cluster-label text{fill:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 .cluster-label span{color:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 .label text,#mermaid-svg-xPtfeKhRwVZynFB0 span{fill:#333;color:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 .node rect,#mermaid-svg-xPtfeKhRwVZynFB0 .node circle,#mermaid-svg-xPtfeKhRwVZynFB0 .node ellipse,#mermaid-svg-xPtfeKhRwVZynFB0 .node polygon,#mermaid-svg-xPtfeKhRwVZynFB0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xPtfeKhRwVZynFB0 .node .label{text-align:center;}#mermaid-svg-xPtfeKhRwVZynFB0 .node.clickable{cursor:pointer;}#mermaid-svg-xPtfeKhRwVZynFB0 .arrowheadPath{fill:#333333;}#mermaid-svg-xPtfeKhRwVZynFB0 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xPtfeKhRwVZynFB0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xPtfeKhRwVZynFB0 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-xPtfeKhRwVZynFB0 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-xPtfeKhRwVZynFB0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xPtfeKhRwVZynFB0 .cluster text{fill:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 .cluster span{color:#333;}#mermaid-svg-xPtfeKhRwVZynFB0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xPtfeKhRwVZynFB0 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
以下是 Docker 容器的一些特点:

  1. 轻量级:Docker 容器是轻量级的,因为它们与宿主机共享操作系统内核和底层资源。与虚拟机相比,容器仅包含应用程序及其运行时环境,不需要额外的操作系统。
  2. 隔离性:容器提供了一定程度的隔离,使得应用程序在容器中运行时相互隔离、互不干扰。每个容器都有自己的文件系统、网络空间和进程空间,使得容器间的应用程序能够独立运行。
  3. 可移植性:Docker 容器可以在不同的环境中运行,无论是开发者的本地机器、测试环境还是生产环境。容器提供了一致的运行时环境,使得应用程序的部署和迁移变得更加简单和可靠。
  4. 可扩展性:可以复制和扩展容器,以满足应用程序的需求。多个容器可以在同一主机上运行,并可以在集群中分布在多台主机上,以实现高可用性和负载均衡。

🌏4.2. 使用 Docker 容器的流程

#mermaid-svg-YETsAmGYqNtddZ00 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YETsAmGYqNtddZ00 .error-icon{fill:#552222;}#mermaid-svg-YETsAmGYqNtddZ00 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YETsAmGYqNtddZ00 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-YETsAmGYqNtddZ00 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YETsAmGYqNtddZ00 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YETsAmGYqNtddZ00 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YETsAmGYqNtddZ00 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YETsAmGYqNtddZ00 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YETsAmGYqNtddZ00 .marker.cross{stroke:#333333;}#mermaid-svg-YETsAmGYqNtddZ00 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YETsAmGYqNtddZ00 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YETsAmGYqNtddZ00 .cluster-label text{fill:#333;}#mermaid-svg-YETsAmGYqNtddZ00 .cluster-label span{color:#333;}#mermaid-svg-YETsAmGYqNtddZ00 .label text,#mermaid-svg-YETsAmGYqNtddZ00 span{fill:#333;color:#333;}#mermaid-svg-YETsAmGYqNtddZ00 .node rect,#mermaid-svg-YETsAmGYqNtddZ00 .node circle,#mermaid-svg-YETsAmGYqNtddZ00 .node ellipse,#mermaid-svg-YETsAmGYqNtddZ00 .node polygon,#mermaid-svg-YETsAmGYqNtddZ00 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YETsAmGYqNtddZ00 .node .label{text-align:center;}#mermaid-svg-YETsAmGYqNtddZ00 .node.clickable{cursor:pointer;}#mermaid-svg-YETsAmGYqNtddZ00 .arrowheadPath{fill:#333333;}#mermaid-svg-YETsAmGYqNtddZ00 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YETsAmGYqNtddZ00 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YETsAmGYqNtddZ00 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-YETsAmGYqNtddZ00 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-YETsAmGYqNtddZ00 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YETsAmGYqNtddZ00 .cluster text{fill:#333;}#mermaid-svg-YETsAmGYqNtddZ00 .cluster span{color:#333;}#mermaid-svg-YETsAmGYqNtddZ00 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YETsAmGYqNtddZ00 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
使用 Docker 容器的流程:

  1. 定义镜像:使用 Dockerfile 定义 Docker 镜像,其中包含构建容器所需的指令和配置。
  2. 构建镜像:通过运行构建命令(如 docker build)根据 Dockerfile 构建出镜像。
  3. 创建容器:通过 Docker 镜像创建容器实例,可以指定容器的名称、端口映射、挂载点等配置。
  4. 启动容器:使用启动命令(如 docker run)来启动容器,并让应用程序在容器中运行。
  5. 操作容器:可以通过 Docker 命令来管理容器的生命周期,如暂停、继续、停止或删除容器。
  6. 监控容器:使用 Docker 监控工具和命令可以获取容器的运行状态、日志和资源使用情况。

通过 Docker 容器,开发者可以实现应用程序的快速部署、可重复运行,并且能够更好地利用计算资源。容器化技术带来的轻量级、可移植和隔离的特性使得应用开发、测试和部署过程更加高效和可靠。

🌟五、Docker 仓库

Docker 仓库(Docker Registry)是一个集中存储和管理 Docker 镜像的服务。它允许用户上传、下载、管理和共享 Docker 镜像,是 Docker 生态系统中重要的组成部分。

🌏5.1. Docker 仓库的一些重要概念和特点:

#mermaid-svg-6t1DySBsjYbAAv9M {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6t1DySBsjYbAAv9M .error-icon{fill:#552222;}#mermaid-svg-6t1DySBsjYbAAv9M .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-6t1DySBsjYbAAv9M .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-6t1DySBsjYbAAv9M .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-6t1DySBsjYbAAv9M .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-6t1DySBsjYbAAv9M .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-6t1DySBsjYbAAv9M .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-6t1DySBsjYbAAv9M .marker{fill:#333333;stroke:#333333;}#mermaid-svg-6t1DySBsjYbAAv9M .marker.cross{stroke:#333333;}#mermaid-svg-6t1DySBsjYbAAv9M svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-6t1DySBsjYbAAv9M .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-6t1DySBsjYbAAv9M .cluster-label text{fill:#333;}#mermaid-svg-6t1DySBsjYbAAv9M .cluster-label span{color:#333;}#mermaid-svg-6t1DySBsjYbAAv9M .label text,#mermaid-svg-6t1DySBsjYbAAv9M span{fill:#333;color:#333;}#mermaid-svg-6t1DySBsjYbAAv9M .node rect,#mermaid-svg-6t1DySBsjYbAAv9M .node circle,#mermaid-svg-6t1DySBsjYbAAv9M .node ellipse,#mermaid-svg-6t1DySBsjYbAAv9M .node polygon,#mermaid-svg-6t1DySBsjYbAAv9M .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-6t1DySBsjYbAAv9M .node .label{text-align:center;}#mermaid-svg-6t1DySBsjYbAAv9M .node.clickable{cursor:pointer;}#mermaid-svg-6t1DySBsjYbAAv9M .arrowheadPath{fill:#333333;}#mermaid-svg-6t1DySBsjYbAAv9M .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-6t1DySBsjYbAAv9M .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-6t1DySBsjYbAAv9M .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-6t1DySBsjYbAAv9M .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-6t1DySBsjYbAAv9M .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-6t1DySBsjYbAAv9M .cluster text{fill:#333;}#mermaid-svg-6t1DySBsjYbAAv9M .cluster span{color:#333;}#mermaid-svg-6t1DySBsjYbAAv9M div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-6t1DySBsjYbAAv9M :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
下面是 Docker 仓库的一些重要概念和特点:

  1. Docker 官方仓库:Docker 官方提供了一个公共的 Docker 仓库,称为 Docker Hub。在 Docker Hub 上,用户可以找到大量的公共镜像,可以通过简单的命令从 Docker Hub 上下载镜像到本地,并使用这些镜像来创建容器。
  2. 私有仓库:除了 Docker Hub,用户还可以搭建私有的 Docker 仓库,用于存储和管理自己的镜像。私有仓库可以在内部网络中共享和使用,也可以选择将其暴露给外部网络,以便团队成员或合作伙伴进行访问。
  3. 镜像版本控制:Docker 仓库支持对镜像进行版本控制。每个镜像都有一个唯一的标签,用于标识特定的版本。通过指定镜像的标签,可以确保在不同环境中使用相同的镜像版本。
  4. 仓库命名空间:在 Docker 仓库中,镜像资源按照命名空间进行组织和管理。命名空间类似于一个顶级文件夹,用于区分不同组织或个人的镜像。例如,对于 Docker Hub,许多官方镜像的命名空间是 “library”,用户可以创建自己的命名空间来存储自定义镜像。
  5. 安全和权限控制:Docker 仓库通常提供安全机制和权限控制,以确保镜像的安全性和访问的限制。可以设置访问控制规则,仅允许授权用户或团队上传和下载镜像。此外,可以对镜像进行签名和验证,确保镜像的完整性和来源可信。

🌏5.2. 常见的 Docker 仓库软件:

#mermaid-svg-dTrDCBR9A4EKuhzm {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm .error-icon{fill:#552222;}#mermaid-svg-dTrDCBR9A4EKuhzm .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dTrDCBR9A4EKuhzm .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-dTrDCBR9A4EKuhzm .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dTrDCBR9A4EKuhzm .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dTrDCBR9A4EKuhzm .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dTrDCBR9A4EKuhzm .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dTrDCBR9A4EKuhzm .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dTrDCBR9A4EKuhzm .marker.cross{stroke:#333333;}#mermaid-svg-dTrDCBR9A4EKuhzm svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dTrDCBR9A4EKuhzm .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm .cluster-label text{fill:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm .cluster-label span{color:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm .label text,#mermaid-svg-dTrDCBR9A4EKuhzm span{fill:#333;color:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm .node rect,#mermaid-svg-dTrDCBR9A4EKuhzm .node circle,#mermaid-svg-dTrDCBR9A4EKuhzm .node ellipse,#mermaid-svg-dTrDCBR9A4EKuhzm .node polygon,#mermaid-svg-dTrDCBR9A4EKuhzm .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dTrDCBR9A4EKuhzm .node .label{text-align:center;}#mermaid-svg-dTrDCBR9A4EKuhzm .node.clickable{cursor:pointer;}#mermaid-svg-dTrDCBR9A4EKuhzm .arrowheadPath{fill:#333333;}#mermaid-svg-dTrDCBR9A4EKuhzm .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dTrDCBR9A4EKuhzm .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dTrDCBR9A4EKuhzm .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-dTrDCBR9A4EKuhzm .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-dTrDCBR9A4EKuhzm .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dTrDCBR9A4EKuhzm .cluster text{fill:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm .cluster span{color:#333;}#mermaid-svg-dTrDCBR9A4EKuhzm div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dTrDCBR9A4EKuhzm :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
常见的 Docker 仓库软件:

常见的 Docker 仓库软件包括 Docker Trusted Registry、Harbor、JFrog Artifactory 等。使用这些软件,用户可以自己搭建和管理私有的 Docker 仓库,并根据自己的需求进行配置和扩展。
总之,Docker 仓库是 Docker 镜像的集中存储和管理服务,提供了公共和私有的镜像资源,并支持版本控制、权限控制和安全机制,使得 Docker 镜像的共享和使用变得更加便捷和可靠。

🌟六、Docker 工具性能

Docker 是一个轻量级的容器化平台,它提供了一种可移植、可扩展和高性能的方式来打包、部署和运行应用程序。下面是 Docker 的一些性能特点和考虑因素:

🌏6.1. 优势:

  1. 轻量级和快速启动:Docker 容器是基于操作系统级虚拟化技术实现的,相比于传统的虚拟机,容器更轻量级且启动更快。容器可以在几秒钟内启动,并且不需要额外的操作系统启动时间。
  2. 资源利用效率:Docker 容器共享宿主操作系统的内核,这意味着多个容器可以在同一台主机上运行,而不会对性能造成显著影响。容器使用的资源(如内存、CPU、网络带宽等)可以进行有效的分配和管理,确保资源的最佳利用。
  3. 高度可扩展:Docker 提供了强大的可扩展性,可以在需要时快速复制和部署多个实例。使用容器编排工具如 Docker Swarm 或 Kubernetes,可以轻松管理大规模的容器集群,并根据负载情况进行动态扩展和自动负载均衡。
  4. 隔离性:Docker 容器提供了良好的隔离性,每个容器都运行在独立的运行时环境中,相互之间不会相互干扰。这种隔离性使得容器可以提供更高的安全性和稳定性,同时也减少了因其他容器故障而影响整个应用程序的风险。
  5. 易于部署和管理:使用 Docker 镜像,可以极大地简化应用程序的部署和管理过程。开发人员可以将应用程序及其依赖打包为镜像,然后在不同环境中轻松进行部署。同时,使用容器编排工具可以自动化地管理容器的生命周期,包括部署、伸缩、监控和更新等。

🌏6.1. 注意事项:

  1. 存储性能:读写容器的数据可以引入一些性能开销,特别是在使用基于容器的持久化存储(如数据卷)时。在设计应用程序架构时,需要选择适当的存储策略,并优化数据访问模式,以避免性能瓶颈。
  2. 网络性能:容器之间的通信可能需要经过网络层,对于高吞吐量和低延迟的应用程序,需要考虑网络性能的影响。可以使用容器网络模式和网络驱动程序进行优化,以满足应用程序的需求。
  3. 宿主机资源限制:容器共享宿主机的资源,如果宿主机资源不足,可能导致容器性能下降。在设计容器部署架构时,需要考虑宿主机的资源配额、容器的资源需求以及宿主机的负载情况。

总结而言,Docker 提供了高性能、可移植和可扩展的容器化解决方案。通过合理的架构设计和优化配置,可以充分发挥 Docker 的性能优势,并满足应用程序的需求。


总结

除了以上核心组件,Docker 还有其他一些常用的工具,例如:

  • Docker Compose:Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它使用一个 YAML 文件来配置多个容器之间的关系和参数。
  • Docker Swarm:Docker Swarm 是 Docker 提供的原生集群管理工具,可以在多个Docker 主机上创建和管理容器集群,提供高可用性和伸缩性。
  • Kubernetes(K8s):Kubernetes 是一个开源的容器编排和管理平台,能够自动化运行、扩展和管理容器化应用程序。Docker 可以与 Kubernetes 集成,提供容器化应用程序的部署和管理功能。
  • Docker Machine:Docker Machine 可以在多种不同的主机上安装和运行 Docker 引擎,简化了在各种平台上使用 Docker 的过程。

这些工具组成了 Docker 生态系统,使得开发者可以更轻松地构建、交付和管理应用程序及其依赖项,实现了应用程序的可移植性和可复制性。

标签: docker eureka 容器

本文转载自: https://blog.csdn.net/ljq_up/article/details/132082180
版权归原作者 小沈YO. 所有, 如有侵权,请联系我们删除。

“【Docker晋升记】No.1--- Docker工具核心组件构成(镜像、容器、仓库)及性能属性”的评论:

还没有评论