亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker探索namespace詳解

2024-09-01 13:53:11
字體:
來源:轉載
供稿:網友

Docker通過namespace實現了資源隔離,通過cgroups實現了資源限制,通過寫時復制(copy-on-write)實現了高效的文件操作。

1.namespace資源隔離

namepsace的6項隔離:

 

namespace 系統調用參數 隔離內容
UTS CLONE_NEWUTS 主機名與域名
IPC CLONE_NEWIPC 信號量,消息隊列和共享內存
PID CLONE_NEWPID 進程編號
Network CLONE_NEWNET 網絡設備,網絡棧,端口等
Mount CLONE_NEWNS 掛載點(文件系統)
User CLONE_NEWUSER 用戶和用戶組

 

Linux內核實現namespace的主要目的之一是實現輕量級虛擬化(容器)服務。在同一個namespace下的進程可以感知彼此的變化,而對外界進程一無所知。這樣就可以讓容器中的進程產生錯覺,仿佛自己置身于一個獨立的系統環境中,以達到獨立和隔離的目的。

進行namespace API操作的4種方式

  namespace的API包括clone(),setns()以及unshare(),還有/proc下的部分文件。為了確定隔離的到底是哪6項namespace,在使用這些API時,通常需要指定以下6個參數的一個或多個,通過位或操作來實現。

CLONE_NEWUTS,CLONE_NEWIPC,CLONE_NEWPID,CLONE_NEWNET,CLONE_NEWNS,CLONE_NEWUSER.

通過clone()在創建新進程的同時創建namespace

使用clone()來創建一個獨立namespace的進程是最常見的做法,也是Docker使用namespace的最基本的方法,它的調用方式如下。

NAME     clone, __clone2 - create a child process SYNOPSIS     /* Prototype for the glibc wrapper function */     #include <sched.h>     int clone(int (*fn)(void *), void *child_stack,          int flags, void *arg, ...          /* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ ); 

clone()實際上是fork系統調用的一種更通用的實現方式,它可以通過flags來控制使用多少功能。一共有20多種CLONE_*的flag(標志位)參數用來控制clone進程的方方面面(如是否與父進程共享虛擬內存等).

查看/proc/[pid]/ns文件

從3.8版本內核開始,用戶可以在該文件下看到指向不同namespace號的文件:

 ls -l /proc/2597/nstotal 0lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 cgroup -> cgroup:[4026531835]lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 ipc -> ipc:[4026531839]lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 mnt -> mnt:[4026531840]lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 net -> net:[4026531957]lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 pid -> pid:[4026531836]lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 user -> user:[4026531837]lrwxrwxrwx 1 zhangxa zhangxa 0 Mar 2 06:42 uts -> uts:[4026531838]

如果2個進程namespace號相同,說明它們在同一個namespace下。

/proc/[pid]/ns里設置這些符號鏈接的另一個作用是,一旦上述鏈接文件被打開,那么就算該namespace下的所有進程都已經結束,這個namespace也會一直存在,后續進程也可以再加進來。在Docker中,通過文件描述符定位和加入一個存在的namespace是最基本的方式。

另外,把/proc/[pid]/ns目錄文件使用--bind方式掛載起來可以直到同樣的作用:

# mount --bind /proc/2454/ns/uts uts

通過setns()加入一個已經存在的namespace

上面提到,在進程都結束的情況下,也可以通過掛載的形式把namespace保留下來,保留namespace的目的是為以后有進程加入做準備。在Docker中,使用docker exec命令在已經運行著的容器中執行一個新命令,就需要用到該方法。通過setns()系統調用,進程從原先的namespace加入某個已經存在的namespace,使用方法如下。通常為了不影響進程的調用者,也為了使新加入的pid namespace生效,會在setns()函數執行后使用clone創建子進程繼續執行命令,讓原先的進程結束。

NAME     setns - reassociate thread with a namespace SYNOPSIS     #define _GNU_SOURCE       /* See feature_test_macros(7) */     #include <sched.h>     int setns(int fd, int nstype); 
fd = open(argv[1],O_RDONLY); setns(fd,0); execvp(argv[2],&argv[2]); 

假設編譯后的程序為"setns-test"
# ./setns-test ~/uts /bin/bash

至此,就可以在新加入的namespace中執行shell命令了。

通過unshare()在原先進程上進行namespace隔離

它與clone()很像,不同的是,unshare()運行在原先的進程上,不需要啟動一個新進程。

NAME     unshare - disassociate parts of the process execution context SYNOPSIS     #include <sched.h>     int unshare(int flags); 

調用unshare()的主要作用就是不啟動一個新進程就可以起到隔離的效果,相當跳出原先的namespace進行操作。這樣,就可以在原進程進行一些需要隔離的操作。Linux自帶的unshare命令,就是通過unshare()系統調用實現的。Docker目前并沒有使用這個系統調用。

總結

以上就是本文關于Docker探索namespace詳解的全部內容,希望對大家有所幫助,有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕久久| 亚洲国产精彩中文乱码av在线播放| 91精品久久久久久久久久久| 黄网动漫久久久| 欧美一级高清免费| 91亚洲精华国产精华| 日韩中文字幕免费| 日韩黄色在线免费观看| 国产成人免费av电影| 一区二区三欧美| 欧美自拍视频在线| 亚洲电影天堂av| 国产在线视频91| 欧美亚洲成人网| 成人免费黄色网| 成人有码在线播放| 丝袜情趣国产精品| 欧美极品在线视频| 国产午夜精品一区理论片飘花| 欧美国产亚洲精品久久久8v| 国产成人黄色av| 97精品一区二区三区| 亚洲四色影视在线观看| 亚洲精品一区中文| 国产精品福利久久久| 久久影视电视剧免费网站清宫辞电视| 成人精品一区二区三区电影免费| 97国产一区二区精品久久呦| 午夜精品一区二区三区在线| 国产午夜精品一区理论片飘花| 欧美激情在线一区| 国产精自产拍久久久久久| 欧美在线视频免费观看| 日韩欧美国产一区二区| 亚洲九九九在线观看| 久久91亚洲精品中文字幕奶水| 最近2019好看的中文字幕免费| 国产一区二区精品丝袜| 激情成人中文字幕| 国产性猛交xxxx免费看久久| 国产成人久久久精品一区| 中文字幕日韩av电影| 亚洲最大av网站| 一区二区中文字幕| 57pao成人永久免费视频| 福利二区91精品bt7086| 欧美富婆性猛交| 欧美成年人视频网站| 欧美大尺度在线观看| 欧美精品久久久久| 国产精品99导航| 国产精品十八以下禁看| 日韩三级成人av网| 97超级碰碰碰久久久| 国产欧美久久久久久| 国产综合久久久久| 国产欧美日韩中文字幕| 久久久999精品免费| 久久久久久久成人| 欧美一级片一区| 欧美电影免费在线观看| 最近2019好看的中文字幕免费| 国产成人精品日本亚洲专区61| 日韩精品中文字幕在线播放| 黄色精品一区二区| 国产成人精品999| 国产激情综合五月久久| 亚洲成人久久久| 欧美亚洲成人免费| 日韩视频免费中文字幕| 国产成人亚洲综合91精品| 国产成人久久久精品一区| 日韩av一区二区在线观看| 亚洲三级黄色在线观看| 久久久久久久久久久人体| 欧美激情综合亚洲一二区| 日韩精品小视频| 亚洲国产欧美一区二区三区久久| 国产精品美女午夜av| 亚洲精品福利在线观看| 亚洲精品欧美日韩| 国产亚洲一区二区精品| 亚洲欧美在线第一页| 欧日韩不卡在线视频| 日韩精品在线电影| 激情久久av一区av二区av三区| 欧美电影《睫毛膏》| 久久精品亚洲精品| 操人视频在线观看欧美| 欧美俄罗斯乱妇| 亚洲一级免费视频| 91精品国产91久久久久| 欧美大片在线看| 亚洲国产日韩欧美在线动漫| 欧美成人亚洲成人日韩成人| 久久久成人av| 欧美成人免费在线视频| 2020欧美日韩在线视频| 久久中国妇女中文字幕| 欧美一性一乱一交一视频| 国产精品久久久久久久久久99| 成人国产精品日本在线| 国产91精品青草社区| 91九色国产视频| 亚洲欧美中文日韩在线| 91高清免费在线观看| 国产日韩换脸av一区在线观看| 欧美怡红院视频一区二区三区| 国产一区二区三区在线观看视频| 久久久999精品| 国产小视频国产精品| 亚洲欧美综合另类中字| 亚洲精品福利资源站| 欧美激情视频在线免费观看 欧美视频免费一| 美女av一区二区三区| 成人黄色网免费| 国产一区在线播放| 91在线视频九色| 国产精品吹潮在线观看| 日韩精品免费看| 成人深夜直播免费观看| 国产精品日本精品| 国内精品久久久久影院 日本资源| 韩国三级日本三级少妇99| 91精品国产91久久久| 97超碰色婷婷| 91精品国产乱码久久久久久久久| 亚洲国产99精品国自产| 亚洲影影院av| 亚洲欧美日韩视频一区| 日韩在线视频网| www日韩欧美| 91九色精品视频| 欧美一级成年大片在线观看| 日韩欧美在线看| 国产激情视频一区| 欧美日韩成人网| 欧美国产视频一区二区| 亚洲欧美日韩精品| 国产精品91在线观看| 欧美人在线观看| 国内精品视频一区| 国产精品久久久久久久久借妻| 日本一区二三区好的精华液| 奇米四色中文综合久久| 亚洲欧美综合区自拍另类| 日韩精品视频在线观看网址| 亚洲国产天堂久久综合| 欧美俄罗斯性视频| 欧美一级片免费在线| 国产精品一区二区女厕厕| 国产日韩精品一区二区| 久久久久久久久久国产精品| 久99久在线视频| 久久精品成人一区二区三区| 草民午夜欧美限制a级福利片| 日本免费一区二区三区视频观看| 人人澡人人澡人人看欧美| 精品成人在线视频| 亚洲视频第一页| 日韩电视剧免费观看网站| 国产精品久久一区主播| 日韩免费精品视频| 性欧美xxxx视频在线观看|