<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Nsenter on 冇记</title>
    <link>https://paper.nuaa.dpdns.org/keywords/nsenter/</link>
    <description>Recent content in Nsenter on 冇记</description>
    <image>
      <title>冇记</title>
      <url>https://paper.nuaa.dpdns.org/images/cover.png</url>
      <link>https://paper.nuaa.dpdns.org/images/cover.png</link>
    </image>
    <generator>Hugo</generator>
    <language>zh</language>
    <copyright>冇文化 · 冇记</copyright>
    <lastBuildDate>Mon, 06 Apr 2026 06:34:51 +0000</lastBuildDate>
    <atom:link href="https://paper.nuaa.dpdns.org/keywords/nsenter/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>nsenterl与的挂载传播</title>
      <link>https://paper.nuaa.dpdns.org/blog-paper/02-virtualization/2026-04-06-nsenterl%E4%B8%8E%E7%9A%84%E6%8C%82%E8%BD%BD%E4%BC%A0%E6%92%AD/</link>
      <pubDate>Mon, 06 Apr 2026 06:34:51 +0000</pubDate>
      <guid>https://paper.nuaa.dpdns.org/blog-paper/02-virtualization/2026-04-06-nsenterl%E4%B8%8E%E7%9A%84%E6%8C%82%E8%BD%BD%E4%BC%A0%E6%92%AD/</guid>
      <description>&lt;p&gt;&lt;code&gt;nsenter&lt;/code&gt; 和“挂载传播”分别解决了**“如何进入容器环境”&lt;strong&gt;和&lt;/strong&gt;“挂载点树结构如何同步”**这两个核心问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一nsenterlinux-命名空间的任意门&#34;&gt;一、nsenter：Linux 命名空间的“任意门”&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;nsenter&lt;/code&gt; (no-space enter) 是一个功能极其强大的系统级工具。它的作用是：&lt;strong&gt;进入一个或多个指定的 Linux 命名空间（Namespace）并执行命令。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;1-为什么需要它&#34;&gt;1. 为什么需要它？&lt;/h3&gt;
&lt;p&gt;LXC 容器之所以看起来像独立的系统，是因为它利用了内核的 &lt;strong&gt;Namespace&lt;/strong&gt; 技术（包括 PID、网络、挂载、UTS、用户等）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果你想在宿主机上，像是在容器内部一样查看网络接口（&lt;code&gt;ip addr&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;如果你想在容器内部运行一个宿主机才有的工具（比如容器里没装 &lt;code&gt;tcpdump&lt;/code&gt;，但你想抓容器网卡的包）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-基本用法&#34;&gt;2. 基本用法&lt;/h3&gt;
&lt;p&gt;要使用它，你得先知道容器在宿主机上的 &lt;strong&gt;PID&lt;/strong&gt;（进程 ID）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 获取容器 241 的 PID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;lxc-info -n &lt;span class=&#34;m&#34;&gt;241&lt;/span&gt; -p -H&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 进入该 PID 的所有命名空间（挂载、网络、进程、主机名等）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nsenter -t &lt;span class=&#34;nv&#34;&gt;$PID&lt;/span&gt; -m -n -i -p -u /bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-与-pct-exec-的区别&#34;&gt;3. 与 &lt;code&gt;pct exec&lt;/code&gt; 的区别&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;pct exec&lt;/code&gt;&lt;/strong&gt;：是 PVE 封装好的命令，它会处理好权限映射、环境变量等，最稳妥。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;nsenter&lt;/code&gt;&lt;/strong&gt;：是原生的内核操作。它&lt;strong&gt;不经过&lt;/strong&gt; LXC 的管理层，直接把你的当前 Shell “瞬移”进那个环境。它常用于 &lt;code&gt;pct exec&lt;/code&gt; 失效（比如容器 init 进程挂了但命名空间还在）时的“抢救”。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二挂载传播-mount-propagation&#34;&gt;二、挂载传播 (Mount Propagation)&lt;/h2&gt;
&lt;p&gt;挂载传播定义了&lt;strong&gt;当你在宿主机或容器内进行挂载操作时，这个动作是否会“传播”给另一方。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
