Linux namespace定位

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# 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章