当前位置: 首页 > news >正文

docker k8s

1、docker是什么?

Docker是一个开源的应用容器引擎,将环境和程序一起打包给到 服务器运行的工具软件。

2、基础镜像base image是什么?

操作系统:用户空间、内核空间

阉割操作系统,利用其的用户空间(因为应用程序运行在用户空间),文件系统,依赖库打包成一个类似“压缩包”的文件。这就是所谓的基础镜像base image。


3、dockerfile是什么?

有了base image还不够,我们还需安装一些依赖和创建一些文件夹,最后才是运行我们的目标应用程序。因此我们将所有的要做的事情以命令行的形式分行列举出来,类似于一份todo List。像这份列清楚了从操作系统到应用服务启动需要做哪些事情的清单文件就是所谓的dockerfile。

4、container image(容器镜像)是什么

dockerfile只是描述了做哪些事情,并没开始做,用命令docker build执行的时候,docker软件就按照dockerfile说明,一行行构建环境加应用程序,最终将这个环境和应用程序打包成一个类似“压缩包”的东西,我们把它称之为容器镜像。

只要将容器镜像传到任意一台服务器对该“压缩包”进行“解压缩”,就可以同时运行环境和程序。

5、registry是什么?

服务器那么多,挨个将容器镜像传到上去,压力给到发送方的网络带宽了。

因此弄一个镜像仓库,通过docker push到镜像仓库,有需要的服务器通过docker pull将镜像拉到机器上,这个负责管理镜像仓库推拉能力的服务叫做docker registry。

6、容器是什么?

通过指令docker pull在服务器上拿到容器镜像,通过docker run,将这个类似压缩包的容器镜像进行解压缩,获得一个独立的环境和应用程序,并运行起来,这样一个独立的环境和应用程序就是所谓的容器。我们可以在一个操作系统上同时跑多个容器,且这些容器互相独立和隔离。

7、容器和虚拟机的关系

区别:容器不带操作系统,虚拟机带有一个操作系统。容器只包含核心依赖库和配置文件等必要组件,它利用一个namespace的能力,让它看起来像一个独立的操作系统。再利用一个cgroup的能力限制它能使用的计算资源。因此容器是一个自带独立运行环境的特殊进程,底层用的是宿主机的操作系统内核。

8、docker 的架构原理

经典的client-server架构。client对应docker-cli,sever对应docker daemon。我们在命令行里敲docker命令,使用的就是docker-cli,docker-cli会解析我们输入的command命令,然后调用docker daemon守护进程提供的restful-api,守护进程收到命令后,会根据命令创建和管理各个容器。

docker daemon架构:

docker daemon分成docker server和engine两层。docker server是个http服务器,负责对外提供操作容器和镜像api。接口接收到api请求后,会分发任务给engine层,engine层负责创建job,由job实际执行各种工作。

不同的docker命令会执行不同类型的job任务。

(1)docker build命令执行过程。

job根据dockerfile指令,像包洋葱皮似的一层层构建容器镜像文件。

(2)docker pull/push命令执行过程。

镜像推拉操作,job会根据外部的docker registry交互将镜像上传/下载。

(3)docker run命令执行过程。

job基于镜像文件调用containerd组件,驱使runC组件创建和运行容器。

9、docker compose是什么?多个容器一整套的部署。

docker容器本身是一个特殊的进程,但我们想部署多个容器,且对这些容器的顺序有一定的要求。比如一个博客,先启动数据库,再启动身份验证服务,最后启动博客微服务。因此普通做法是依次启动服务,但有更优雅的启动方式,通过一个yaml文件,写清楚要部署的容器有哪些,以及部署顺序,以及容器占有的cpu和内存信息。只需要通过docker compose命令解析yaml文件,将容器们一键按照顺序部署,就完成一整套的部署。

10、docker swam

它解决的是一整套服务,在多台服务器上的集群部署问题。如在a服务器上坏了,可以部署到b服务器上。还能根据需要对应用做扩缩容。

11、docker和k8s的关系。

Docker可以看作是k8s内部使用的低级别组件,而k8s则可以将Docker看成其内部使用的一种容器技术。

补充理解:

k8s它会在多台node的服务器上调度pod进行部署和扩缩容。每个pod含有多个container,每个container本质上是一个服务进程。

k8s和swam的功能很像。

docker部署的容器就是k8s调度的pod里的container,它们都叫容器。docker compose基于多个docker container创建一整套服务,其实就是k8s里的pod。而docker swarn做的事情和k8s一样,本质就是在调度pod。

k8s称之为容器编排引擎,将它理解为以api编程的方式管理安排各个容器的引擎。

相关文章:

  • CentOS 7 内存占用过大导致 OOM Killer 杀掉了 Java 进程
  • AI是在帮助开发者还是取代他们?
  • 2024.06.30 刷题日记
  • 解决 VM 虚拟机网络连接异常导致的 Finalshell 无法连接及 ifconfig 中 ens33 丢失问题
  • 基于C++实现的EventLoop与事件驱动编程
  • 【Hive中常见的优化手段----数据采集!Join 优化!Hive索引!数据倾斜!mapreduce本地模式!map和reduce数量调整!】
  • 【大模型LLM面试合集】大语言模型基础_llm概念
  • 由监官要求下架docker hub镜像导致无法正常拉取镜像
  • qt QTreeView的简单使用(多级子节点)
  • SpringCloud分布式微服务链路追踪方案:Skywalking
  • 从0开始学习pyspark--pyspark的核心概念[第0节]
  • DFS,BFS最短路,树与图的深度/广度优先遍历,拓扑排序
  • 为什么Vim是程序员最喜欢的文本编辑器之一?
  • 对象被优化以后才是高效的C++编程
  • 达梦数据库 页大小与数据库字段长度的关系
  • 收藏网友的 源程序下载网
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Docker入门(二) - Dockerfile
  • JavaScript的使用你知道几种?(上)
  • javascript面向对象之创建对象
  • Java超时控制的实现
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • PHP 7 修改了什么呢 -- 2
  • Python 基础起步 (十) 什么叫函数?
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python爬虫--- 1.3 BS4库的解析器
  • react 代码优化(一) ——事件处理
  • 老板让我十分钟上手nx-admin
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 使用Swoole加速Laravel(正式环境中)
  • 小李飞刀:SQL题目刷起来!
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • Java性能优化之JVM GC(垃圾回收机制)
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #LLM入门|Prompt#3.3_存储_Memory
  • $.ajax()方法详解
  • (02)vite环境变量配置
  • (06)Hive——正则表达式
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (3) cmake编译多个cpp文件
  • (Git) gitignore基础使用
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (PADS学习)第二章:原理图绘制 第一部分
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二)fiber的基本认识
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (转)jQuery 基础
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转载)深入super,看Python如何解决钻石继承难题
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .cn根服务器被攻击之后
  • .Net Web窗口页属性