问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

十分钟快速入门docker+k8s,简单实操+注意事项+底层原理

创作时间:
2025-03-29 22:51:45
作者:
@小白创作中心

十分钟快速入门docker+k8s,简单实操+注意事项+底层原理

引用
CSDN
1.
https://blog.csdn.net/zfj321/article/details/144342705

容器技术现在使用已经非常普遍了,好处多多,此处不赘述,但对于普通开发者来说,从0学起来还是比较有坡度的,主要是容器技术偏运维操作更多一些,一般项目程序员直接和容器打交道的机会比较少,加上docker+k8s 涉及到的概念、工具、命令太多,让初学者容易陷进去,一下子迷失了方向。其实我们弄清楚了底层基本原理,然后命令一点点学,逐层递进,效果就很好了。

文本目标:

a. 介绍一条快捷的入门路径, 可以快速跑通整个流程。
b. 对各个工具的底层原理做简单介绍,否则基础不牢地动山摇。

顺便介绍一种学习方法: 3W学习法 , 我自认为3W学习法是我们每个人学习知识必由路径,只是我们自己没感觉到而已。

介绍
举例说明
注意点
what
是什么:能干什么,优缺点是什么
docker 是什么,能干什么
how
怎么用
docker 的安装、使用
why
为什么,底层原理
docker 是怎么工作的

因为docker+k8s细节太多,所以本文主要介绍what 和 why

入门路径:

由于wsl+docker+k8s网上安装教程比较多,大家可以根据自己环境自行安装,本部分只重点介绍安装注意事项。

环境和工具:

win10 专业版+ dockerdesktop +kubectl

dockerdesktop 是一个桌面软件

kubectl : go 语言写的k8s 客户端(命令行工具),k8s官网下载, 直接配置到环境变量即可。

Dockerdesktop安装注意事项:

安装前windows 系统需要开启wsl2 (windows subsystem linux) ,可以通过控制面板操作,也可以用命令,效果等同,操作完了操作系统要重启, 然后安装desktop 的时候选择 wsl2

Dockerdesktop 启动k8s 注意事项:

启动k8s 前需要确保网络可以访问k8s 镜像库, dockerdesktop 设置Resources 是可以设置proxy的。

因为需要拉去k8s 相关镜像,可能需要比较长的时间

启动成功后:

启动后,会在本机生成一个配置文件,这个是kubectl 访问k8s apiserver 的token

C:\Users\Administrator.kube\config

将server 的地址 改成 127.0.0.1 即可, docker 会把6443 端口映射到本机

kubeclt 其实就相当于一个postman ,从C:\Users\Administrator.kube\config读取认证信息 ,然和 apiserver 之间用http 通信。

测试kubectl :

底层逻辑:

Linux 内核是什么?与容器关系是?

我们通常说的linux 系统一般是两部分 : 内核(kernel )+ 壳应用(ubuntu、centos等)

内核:负责cpu 内存 线程调度、网络等

外壳:我们平时运行的软件 命令等都属于外壳应用

平常我们所接触的 centos linux 系统实际上是内置了一个kernel 的, 核和壳是一对一的关系。

由于linux 内核 namespace 的隔离机制,实际上一个 内核是可以对应多个外壳的, docker 核心原理就是基于这一点做的。

如下图,win10机器上我启动了wsl2, 然后装了一个docker desktop 和一个 ubuntu ,这两个壳系统实际上共用了wsl2 这一个 linux 内核。

进一步验证,docker desktop 里面的容器的内核也是这个 wsl 2

WSL 是什么?

wsl微软官方为Windows操作系统开发的一个linux子系统,只要你启动了wsl ,那么你的机器上相当于运行了两个操作系统内核(windows内核 +linux内核)

我们通常说的linux 发版版 是在 linux 内核上开发的。

有了 wsl ,那么windows 既可以同时当做windows 和 linux 两个系统用了,两个系统无缝衔接。

使用场景:比如我们开发go 程序, 我们习惯在windows中用vscode 代码编写, 由于go 里面的一些工具命令(比如kubebuilder)在windows 下无法运行,那么我们直接用wsl ubuntu就行了,所有磁盘会自动挂在过去。

就基本上不再需要windows安装虚拟软件,在虚拟机里面跑linux 了, 甚至wsl ubutnu 都可以不装,直接用dokcer ,效果是一样的,自己docker run 命令的时候把windows目录挂载进去, 下图中的 /data 目录是直接挂载的windows 目录:

Docer 镜像是什么?

docker 镜像其实就是一个压缩包,分层文件系统将所有层级的文件叠加起来,一个docker容器就是一个在内核上运行的壳系统(包括许多文件和运行的进程)

操作系统文件:壳操作系统-centos 等

你的软件运行环境:jdk 等

你写代码: 编译后的jar

可以简单理解为:一个docker镜像就是一个特定的壳操作系统, 一个容器就是这个壳操作系统运行实例, 由于内核namespace的隔离机制,一个内核之上可以运行多个不同的壳操作系统,他们之间互不干扰。这也就是为什么docker比传统虚拟机方案节省资源的原因。

K8S 是什么?

标准答案:容器编排

支持多种容器技术,但大多数用的都是docker.

生产环境中,不会像上面介绍的一样,所有软件运行在同一台机器的同一个docker上,需要很多台机器组成的docker 集群 。

k8s 就是把这些资源集中管理,需要创建一个容器的时候,k8s知道那台机器有资源可用,让后让容器在某一台或几台机器上启动起来,当然还包括容器的启停、监控等其他复杂功能。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号