1、lsns命令查看系統中namespace
[root@localhost hotspot]# lsns
NS TYPE NPROCS PID USER COMMAND
4026531836 pid 324 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531837 user 326 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531838 uts 322 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531839 ipc 322 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
4026531840 mnt 312 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 22
類型 | 說明 | 備註 |
NS | namespace identifier (inode number) | namespace本質體現在文件上 |
TYPE | kind of namespace | namespace類型,目前支持pid、user、utc、net、mount、ipc以及cgroup |
NPROCS | number of processes in the namespace | 當在當前namespace中有多少進程 |
PID | lowest PID in the namespace | 進程id |
USER | username of the PID | 用戶 |
COMMAND | command line of the PID | 進程啓動參數 |
2、nsenter命令進入namespace
3、docker容器net namespace
我們可以通過ip netns創建net namespace,例如:ip netns add net0, 該命令執行完畢後會在/var/run/netns目錄下創建以net0的一個文件,後續操作均是操作這個文件。但是docker創建的net namesapce 無法直接通過ip netns進行管理,注意這裏是無法直接。那麼我們應該怎麼管理呢? docker 創建的net namesapce文件保存在了/var/run/docker/netns中,這個目錄中所有文件都是net namespace,其中default文件指向的命名空間是物理主機net namesapce,換句話說如果我們在啓動容器時指定的網路模式爲--net=host,就是通過default文件。那麼具體如何操作呢?其實很簡單。
我們通過ln -s 創建軟連接文件,然後將/var/run/docker/netns中文件,軟鏈接到/var/run/netns下即可。例如:
[root@localhost ~]# ln -s /var/run/docker/netns/ecce4955191c /var/run/netns/
[root@localhost ~]# ip netns exec ecce4955191c /bin/sh
sh-4.2# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 161 bytes 32161 (31.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sh-4.2#