《Docker极简教程》--Docker基础--基础知识(二)

一、Docker引擎

1.1 Docker引擎的组成和功能

Docker 引擎是 Docker 平台的核心组件,它负责容器的创建、管理和运行。Docker 引擎主要包括两个主要组件:Docker 守护程序(Docker Daemon)和 Docker 客户端(Docker Client)。以下是它们的主要功能和作用:

  1. Docker 守护程序(Docker Daemon):
    • 功能:
      • 容器管理:负责创建、运行、停止和删除容器。
      • 镜像管理:处理容器镜像的构建、存储和分发。
      • 资源管理:控制容器对主机系统资源的访问,例如 CPU、内存、磁盘和网络。
      • 日志和事件:负责记录容器的日志和监控容器的事件。
      • 安全性:提供容器的隔离和安全性,包括命名空间、控制组等技术。
    • 运行方式:
      • 作为一个后台服务在主机上运行,监听来自 Docker 客户端的 API 请求。
    • 通信方式:
      • 提供一个 REST API,Docker 客户端通过该 API 与 Docker 守护程序通信。
  2. Docker 客户端(Docker Client):
    • 功能:
      • 提供用户与 Docker 引擎交互的命令行界面或 API。
      • 允许用户通过命令或 API 请求 Docker 守护程序执行相应的操作。
    • 运行方式:
      • 可以在同一主机上运行,也可以连接到远程主机上运行的 Docker 守护程序。
    • 通信方式:
      • 通过 REST API 与 Docker 守护程序通信,向它发送命令和接收执行结果。
1.2 Docker引擎的工作流程

Docker 引擎的工作流程是,用户通过 Docker 客户端发送命令,Docker 客户端将命令转发给 Docker 守护程序,然后 Docker 守护程序执行相应的操作,如创建、运行或停止容器,构建或拉取镜像等。这种架构使得 Docker 能够提供轻量级、可移植、可扩展的容器化解决方案。以下是具体流程:
Docker 引擎的工作流程包括用户与 Docker 客户端交互、Docker 客户端与 Docker 守护程序通信、以及 Docker 守护程序执行相应的操作。以下是 Docker 引擎的基本工作流程:

  1. 用户与 Docker 客户端交互:
    • 用户通过命令行界面或 API 使用 Docker 客户端。
    • Docker 客户端接收用户的命令,例如创建容器、构建镜像等。
  2. Docker 客户端与 Docker 守护程序通信:
    • Docker 客户端通过 REST API 或本地的 UNIX 套接字与 Docker 守护程序通信。
    • 如果 Docker 客户端与 Docker 守护程序运行在同一主机上,则通常通过 UNIX 套接字进行通信。如果 Docker 客户端与 Docker 守护程序运行在不同主机上,则可以通过网络进行通信。
  3. Docker 守护程序处理请求:
    • Docker 守护程序接收到来自 Docker 客户端的请求。
    • 守护程序根据请求的类型执行相应的操作,例如创建、运行、停止容器,构建或拉取镜像等。
    • 在执行这些操作之前,守护程序可能会检查本地是否存在所需的容器镜像,如果不存在,可能会从远程仓库中拉取镜像。
  4. 容器的创建和运行:
    • 如果用户请求创建容器,Docker 守护程序将使用指定的容器镜像创建一个新的容器实例。
    • 守护程序配置容器的运行时环境,包括网络设置、存储卷挂载等。
    • 启动容器进程,使其在隔离的环境中运行。
  5. 执行操作并返回结果:
    • Docker 守护程序执行相应的操作,例如容器的创建、运行、停止、删除,或者镜像的构建、推送、拉取等。
    • 执行结果和相关的日志信息通过 REST API 或其他适当的通信方式返回给 Docker 客户端。

整个流程的关键是 Docker 客户端与 Docker 守护程序之间的通信,以及守护程序的能力去创建、管理、运行容器。这种架构使得 Docker 提供了一种轻量级、可移植、可扩展的容器化解决方案,使应用程序可以在不同的环境中一致地运行。

二、Docker客户端和服务器

2.1 客户端与服务器的交互

Docker 客户端与服务器之间的交互是通过 Docker 的 REST API 进行的。Docker 客户端向 Docker 守护程序发送请求,而守护程序则响应这些请求,并执行相应的操作。以下是 Docker 客户端和服务器之间交互的主要步骤:

  1. Docker 客户端发送请求:
    • 用户在 Docker 客户端上运行命令,例如 docker rundocker build 等。
    • Docker 客户端将这些命令转化为相应的 REST API 请求。
  2. REST API 请求的结构:
    • REST API 请求通常包括 HTTP 方法(如 GET、POST、PUT、DELETE 等)、资源路径、请求头和请求体(如果有的话)。
    • 例如,创建一个容器的请求可能包括创建容器的参数、镜像名称等信息。
  3. 请求传递给 Docker 守护程序:
    • Docker 客户端通过网络或本地 UNIX 套接字将请求传递给正在运行的 Docker 守护程序。
    • 如果 Docker 客户端和守护程序在同一主机上,则通常使用本地 UNIX 套接字;如果它们在不同主机上,则可以通过网络进行通信。
  4. Docker 守护程序处理请求:
    • Docker 守护程序接收到 REST API 请求后,根据请求的内容执行相应的操作。
    • 守护程序可能会创建、运行、停止容器,构建或拉取镜像等,具体操作取决于请求的类型。
  5. 执行结果返回给 Docker 客户端:
    • Docker 守护程序执行请求对应的操作,并将执行结果、日志信息等通过 HTTP 响应返回给 Docker 客户端。
    • 响应包括状态码、响应头和响应体。
  6. Docker 客户端处理响应:
    • Docker 客户端接收到来自 Docker 守护程序的响应后,根据响应的状态码和内容进行相应的处理。
    • 如果请求成功,客户端可能会显示成功信息;如果有错误,客户端会显示错误信息。

通过这种方式,Docker 客户端和服务器之间实现了通过 REST API 的通信,使得用户可以方便地通过命令行或 API 与 Docker 守护程序交互,管理容器和镜像。

2.2 命令行工具的使用

Docker 提供了一个命令行工具,即 Docker 命令行客户端(Docker CLI),用于与 Docker 引擎进行交互。以下是一些常用的 Docker 命令,可以通过命令行工具执行这些操作:

  1. 镜像操作:
    • 构建镜像:
      docker build -t <image_name>:<tag> <path_to_dockerfile>
      
    • 拉取镜像:
      docker pull <image_name>:<tag>
      
    • 查看本地镜像列表:
      docker images
      
  2. 容器操作:
    • 运行容器:
      docker run -d --name <container_name> <image_name>:<tag>
      
    • 查看运行中的容器:
      docker ps
      
    • 查看所有容器(包括停止的):
      docker ps -a
      
    • 停止容器:
      docker stop <container_id or container_name>
      
    • 删除容器:
      docker rm <container_id or container_name>
      
  3. 日志和信息:
    • 查看容器日志:
      docker logs <container_id or container_name>
      
    • 查看容器详细信息:
      docker inspect <container_id or container_name>
      
  4. 网络操作:
    • 查看网络列表:
      docker network ls
      
    • 创建网络:
      docker network create <network_name>
      
  5. 其他操作:
    • 进入运行中的容器:
      docker exec -it <container_id or container_name> /bin/bash
      
    • 查看 Docker 版本信息:
      docker version
      

这些命令提供了一些基本的 Docker 操作,但 Docker CLI 支持的功能远不止这些。你可以通过运行 docker --help 或者 docker COMMAND --help 来获取更多命令和选项的详细信息。在使用 Docker 命令行工具时,可以根据实际需求选择合适的命令来构建、运行、管理容器和镜像。

三、总结

Docker 引擎是一种容器化解决方案,由 Docker 客户端和守护程序组成。用户通过 Docker 客户端向守护程序发送命令,两者之间通过 REST API 通信。守护程序负责管理容器的创建、运行、停止,以及镜像的构建和存储。Docker 客户端提供命令行界面或 API,用户通过它与守护程序交互。整个流程实现了轻量级、可移植的容器化,使应用程序在不同环境中一致运行。常用命令行工具包括构建镜像、运行容器、查看日志等,通过这些命令,用户能够方便地管理 Docker 容器和镜像。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

deepin20.9安装及配置

安装deepin20.9很简单&#xff0c;刻录u盘 安装 一路next apt install nginx global vim-nox debian11 使用apt安装php, 使php多版本共存_debain11 php5-CSDN博客 vim LeaderF安装问题 - 知乎 debian10安装vue环境, 包括安装node.js-CSDN博客 debian安装vue3 nodejs20-CSD…

Python初学者学习记录——python基础综合案例:数据可视化——动态柱状图

一、案例效果 通过pyecharts可以实现数据的动态显示&#xff0c;直观的感受1960~2019年世界各国GDP的变化趋势 二、通过Bar构建基础柱状图 反转x轴和y轴 标签数值在右侧 from pyecharts.charts import Bar from pyecharts.options import LabelOpts# 构建柱状图对象 bar Bar()…

二进制安全虚拟机Protostar靶场(7)heap2 UAF(use-after-free)漏洞

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 heap2 程序静态分析 https://exploit.education/protostar/heap-two/#include <stdlib.h> #include &…

环境配置:Ubuntu18.04 ROS Melodic安装

前言 不同版本的Ubuntu与ROS存在对应关系。 ROS作为目前最受欢迎的机器人操作系统&#xff0c;其核心代码采用C编写&#xff0c;并以BSD许可发布。ROS起源于2007年&#xff0c;是由斯坦福大学与机器人技术公司Willow Garage合作的Switchyard项目。2012年&#xff0c;ROS团队从…

力扣面试题 05.03. 翻转数位(前、后缀和)

Problem: 面试题 05.03. 翻转数位 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.将十进制数转换为二进制数&#xff08;每次按位与1求与&#xff0c;并且右移&#xff09;&#xff1b; 2.依次求取二进制数中每一位的前缀1的数量和&#xff0c;和后缀1的数量和…

计算机项目SpringBoot项目 办公小程序开发

从零构建后端项目、利用UNI-APP创建移动端项目 实现注册与登陆、人脸考勤签到、实现系统通知模块 实现会议管理功能、完成在线视频会议功能、 发布Emos在线办公系统 项目分享&#xff1a; SpringBoot项目 办公小程序开发https://pan.baidu.com/s/1sYPLOAMtaopJCFHAWDa2xQ?…

极狐GitLab 使用阿里云作为 OmniAuth 身份验证 provider

使用阿里云作为 OmniAuth 身份验证 provider 您可以启用阿里云 OAuth 2.0 OmniAuth provider并使用您的阿里云账户登录极狐GitLab。 创建阿里云应用 登录阿里云平台&#xff0c;在上面创建一个应用。阿里云会生成一个 client ID and secret key 供您使用。 登录到阿里云平台…

P9420 [蓝桥杯 2023 国 B] 子 2023 / 双子数--2024冲刺蓝桥杯省一

点击跳转例题 子2023思路&#xff1a;dp。最开始想着枚举&#xff0c;但是超时&#xff0c;想着优化以下&#xff0c;但是还是不行。 那么切换算法&#xff0c;应该是dp&#xff1a; 1.f [i] 表示当前字符串 以 2023 为第 i 位的数量方案&#xff1a;如f [0] 表示 前i个字符串…

PHP实现DESede/ECB/PKCS5Padding加密算法兼容Java SHA1PRNG

这里写自定义目录标题 背景JAVA代码解决思路PHP解密 背景 公司PHP开发对接一个Java项目接口&#xff0c;接口返回数据有用DESede/ECB/PKCS5Padding加密&#xff0c;并且key也使用了SHA1PRNG加密了&#xff0c;网上找了各种办法都不能解密&#xff0c;耗了一两天的时间&#xf…

C语言:内存函数

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; C语言标准库中有这样一些内存函数&#xff0c;让我们一起学习吧&#xff01;&#xff01; 一、memcpy函数的使用和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 1.1 使…

微信小程序(三十四)搜索框-带历史记录

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.搜索框基本模板 2.历史记录基本模板 3.细节处理 源码&#xff1a; index.wxml <!-- 1.点击搜索按钮a.非空判断b.历史记录&#xff08;去重&#xff09;c.清空搜索框d.去除前后多余空格2.删除搜索 3.无搜索…

Golang 学习(一)基础知识

面向对象 Golang 也支持面向对象编程(OOP)&#xff0c;但是和传统的面向对象编程有区别&#xff0c;并不是纯粹的面向对象语言。 Golang 没有类(class)&#xff0c;Go 语言的结构体(struct)和其它编程语言的类(class)有同等的地位&#xff0c;Golang 是基于 struct 来实现 OOP…

部署 Zabbix 监控平台

部署 Zabbix 监控平台 目录 部署 Zabbix 监控平台一、 Zabbix简介Zabbix 特性Zabbix监控功能 二、Zabbix 概述Server数据库Web 界面ProxyAgent数据流Zabbix serverZabbix agentzabbix配置文件 三、部署Zabbix1&#xff1a;部署监控服务器1.1安装 LNMP 环境1.2 修改 Nginx 配置文…

Linux内核与驱动面试经典“小”问题集锦(2)

接前一篇文章&#xff1a;Linux内核与驱动面试经典“小”问题集锦&#xff08;1&#xff09; 问题2 问&#xff1a;spin_lock和spin_lock_irq以及spin_lock_irqsave的区别是什么&#xff1f;也可以说它们之间有什么区别和联系&#xff1f; 备注&#xff1a;此题是自旋锁问题的…

Unity类银河恶魔城学习记录1-14 AttackDirection源代码 P41

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili PlayerPrimaryAttackState.cs using System.Collections; using System.Co…

C语言的malloc(0)问题

malloc(0)详解 首先来解释malloc&#xff08;0&#xff09;的问题&#xff0c;这个语法是对的&#xff0c;而且确实也分配了内存&#xff0c;但是内存空间是0&#xff0c;就是说返回给你的指针是不能用的&#xff0c;感觉奇怪吧&#xff1f;但是从操作系统的原理来解释就不奇怪…

6-2、T型加减速计算简化【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍简化T型加减速计算过程&#xff0c;使其适用于单片机数据处理。简化内容包括浮点数转整型数计算、加减速对称处理、预处理计算 一、浮点数转整型数计算 根据上一节内容已知 常用的晶振大小…

js中类型的值相加或相减的转换

字符串与数字相加结果是字符串 "5" 1 // 返回 "51" 1 转换为 "1" 数字字符串与数字相减 数字字符串会变成数字 "5" - 1 // 返回 4 "5" 转换为 5非数值字符串与数字相减 结果是NaN "a" -…

【Vue3】项目实战前基本知识

Vue3ViteTypeScriptpinia Vue3更新点新建项目方式一新建项目方式二vite-demo目录讲解安装常用扩展 vue3书写风格动态css也可以这样使用 虚拟DOMRef全家桶ref小知识1ref小知2&#xff0c;可以直接操作Dom recative全家桶数组赋值方式一数组赋值方式二 to系列全家桶Vue3的响应式原…

Spring实现事务二

. 上一次我们讲到,Spring实现事务的方式有两种,并且,为实现这两种方式,我们做了一些准备工作,那么接下来,我将带着大家,来继续学习事务的相关知识 编程式事务 SpringBoot内置了两个对象 DataSourceTransactionManager 事务管理器. 用来获取事务(开启事务), 提交或回滚事务 Tr…