docker k8s

news/2024/7/7 20:40:54 标签: docker, kubernetes, java

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编程的方式管理安排各个容器的引擎。


http://www.niftyadmin.cn/n/5535213.html

相关文章

1-5题查询 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例题2.1.可回收且低脂的产品2.2.寻找用户推荐人2.3.大的国家2.4. 文章浏览 I2.5. 无效的推文 1. 相关知识点 sql判断,不包含null,判断不出来distinct是通过查询的结果来去除重复记录ASC升序计算字符长度 CHAR_LENGTH() 或 LENGTH(…

【leetcode82-91动态规划,91-95多维动态规划】

动态规划【82-91】 多维动态规划【91-95】

Docker Compose 安装以及命令的详细解析

Docker Compose 是一种用于定义和运行多容器Docker应用程序的工具。通过Compose,可以使用YAML文件来配置应用程序所需的所有服务,然后使用单个命令创建并启动所有服务。Docker Compose 提供了一种高效、简洁的方式来管理Docker容器和服务,使得…

数字类型<整数、复数>

Python 中,数字类型 Number, 包括整数 int、浮点 float 数和复数 complex 三个子类型。 用来表示程序中不同的数字类型的数据。 整数 整数类型:用来表示整数数值,即没有小数部分的数值,在 Python 中,没有…

MySQL高级-MVCC- readview介绍

文章目录 1、介绍2、ReadView中包含了四个核心字段:3、版本链数据的访问规则:4、不同的隔离级别,生成ReadView的时机不同: 1、介绍 ReadView(读视图)是 快照读 SQL执行时MVCC提取数据的依据,记录…

Redis分布式集群部署

目录 一. 原理简述 二. 集群配置​​​​​​​ 2.1 环境准备 2.2 编译安装一个redis 2.3 创建集群 2.4 写入数据测试 实验一: 实验二: 实验三: 实验四: 添加节点 自动分配槽位 提升节点为master: 实验…

Linux命令 wc(word count)-l(lines)用于统计文件中的行数。

文章目录 1、wc -l2、实战3、wc --help 1、wc -l 在命令 wc -l 中,-l 的英文全称是 lines。这个选项用于指定 wc(word count,单词计数)命令来统计文件的行数。 例如,当你运行 wc -l load_user_100w_sort.sql 时&…

上位机图像处理和嵌入式模块部署(mcu项目1:实现协议)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 这种mcu的嵌入式模块理论上都是私有协议,因为上位机和下位机都是自己开发的,所以只需要自己保证上、下位机可以通讯上&…