Docker NameSpace隔离

1、dd命令:dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设
备或标准输出

功能:用于读取、转换并输出数据

语法:dd OPTION

参数
1、 if=文件名:输入文件名,默认为标准输入。即指定源文件。
2、 of=文件名:输出文件名,默认为标准输出。即指定目的文件。
3、ibs=bytes:一次读入 bytes 个字节,即指定一个块大小为 bytes 个字节。
obs=bytes:一次输出 bytes 个字节,即指定一个块大小为 bytes 个字节。
bs=bytes:同时设置读入/输出的块大小为 bytes 个字节。
4、 cbs=bytes:一次转换 bytes 个字节,即指定转换缓冲区大小。
5、skip=blocks:从输入文件开头跳过 blocks 个块后再开始复制。
6、seek=blocks:从输出文件开头跳过 blocks 个块后再开始复制。
7、count=blocks:仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
8、conv=<关键字>,关键字可以有以下 11 种:
9、conversion:用指定的参数转换文件。
10、 ascii:转换 ebcdic 为 ascii
11、ebcdic:转换 ascii 为 ebcdic
12、 ibm:转换 ascii 为 alternate ebcdic
13、 block:把每一行转换为长度为 cbs,不足部分用空格填充
14、unblock:使每一行的长度都为 cbs,不足部分用空格填充
▪ lcase:把大写字符转换为小写字符
▪ ucase:把小写字符转换为大写字符
▪ swap:交换输入的每对字节
▪ noerror:出错时不停止
▪ notrunc:不截短输出文件
▪ sync:将每个输入块填充到 ibs 个字节,不足部分用空(NUL)字符补齐。
15、--help:显示帮助信息
16、--version:显示版本信息

2、mkfs 命令:

功能:用于在设备上创建 Linux 文件系统,俗称格式化,比如我们使用 U 盘的时候可以格式化。

语法:mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

参数:

-t fstype:指定要建立何种文件系统;如 ext3,ext4
filesys :指定要创建的文件系统对应的设备文件名;
blocks:指定文件系统的磁盘块数。
-V : 详细显示模式
fs-options:传递给具体的文件系统的参数

3、df命令:

功能:用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计

语法:df [OPTION]... [FILE]...

参数:

参数
① -a, --all 包含所有的具有 0 Blocks 的文件系统
② -h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
③ -H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
④ -t, --type=TYPE 限制列出文件系统的 TYPE
⑤ -T, --print-type 显示文件系统的形式

4、mount命令:

功能:用于加载文件系统到指定的加载点。此命令的也常用于挂载光盘,使我们
可以访问光盘中的数据,因为你将光盘插入光驱中,Linux 并不会自动挂载,必须使用
Linux mount 命令来手动完成挂载

注:

①Linux 系统下不同目录可以挂载不同分区和磁盘设备,它的目录和磁盘分区是分离的,
可以自由组合(通过挂载)
②不同的目录数据可以跨越不同的磁盘分区或者不同的磁盘设备。
③挂载的实质是为磁盘添加入口(挂载点)

语法:

mount [-l]
mount [-t vfstype] [-o options] device dir

参数:

①-l:显示已加载的文件系统列表;
②-t: 加载文件系统类型支持常见系统类型的 ext3,ext4,iso9660,tmpfs,xfs 等,大部分情况
可以不指定,mount 可以自己识别
③-o options 主要用来描述设备或档案的挂接方式。
④loop:用来把一个文件当成硬盘分区挂接上系统
⑤ro:采用只读方式挂接设备
⑥rw:采用读写方式挂接设备
⑦device: 要挂接(mount)的设备。
⑧dir: 挂载点的目录

5.unshare命令:

功能:使用与父程序不共享的名称空间运行程序

语法:unshare [options] program [arguments]

参数:

-i, --ipc:不共享 IPC 空间
-m, --mount:不共享 Mount 空间
-n, --net:不共享 Net 空间
-p, --pid:不共享 PID 空间
-u, --uts:不共享 UTS 空间
-U, --user:不共享用户
-V, --version:版本查看
--fork:执行 unshare 的进程 fork 一个新的子进程,在子进程里执行 unshare 传入的参数。
--mount-proc:执行子进程前,将 proc 优先挂载过去

当前进程的用户名:

另开一个窗口的用户名:

PID隔离:
1. 在主机上执行 ps -ef,可以看到进程列表如下,其中启动进程 PID 1 为 systemd 进程

2. 我们打开另外一个 shell ,执行下面命令创建一个 bash 进程,并且新建一个 PID Namespace:

--fork :新建了一个 bash 进程,是因为如果不建新进程,新的 namespace 会用 unshare
的 PID 作为新的空间的父进程,而这个 unshare 进程并不在新的 namespace 中,所
以会报个错 Cannot allocate memory
--pid :表示我们的进程隔离的是 pid,而其他命名空间没有隔离
mount-proc :是因为 Linux 下的每个进程都有一个对应的 /proc/PID 目录,该目录包含
了大量的有关当前进程的信息。 对一个 PID namespace 而言,/proc 目录只包含当前
namespace 和它所有子孙后代 namespace 里的进程的信息。创建一个新的 PID
namespace 后,如果想让子进程中的 top、ps 等依赖 /proc 文件系统的命令工作,还
需要挂载 /proc 文件系统。而文件系统隔离是 mount namespace 管理的,所以 linux
特意提供了一个选项--mount-proc 来解决这个问题。如果不带这个我们看到的进程还
是系统的进程信息。

3. 执行 ps -ef 查看进程信息,我们可以看到此时进程空间内的内容已经变了,而且
启动进程也变成了我们的 bash 进程。说明我们已经看不到主机上的进程空间了,我们
的进程空间发生了隔离。

4. 执行exit退出

Mount 隔离

1. 打开第一个 shell 窗口 A,执行命令, df -h ,查看主机默认命名空间的磁盘挂载情况

2. 打开一个新的 shell 窗口 B,执行 Mount 隔离命令

--mount 表示我们要隔离 Mount 命名空间了
--fork 表示新建进程
unshare --mount --fork /bin/bash
mkdir -p /data/tmpmount

3.在窗口 B 中添加新的磁盘挂载

dd if=/dev/zero of=fdimage.img bs=8k count=10240
mkfs -t ext4 ./fdimage.img
mount ./fdimage.img   /data/tmpmount

4. 在窗口 B 挂载的磁盘中添加文件

echo "Hello world!" > /data/tmpmount/hello.txt

5.查看窗口B中磁盘挂载信息

6.查看窗口A中磁盘挂载信息

7. 查看窗口 B 中的文件信息

8. 查看窗口 A 中的文件信息,可以看到窗口 B 中新建的文件和磁盘挂载在主机的窗
口中并没有,说明我们实现了文件系统隔离。

9.窗口 B 执行 exit,退出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/51706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】C++的类型的转换

目录 C语言中的类型转换 C中的类型转换 C强制类型转换 static_cast reinterpret_cast const_cast dynamic_cast C语言中的类型转换 C语言中又两种类型转换&#xff1a;&#xff08;强制&#xff09;显示类型转换和隐式类型转换。 &#xff08;强制&#xff09;显示类型…

Linux系统服务——【web,http协议,apache服务和nginx服务】(sixteen day)

一、web基础以及http协议 1、web基本概念和常识 前端开发一般用uniapp. 1、Web:为用户提供的一种在互联网上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 2、Web 服务为用户提供各种互联网服务&#xff0c;这些服务包括信息浏览服务&#xf…

深入源码:解析SpotBugs (3) Detector

文章目录 OpcodeStackDetector常用套路调用栈visit code类检测方法检测代码行检测 前面的博客也提到过&#xff0c;Spotbugs 里面 Detector2 与 Detector&#xff0c;FindBugs2 与 FindBugs&#xff0c;GUI2与GUI&#xff0c;可以视为 Spotbugs 与 FindBugs 新老技术的碰撞&…

STM32单片机C语言:继电器控制220v灯泡亮灭

本文旨在详细阐述如何利用STM32单片机结合继电器模块&#xff0c;实现对220V灯泡亮灭的远程控制。我们将深入探讨继电器的工作原理&#xff0c;构建相应的硬件电路&#xff0c;并提供具体的程序实现步骤&#xff0c;在智能家居与自动化控制领域的应用的比较多。 一、继电器原理…

接口测试支持IDEA插件一键同步API、新增思维导图快速评审测试用例,MeterSphere开源持续测试工具v3.1.0版本发布

2024年7月29日&#xff0c;MeterSphere开源持续测试工具正式发布v3.1.0版本。 在这一版本中&#xff0c;接口测试方面&#xff0c;支持通过IDEA插件一键同步API至MeterSphere&#xff1b;测试管理方面&#xff0c;“测试用例”模块新增通过思维导图模式快捷评审测试用例。在“…

扫码登录方案

以哔哩哔哩扫码登录为例 二维码解码后内容为&#xff1a;https://passport.bilibili.com/h5-app/passport/login/scan?navhide1&qrcode_keye60869ce7f5235c7123175a7effc6f90&frommain-fe-header 扫码登陆&#xff0c;利用已登录设备授权未登录设备登录的方式 扫码…

使用JavaFx Fxml笔记

使用JavaFx Fxml实现账号密码登录 HelloApplication.java&#xff1a;package com.example.dr295cmonth7;import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.scene.Parent; import javafx.scene.Scene; i…

【论文精读】 | 基于图表示的视频抑郁症识别的两阶段时间建模框架

文章目录 0、Description1、Introduction2、Related work2.1 Relationship between depression and facial behaviours2.2 Video-based automatic depression analysis2.3 Facial graph representation 3、The proposed two-stage approach3.1 Short-term depressive behaviour…

请你谈谈:vue的渲染机制(render)- 2举例说明问题

如何在 Vue 的 render 函数中使用 createElement 方法来创建虚拟节点&#xff08;VNode&#xff09;。这里是一个稍微整理后的示例&#xff0c;它直接对应于你提供的注释和代码片段&#xff0c;但作为一个完整的 render 函数的一部分&#xff0c;可能位于一个 Vue 组件的 scrip…

javascript(一)

一、基本语法 1.位置 (1)JavaScript脚本必须位于<script>与</script>之间 (2)<script>标签可以位于<body>或者<head>部分中 2.输出语句 (1)window.alter() 弹出警告框 (2)document.write() 可以将内容在网页中打印出来&#xff0c;同时也…

二维01背包 背包滚动数组 分割等和子集 DAY22

11.背包理论基础 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 背包问题有多种背包方式&#xff0c;常见的有&#xff1a;01背包、完全…

进程间通信方式--管道

每个进程的用户地址空间都是独立的&#xff0c;一般而言是不能互相访问的&#xff0c;但内核空间是每个进程都共享的&#xff0c;所以进程之间要通信必须通过内核。 管道 管道的linux命令&#xff1a;ps auxf | grep mysql 上面命令行里面的竖线就是一个管道&#xff0c;它的功…

新手vue学习问题汇总(自用)(长期更新)

1.export default export default 是 ES6 模块语法&#xff0c;用于导出模块的默认成员。在 Vue.js 中&#xff0c;通常用来导出一个组件对象&#xff0c;使其可以在其他文件中被导入并使用。 2.props props 是组件接收外部数据的方式。父组件可以通过向子组件传递 props 来…

紫杉醇生物合成机制研究进展-文献精读35

紫杉醇生物合成机制研究进展 摘要 紫杉醇是目前已发现的最具抗癌活性的天然广谱抗癌药物之一&#xff0c;其生产方式主要依赖于从珍稀植物红豆杉中进行分离提取以及化学半合成&#xff0c;因其含量稀少&#xff0c;生产能力受到严重的限制。随着红豆杉基因组的全解析和合成生…

如何在 Windows 上安装并配置 VNC 远程连接树莓派,并结合Cpolar实现公网远程访问

目录 ⛳️推荐 前言 1. 使用 Raspberry Pi Imager 安装 Raspberry Pi OS 2. Windows安装VNC远程树莓派 3. 使用VNC Viewer公网远程访问树莓派 3.1 安装Cpolar步骤 3.2 配置固定的公网地址 3.3 VNC远程连接测试 4. 固定远程连接公网地址 4.1 固定TCP地址测试 ⛳️推荐…

内网隧道学习笔记

1.基础&#xff1a; 一、端口转发和端口映射 1.端口转发是把一个端口的流量转发到另一个端口 2.端口映射是把一个端口映射到另一个端口上 二、http代理和socks代理 1.http带那里用http协议、主要工作在应用层&#xff0c;主要用来代理浏览网页。 2.socks代理用的是socks协议、…

编码器如何在stm32上使用?

编码器如何在stm32上使用 文章目录 编码器如何在stm32上使用1. 编码器是什么&#xff1f;2. 如何在stm32上使用编码器1. 编码器的基本原理2. STM32上的实现3. 代码实现 1. 编码器是什么&#xff1f; 编码器是一种传感器或设备&#xff0c;用于测量位置、角度或速度&#xff0c…

坐标系转换公式

坐标系转换2种情况&#xff1a; 一、XOY坐标系不动&#xff0c;点P(x, y) 沿顺时针方向旋转 θ \thetaθ&#xff0c;得在XOY坐标系的坐标为P(x′, y′) 设某点与原点连线和X轴夹角为b度&#xff0c;以原点为圆心&#xff0c;逆时针转过a度 , 原点与该点连线长度为R, [x,y]为…

电测量数据交换DLMSCOSEM组件第53部分:DLMSCOSEM应用层(上)

1.范围 本部分规定了DLMS/COSEM客户机和服务器的DLMS/COSEM应用层的结构、服务和协议。同时,定义规则规定DLMS/COSEM通信配置。 它定义了用于建立和释放应用程序连接的服务,以及用于访问GB/T17215.662中使用逻辑名称(LN)或短名称(SN)引用定义的COSEM接口对象的方法和属性…

先用先发!小样本故障诊断新思路!Transformer-SVM组合模型多特征分类预测/故障诊断(Matlab)

先用先发&#xff01;小样本故障诊断新思路&#xff01;Transformer-SVM组合模型多特征分类预测/故障诊断&#xff08;Matlab&#xff09; 目录 先用先发&#xff01;小样本故障诊断新思路&#xff01;Transformer-SVM组合模型多特征分类预测/故障诊断&#xff08;Matlab&#…