Golang實(shí)現(xiàn)UTS隔離

隔離機(jī)制是實(shí)現(xiàn)Docker容器的重要技術(shù)襟锐,其中UTS Namespace隔離的是主機(jī)與域名迹蛤,
Linux內(nèi)核中的調(diào)用參數(shù)為CLONE_NEWUTS迈喉。我們都知道Docker是用Golang實(shí)現(xiàn)了
那么自然我們可以用Golang來實(shí)現(xiàn)UTS Namespace隔離
主機(jī)環(huán)境如下

?  ~ uname -a
Linux ubuntu 4.4.0-131-generic #157-Ubuntu SMP Thu Jul 12 15:51:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

?  ~ go version
go version go1.6.2 linux/amd64

Golang源碼

package main

import (
    "os/exec"
    "syscall"
    "os"
    "log"
)

func main(){
    cmd := exec.Command("sh")
    cmd.SysProcAttr = &syscall.SysProcAttr{
        Cloneflags:syscall.CLONE_NEWUTS,
    }
    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    if err := cmd.Run();err !=nil{
        log.Fatal(err)
    }
}

編譯運(yùn)行產(chǎn)生進(jìn)入到fork出來新的進(jìn)程里面的shell交互環(huán)境
查看當(dāng)前進(jìn)程的PID及系統(tǒng)中進(jìn)程之間的關(guān)系

# echo $$
1805

# pstree -pl
systemd(1)-+-accounts-daemon(868)-+-{gdbus}(889)
           |                      `-{gmain}(881)
           |-acpid(865)
           |-atd(836)
           |-cron(842)
           |-dbus-daemon(848)
           |-dhclient(962)
           |-iscsid(1061)
           |-iscsid(1062)
           |-login(1138)---zsh(1228)
           |-lvmetad(422)
           |-lxcfs(845)-+-{lxcfs}(856)
           |            `-{lxcfs}(857)
           |-mdadm(897)
           |-nginx(1082)---nginx(1084)
           |-polkitd(907)-+-{gdbus}(912)
           |              `-{gmain}(910)
           |-rsyslogd(831)-+-{in:imklog}(861)
           |               |-{in:imuxsock}(860)
           |               `-{rs:main Q:Reg}(862)
           |-snapd(873)-+-{snapd}(913)
           |            |-{snapd}(914)
           |            |-{snapd}(915)
           |            |-{snapd}(921)
           |            |-{snapd}(930)
           |            `-{snapd}(931)
           |-sshd(1077)---sshd(1260)---sshd(1291)---zsh(1292)---sudo(1790)---go(1791)-+-ns(1802)-+-sh(1805)---pstree(1806)
           |                                                                          |          |-{ns}(1803)
           |                                                                          |          `-{ns}(1804)
           |                                                                          |-{go}(1792)
           |                                                                          |-{go}(1793)
           |                                                                          |-{go}(1794)
           |                                                                          `-{go}(1798)
           |-systemd(1219)---(sd-pam)(1225)
           |-systemd-journal(361)
           |-systemd-logind(826)
           |-systemd-timesyn(679)---{sd-resolve) S 1 (689)
           `-systemd-udevd(436)

fork進(jìn)程的shell環(huán)境查看
(/proc/$PID/ns/下每個(gè)文件對(duì)應(yīng)一個(gè)namespace, 它是一個(gè)符號(hào)鏈接, 會(huì)指向一個(gè)僅kernel可見的被稱為nsfs(namespace filesystem)的文件系統(tǒng)中的一個(gè)inode)

# readlink /proc/1805/ns/uts
uts:[4026532192]
# readlink /proc/1802/ns/uts
uts:[4026531838]

在主機(jī)上查看

?  ~ sudo readlink /proc/1802/ns/uts
uts:[4026531838]
?  ~ sudo readlink /proc/1805/ns/uts
uts:[4026532192]

在fork進(jìn)程shell環(huán)境中查看并修改hostname

# hostname
ubuntu
# hostname -b bird
# hostname
bird

在主機(jī)上

?  ~ hostname
ubuntu

可以看到觅捆,fork進(jìn)程的hostname產(chǎn)生了變更叮雳,主機(jī)不受影響想暗,同樣,主機(jī)hostname也不會(huì)對(duì)fork進(jìn)程產(chǎn)生影響帘不,由此fork進(jìn)程的hostname
與主機(jī)父進(jìn)程的hostname成功實(shí)現(xiàn)了隔離说莫。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市厌均,隨后出現(xiàn)的幾起案子唬滑,更是在濱河造成了極大的恐慌告唆,老刑警劉巖棺弊,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異擒悬,居然都是意外死亡模她,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門懂牧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侈净,“玉大人,你說我怎么就攤上這事僧凤⌒笳欤” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵躯保,是天一觀的道長(zhǎng)旋膳。 經(jīng)常有香客問我,道長(zhǎng)途事,這世上最難降的妖魔是什么验懊? 我笑而不...
    開封第一講書人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任擅羞,我火速辦了婚禮,結(jié)果婚禮上义图,老公的妹妹穿的比我還像新娘减俏。我一直安慰自己,他們只是感情好碱工,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開白布娃承。 她就那樣靜靜地躺著,像睡著了一般怕篷。 火紅的嫁衣襯著肌膚如雪草慧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評(píng)論 1 290
  • 那天匙头,我揣著相機(jī)與錄音漫谷,去河邊找鬼。 笑死蹂析,一個(gè)胖子當(dāng)著我的面吹牛舔示,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播电抚,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼惕稻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蝙叛?” 一聲冷哼從身側(cè)響起俺祠,我...
    開封第一講書人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎借帘,沒想到半個(gè)月后蜘渣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肺然,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蔫缸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片际起。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拾碌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出街望,到底是詐尸還是另有隱情校翔,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布灾前,位于F島的核電站防症,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜告希,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一扑浸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧燕偶,春花似錦喝噪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伯诬,卻和暖如春晚唇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盗似。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來泰國打工哩陕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赫舒。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓悍及,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親接癌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子心赶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 寫這個(gè)系列文章主要是對(duì)之前做項(xiàng)目用到的docker相關(guān)技術(shù)做一些總結(jié),包括docker基礎(chǔ)技術(shù)Linux命名空間缺猛,...
    __七把刀__閱讀 5,788評(píng)論 0 16
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一缨叫、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,481評(píng)論 0 120
  • 一、Docker 簡(jiǎn)介 Docker 兩個(gè)主要部件:Docker: 開源的容器虛擬化平臺(tái)Docker Hub: 用...
    R_X閱讀 4,382評(píng)論 0 27
  • Docker容器技術(shù)已經(jīng)發(fā)展了好些年荔燎,在很多項(xiàng)目都有應(yīng)用耻姥,線上運(yùn)行也很穩(wěn)定。整理了部分Docker的學(xué)習(xí)筆記以及新...
    __七把刀__閱讀 11,435評(píng)論 0 59
  • 一個(gè)人真正的資本湖雹,不是美貌咏闪,也不是金錢,而是人品摔吏。 人品是生活的通行證,在冷峻又善變的時(shí)代纵装,人品是彼此心靈最后的依...
    優(yōu)祺和平閱讀 182評(píng)論 0 1