盛世宏图 发表于 2024-11-5 14:34:35

Docker:namespace隔离实战

上一篇:容器化和虚拟化
namespace

namespace通过一种内核技能来实现,允许将不同的系统资源隔离和封装到独立的命名空间中。
为容器化、虚拟化和隔离提供强大的基础。通过使用namespace技能,Linux内核可以创建多个独立的命名空间,每个命名空间都可以拥有独立的资源视图和配置信息,使得不同进程或容器可以在各自的独立环境中运行,而互不干扰。
利用系统使用进程空间隔离来确保一个进程的瓦解或异常不会影响其他进程的稳定性和可靠性。
namespace 隔离实战

dd下令

是一个在Unix和类Unix系统中用于转换和复制文件的下令行工具。
它常用于创建特定巨细的文件、备份整个分区或磁盘、以及在不同格式之间转换文件。
格式
dd if=<输入文件> of=<输出文件> [选项]
   if:指定输入文件。假如省略,默认为标准输入(stdin)。
of:指定输出文件。假如省略,默认为标准输出(stdout)。
基本选项


[*]bs=<字节数>:设置读写的块巨细(bytes)。例如,bs=1M 体现每次读写 1 MB。
[*]count=<块数>:仅复制指定数目的块。
[*]skip=<块数>:在输入文件中跳过指定数目的块。
[*]status=level:显示下令的状态。level 可以是 none(不显示任何状态)、noxfer(不显示传输速度)或 progress(显示进度)。
[*]conv=<转换选项>:指定数据转换选项。例如,conv=ascii 将数据从 EBCDIC 转换为 ASCII,conv=swab 交换每对输入字节。
测试一下:
dd if=/dev/zero of=test.img bs=8k count=1024
dd if=in.txt of=out.txt conv=ucase
   https://i-blog.csdnimg.cn/direct/9314a215e35e43988a21c3ffb74b9a75.png


[*]if=/dev/zero: if代表输入文件(input file)。/dev/zero是一个特别的文件,读取它会产生无限的零(0x00字节)。使用/dev/zero作为输入源,dd下令会生成一个由零组成的文件。
[*]of=test.img: of代表输出文件(output file)。这里指定输出文件的名称为test.img。
[*]bs=8k: bs代表块巨细(block size)。这里设置为8k,意味着每次读写利用的块巨细为8KB(8192字节)。
[*]count=1024: count代表要复制的块的数目。这里设置为1024,由于每个块巨细为8KB,所以总共会复制1024个8KB的块,即总巨细为8192KB(8MB)。
https://i-blog.csdnimg.cn/direct/0d2cba66daef485f98fc7ed67d71c711.png
mkfs下令

mkfs下令是Linux系统中用于在特定的分区上建立Linux文件系统的下令,全称为“make filesystem”。
mkfs下令重要用于在装备上构建Linux文件系统,通常是硬盘分区。通过该下令,用户可以在指定的分区上创建不同类型的文件系统,如ext2、ext3、ext4、ms-dos、vfat、xfs等。默认情况下,假如不指定文件系统类型,mkfs会创建ext2文件系统。
基本格式:
mkfs [-t <type>] <device> [<size>]
常用选项


[*]-V或–verbose:详细显示下令执行过程。
[*]-t或–type=:指定要创建的文件系统类型。
[*]-c:在创建文件系统前,查抄分区是否有坏轨。
[*]-l bad_blocks_file:将有坏轨的block资料加到指定的文件中。
[*]-b:指定新文件系统的块巨细。
[*]-i:指定文件系统上的i-nodes的初始数目(在创建日志文件系统时忽略此标记)。
[*]-o:指定用逗号分隔的虚拟文件系统实现细节选项列表。
测试一下:
mkfs -t ext4 ./test.img
https://i-blog.csdnimg.cn/direct/6e811d0d05694c2a9ed472e245f33d22.png
df下令

df下令是Linux系统中用于显示文件系统的磁盘空间使用情况的下令。
df [选项] [文件或目录...]
基本选项


[*]-h或–human-readable:以易读的格式(如K、M、G)显示磁盘空间巨细。
[*]-T或–print-type:显示文件系统的类型。
[*]-i或–inodes:显示inode(索引节点)的使用情况,而不是块使用情况。inode是Linux文件系统中用于存储文件和目次的元数据结构。
[*]-a或–all:显示全部文件系统,包括虚拟文件系统(如proc、sysfs等)和没有被挂载的文件系统。
[*]-l或–local:仅显示当地文件系统,不包括网络文件系统(如NFS)。
[*]-t <文件系统类型>或–type=<文件系统类型>:仅显示指定类型的文件系统的磁盘空间使用情况。
[*]-x <文件系统类型>或–exclude-type=<文件系统类型>:清除指定类型的文件系统。
[*]-P或–portability:使用POSIX的输出格式。
[*]-k或–kilobytes:以KB为单位显示磁盘空间使用情况。
[*]-m或–megabytes:以MB为单位显示磁盘空间使用情况。
https://i-blog.csdnimg.cn/direct/b1f659fcfa5c4c14b90c5ae4102a29c8.png
mount下令

mount下令在Linux系统中用于挂载文件系统,即将存储装备(如硬盘分区、CD-ROM、USB驱动器或网络共享)的文件系统关联到当前文件系统的某个目次上,以便用户可以通过该目次访问存储装备中的数据。
格式
mount [-选项] 设备名 挂载点
常用选项



[*]-a:挂载/etc/fstab文件中定义的全部未挂载的文件系统。
[*]-f:不实际执行挂载利用,通常与-v一起使用来测试或调试挂载下令。
[*]-F:联合-a使用时,对于每一个挂载动作产生一个子进程执行挂载,有助于加速大量挂载利用的速度。
[*]-h:显示帮助信息。
[*]-n:不将挂载信息写入/etc/mtab文件,这个选项在某些特别情况下,例如没有可写文件系统时有用。
[*]-r:以只读模式挂载文件系统。
[*]-t vfstype:指定文件系统的类型,例如ext4、xfs、nfs、cifs等。
装备名:要挂载的物理装备或长途资源的路径,如/dev/sda1或/server/share。
挂载点:挂载装备的当地目次,即渴望访问装备内容的位置,如/mnt/mydrive。在挂载之前,需要确保挂载点目次已经存在。
测试一下:
sudo mount ./test.img /data/testymount
https://i-blog.csdnimg.cn/direct/bc3650b82f8648938a3a688044b75cfb.png
unshare下令

unshare下令允许用户指定不共享父进程中的某些命名空间,并在新的命名空间中运行指定的程序。这可以用于实现进程和资源的隔离,类似于Linux容器的工作方式。
格式
unshare ]
基本选项


[*]-m 或 --mount:创建一个新的挂载命名空间。在该命名空间中,进程将有本身独立的文件系统视图。
[*]-n 或 --net:创建一个新的网络命名空间。这允许进程在独立的网络环境中运行。
[*]-p 或 --pid:创建一个新的进程命名空间。在该命名空间中,进程将拥有本身独立的进程号空间。
[*]-u 或 --user:创建一个新的用户命名空间。这可以用于隔离用户ID和组ID。
[*]-U 或 --uts:创建一个新的UTS命名空间。UTS命名空间用于隔离主机上的主机名和域名。
[*]-i 或 --ipc:创建一个新的IPC(进程间通信)命名空间。这用于隔离进程间通信资源,如消息队列、信号量和共享内存。
[*]–fork:在新的命名空间中启动一个新的子进程来运行指定的程序,而不是直接运行它。这对于创建新的PID命名空间特别有用。
测试一下:
sudo unshare -u /bin/bash
https://i-blog.csdnimg.cn/direct/93395e937d894ada83a35f3d2c86ef4c.png
PID隔离

sudo unshare -p /bin/bash
https://i-blog.csdnimg.cn/direct/2a95e3d5b73c4e56a3e4cbadf53b9b6f.png
sudo unshare -p --fork /bin/bash
sudo unshare -p --fork --mount-proc /bin/bash
https://i-blog.csdnimg.cn/direct/2f41637740ae468dac13f33544b3d770.png
mount隔离

unshare --mount --fork /bin/bash
mount -t ext4 data2.img /data/maxhou/data2mount
https://i-blog.csdnimg.cn/direct/de33747191f9455eb39c18cbefba333d.png
https://i-blog.csdnimg.cn/direct/7bc8e0708f8b4bb29ef101319424b173.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Docker:namespace隔离实战