虚拟化、容器、Docker
0X00 虚拟化
首先虚拟化 Virtualization 它是一种技术,通过软件技术虚拟一张网卡(例如 Linux Bridge)、虚拟一个磁盘分区(例如 vmdk 文件)甚至直接虚拟一整台电脑(例如 VMware/VirtualBox)出来都是虚拟化技术的实装。
首先虚拟化 Virtualization 它是一种技术,通过软件技术虚拟一张网卡(例如 Linux Bridge)、虚拟一个磁盘分区(例如 vmdk 文件)甚至直接虚拟一整台电脑(例如 VMware/VirtualBox)出来都是虚拟化技术的实装。
既然想搞清楚容器的单进程模型,那自然需要先复习一下 Linux 下的基本进程关系了。你说你用的是 Windows Container?不懂,不会,打扰了😢
我们知道 Linux 下会有一个 PID=1 的进程来带动其他进程,以前 PID=1 的进程是 init 后来大家都在用 systemd ,这里就不多说了,只来回顾一下「孤儿进程」和「僵尸进程」这两个概念。
部署 Kubernetes 的节点是不允许使用交换分区的,临时禁用可以 swapoff -a。然后在 /etc/fstab 中将交换分区的自动挂载给注释掉就可以了。
作为一个纯新手想要学习 Linux、MySQL、Python… 的第一步往往都是先装一个来看看,当然 Kubernetes 也不例外。装 Linux 也许跟着教程在虚拟机里一会儿就装好了,尤其是现在很多发行版本都有图形化安装界面了,但是 Kubernetes 就不一样了,如果你去部署一套 K8S 集群的话极有可能会遇到一系列问题,包括但不限于:
下面介绍几个我自己常用的小技巧,均可以在日常工作中给自己带来一些小小的便利🤪
如果你电脑上装了 Python3 则可以使用 python3 -m http.server --bind 0.0.0.0 2333 这个命令在当前目录启动一个简单的 web 服务,监听在 0.0.0.0:2333 上。这样一来别人就可以访问你的 ip 来下载当前目录下的文件了。不过使用这个方法的时候要注意自己当前的工作目录哈,不要傻乎乎的在自己的 $HOME 下面用这个命令,小心别人下载你的隐私数据喔。
这篇内容可能是目前为止我所有博客内容里最特别的一篇了,今天不想写什么技术类文章,只是想发发牢骚,说说自己想说但一直没啥机会吐槽的事情。不知道各位有没有那种情况,其实自己是很乐观很开心的一个人,但就是偶尔会突然觉得很累,很烦,很焦虑。这些事情说大可能并不大,只是打个游戏可能某一关打不过去而已;说小可能也不小,甚至跟全国乃至全球数以亿计人口的健康相关。那接下来我就要开始吐槽了,也许会有些负能量,但把自己的「负能量」一股脑输出出来没准就能让自己变得更好呢 hhhhh
阅读并了解 LVM 需要了解:Linux 基本操作、分区概念、文件系统概念
首先 LVM 的全称是 Logical Volume Manager 逻辑卷管理。传统的方式是将一个磁盘分成类似于 sda1/sda2/sda3 的分区,然后再将这些分区格式化成类似于 ext4/xfs 这种文件系统,最后将文件系统挂载到某个目录上。但是这种方式下对磁盘空间进行重分配是比较麻烦的,将新安装的磁盘融入到现有系统中也是比较费力的,这就是 LVM 需要解决的问题。
设计一个系统,不论是 Web 还是其他的什么形式,通过用户名和密码认证也是一个再正常不过的事情了。但是如何保存密码却是一个值得讨论的问题,相信各位最开始的一个有用户名和密码的程序多半也是用明文存储的密码吧 🤓
本篇文章是这篇「使用 git stash save 将暂存区命名」的重置版。因为根据 Google 的统计数据我得知某些问题的关键词搜索出来之后我的博客排行会比较靠前,所以把最容易被各位点击到的文章做了个重置计划,改进之前的一些不足,争取能够说的更清楚一些,也能节省各位一点点时间,希望能真正的帮助到从搜索引擎点进来的各位~
本篇内容不严格区分 function 与 method 🥹
我们都知道在 Python 中如何定义一个函数,只需要 def foo(arg_1, arg_2, *args, **kwargs)
就足够了。知道的稍微多一些呢可能知道「Python 中万物皆对象,所以函数的调用也只是调用了函数对象中的 __call__ 方法」,所以我们可以尝试用这种方式调用一个函数
但凡写过 Python
的人应该都用过int()这个函数了,而且也都知道这个是将其他类型转换成int类型的内置方法,稍微用的多一点的还会知道这个方法如果传入不能被强制转换的数据时会抛出TypeError的异常。那你知道如何让自己定义的类可以被强制转换吗?
相信各位学习使用 Docker 的时候都会出现过好不容易用 Docker 启动了个数据库容器,然后发现只要容器消失之后数据也就一起消失了的情况。然后通常来说会使用这么一个方法来解决问题:将宿主机的某个目录挂载到容器里,这样一来那个数据库容器就可以将数据内容和配置持久化地存储下来了。一般会使用这么一个方法将某个目录挂载到容器内部 docker run -dit --name new_container --mount type=bind,source=/Users/shawn/Downloads/test/test_dir,target=/test_dir alpine 。
说起来但凡各位用过 Linux 就应该用过 ssh 了吧,所以怎么使用 ssh 去连接一台服务器、怎么去配置 key 登陆而非密码、怎么允许/禁止 root 用户使用这种问题就不再过多讨论了,这篇文章来介绍一下 ssh隧道 这个东西。
兄弟们我的年更文章它又来了~如果你看到这篇文章的时候发现发布时间是 2021-12-31 23:59:59 但你的手机电脑告诉你还没到这个时间,不要慌,一定是你穿越了。
如果秉承着「能用就行」的原则,那么这篇文章提到的东西基本都没什么卵用;如果秉承着「写更好的代码」的原则,那么这里提到的东西也许对你有所帮助。
前两段属于并不那么重要的“故事”部分,如果切实需要一些数据恢复的经验和方法的话可以直接跳到0X02部分,给个一键三连就好(哦不对这不是B站视频,那你白嫖好了)。
首先声明这篇博客针对的是中级 Linux 用户,如果你还不清楚 Linux 中的基本权限机制 user/group/other 和 rwx 的话需要先去了解一下对应的基础内容才行。既然标题上写了是“不那么基础的权限”,也就能看出来虽然内容不是很基础,但是也不会很高深。
在正式开始之前我们先要搞明白一个事情,那就是「函数」和「方法」到底有什么区别。首先来看一下在 Python官方文档里的定义。
函数:可以接受零个或几个参数并向调用者返回一些值的一系列语句。
本来家里有一台群晖的 DS118 单盘位机器装了一块 4TB 红盘,用了三年后存储空间已经告急了。再加上买了相机,有很多照片需要存储;还有两台 MacBook 的 Time Machine 需要备份,而且还有不少下载的电影时不时想要回顾一下,空间就非常紧张了。虽然这台群晖的体验确实是挺好的,不过因为我这款性能太弱了,每次上传照片的时候创建索引都会卡死很久,期间几乎所有操作都是无效的,而且因为是单盘位既没有数据冗余也不能扩展空间,就想着是时候给家里的 NAS 升个级了。毕竟再过不了多久这块磁盘也就被塞满了,到时候再研究迁移就会导致中间断层一段时间,还是不太好。
首先纠正一种说法,ARP就是“地址解析协议”,所以严格来说不应该说“ARP 协议”,因为ARP Address Resolution Protocol就已经包含了Procotol了,说“ARP 协议”就相当于是“地址解析协议协议”,很鬼畜。