Docker 核心知识回顾

本文回顾了Docker的核心知识,包括基本架构、Dockerfile、命名空间、控制组、compose、swarm和Kubernetes。强调了命名空间的重要性,特别是网络命名空间的隔离,并介绍了DNS在Docker中的作用。此外,还提及了Docker在企业中的服务编排解决方案——compose和swarm。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

Docker 核心知识回顾

最近公司为了提高项目治理能力、提升开发效率,将之前的CICD项目扩展成devops进行项目管理。开发人员需要对自己的负责的项目进行流水线的部署,包括写Dockerfile 对自己的服务制作服务镜像。之前看过的东西,一段时间不用现在突然用起来还有些生疏。此篇对之前的Docker知识进行回顾加深。

对于docker 基本使用命令不再提及,遇到命令忘记或者不知道含义的时候可以使用 help 来进行查看。

基本架构

Docker 采用的是经典的C/S架构,包括客户端 和 服务端两大 核心组件。
image

Containers-shim:是containerd的子进程,为runc容器提供支持,也是容器内进程的 根进程

Dockerfiel

这里主要说一下Dockerfile 的编写注意的事项:

  • EXPOSE:只是申明镜像内监听端口,并不会完成自动映射。
  • ENV:当一条EVN指令 中同时为多个环境变量赋值 并且 值也是从环境变量中读取,会为变量都赋值后才更新

ENV key1 = valu1

ENV key1= valu2

ENV key2 = ${key1}

此时key1=valu2,key2=valu1

  • Context: 因为Docker是 C/S 架构的,在编写完Dockerfile 使用build 命令创建镜像的时候会将Dockerfile 所在路径下的数据作为上下文,传输给 服务端来创建镜像。所以如果我们Dockerfile同级目录下有多个文件,最好使用.dockerignore 来进行忽略,防止过多的数据发送到 docker服务端。
  • ADD\COPY : 都支持 go 语言格式的正则表达式。还有要注意路径的问题。

因为dockerfile 可以多步骤创建,所以最好 进行单一职责的划分,制作的镜像省略掉中间的环境,这样可以精简最终镜像的大小。

命名空间(重要)

命名空间是(namespace)是linux 内核的一个强大 特性。

操作系统中,包括内核,文件系统、网络、进程号、用户号、进程间通信 等资源都是进程间 直接共享的。想要虚拟化,那么除对 内存、cpu、网络IO等进行限制分割外,还需要实现文件系统、网络、PID、UID、IPC 等相互隔离。前面的好做限制,关键是后面的 文件系统、网络之类的如何隔离,这就需要系统的支持,也就是命名空间的引入了。

  • 进程命名空间(较为重要):

每个进程命名空间有一套自己的进程号管理方法,

我们从 前面 基本架构 可以看到,他们的进程是进行继承的。

子空间对于父亲空间是可见,父空间对子空间不可见

linux 通过进程命名空间管理进程号,对于同一进程,在不同命名空间中,看到的进程号不一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值