docker學習一(基礎操作)

docker簡介

Docker 是使用 Google 推出的 Go語言 進行開發(fā)的,基于 Linux 內核的 cgroup辅鲸、namespace和 AUFS類的 Union FS 等技術匙瘪,對進程進行了封裝隔離乌庶,屬于操作系統(tǒng)層面的虛擬化技術

  • AUFS(chroot) – 用來建立不同的操作系統(tǒng)和隔離運行時的硬盤空間
  • Namespace – 用一系列namespace來隔離Container的執(zhí)行空間
    • pid namespace: 用于進程的隔離(PID: Process ID)
    • net namespace: 用于管理網絡接口x(NET: Networking)
    • ipc namespace: 用于管理進程間通訊(IPC: Inter Process Communication)
    • mnt namespace: 用于管理Mount點(MNT: Mount)
    • uts namespace: 用于隔離內核和版本信息(UTS: Unix Timesharing System)
  • Cgroup – 分配不同的硬件資源
  • SELinux – 用來保護linux的網絡安全
  • Netlink – 用來讓不同的Container之間的進程保持通信
  • Netfilter – 建立Container為基礎的網絡防火墻過濾
  • Linux Bridge – 讓不同Container或不同主機上的Container能通

傳統(tǒng)虛擬化技術

我們在創(chuàng)建的虛擬機的時候怔毛,會先選擇一個系統(tǒng)源和一套虛擬的硬件果元,然后這些軟件就會自助地幫我們創(chuàng)建該系統(tǒng)促王。傳統(tǒng)虛擬化技術是先虛擬出了一套硬件系統(tǒng),然后在此硬件系統(tǒng)上而晒,運行了一個完整的操作系統(tǒng)蝇狼,然后就可以使用各類軟件、進程了倡怎。其實和我們的真實的電腦上操作的流程是差不多的


image.png

docker

Docker 則不需要虛擬這樣一套硬件系統(tǒng)迅耘,也不需要一個完整的操作系統(tǒng)。它將容器中的應用程序直接運行與宿主機的內核监署,容器沒有自己的內核


image.png

docker的組成

鏡像

我們都知道颤专,操作系統(tǒng)分為 內核和用戶空間,在 Linux 中焦匈,內核在啟動后血公,會通過 Root 文件系統(tǒng) 給操作系統(tǒng)提供了用戶空間的支持。而在 Docker 中缓熟,它的內核直接借助了宿主機的內核,為了讓其內核和用戶空間相互通訊作用摔笤,就必須要一個 Root 文件系統(tǒng) 來完成這個功能够滑,而鏡像就是相當于這個 Root 文件系統(tǒng)

鏡像組成

鏡像是一個特殊的文件系統(tǒng)。除了提供容器運行時所需的程序吕世、庫彰触、資料和配置等文件外,還包括了一些為運行時準備的一些配置參數(shù)(如匿名卷命辖、環(huán)境變量况毅、用戶等)分蓖。

值得注意的是:鏡像不包含任何動態(tài)數(shù)據,鏡像里的內容在構建之后也不會改變尔许∶春祝可以把鏡像和面向對象編程中的類的概念進行類比,類一旦定義寫好之后味廊,在使用期間其內容不會發(fā)生變化蒸甜,鏡像也是。

分層存儲

鏡像是一個虛擬的概念余佛,是由一組文件系統(tǒng)組成的(也可以說是由多層文件系統(tǒng)組成)柠新。因為鏡像包含操作系統(tǒng)的完整的 Root 文件系統(tǒng),所以Dcoker 在設計鏡像的時候辉巡,為了減小其體積恨憎,充分利用了 Union FS 技術,將其設計為分層存儲的架構郊楣。

鏡像在構建時框咙,會一層一層地構建,后一層是在前一層的基礎上構建而成的痢甘。每一層在構建完后就不會再發(fā)生改變喇嘱,任何一層都只能在自己這一層上發(fā)生改變,也就說后一層對前一層的操作不會使前一層真的發(fā)生變化塞栅。

舉個例子:后一層進行了刪除前一層的文件的操作者铜,但是事實上,前一層的文件并沒有被真的刪除了放椰,該文件只是在后一層上被標記為已刪除作烟。在容器運行的時候,雖然不會看到這個文件砾医,但是事實上該文件會一直跟隨鏡像拿撩。

因此,在構建鏡像的時候如蚜,我們要非常小心压恒,每一層盡可能的只包含該層所需的東西(資源和操作等),任何額外的東西都要在該層構建結束之前清理掉错邦。

分層存儲的優(yōu)勢

雖然鏡像的分層存儲架構看起來很麻煩探赫,但是事實上分層存儲架構的好處是非常巨大的,它不僅減小了鏡像的體積撬呢,還使得鏡像的復用伦吠、定制變得更為容易。

我們可以使用之前構建好的鏡像作為基礎層,然后添加一個新層毛仪,以定制自所需的內容搁嗓,構建出新的鏡像

容器

上面我們在容器技術那里說到 應用程序/進程就是貨物(散件),容器就是集裝箱箱靴。事實上腺逛,當我們運行容器的時候,我們運行的是容器里的進程刨晴。

需要注意的是:容器進程與直接在宿主執(zhí)行的進程不同屉来,容器運行于屬于自己的獨立的命名空間,所以容器可以擁有自己的 Root 文件系統(tǒng)狈癞、網絡配置茄靠、進程空間和用戶ID空間。

容器內的進程運行于一個隔離的環(huán)境里蝶桶,使用起來就像是在一個獨立于宿主的操作系統(tǒng)一樣

容器存儲

容器和鏡像一樣都是使用分層存儲的慨绳,但是又稍有不同,在容器運行時真竖,它是以鏡像為基礎層脐雪,然后在此基礎上在創(chuàng)建一個屬于該容器的存儲層。

我們一般稱 這個為容器運行時讀寫而準備的存儲層為容器存儲層恢共。

容器存儲層的生命周期和容器一樣战秋,它隨著容器的創(chuàng)建而創(chuàng)建,隨著容器的消亡而消亡讨韭。任何保存在容器存儲層的信息都會容器的消亡而丟失脂信。所以我們不應該把數(shù)據寫入容器存儲層,所有的文件寫入操作透硝,都應該使用 數(shù)據卷(Volume)或者綁定宿主目錄狰闪。

數(shù)據卷與容器存儲層不同,它的生命周期獨立于容器

Docker Registry 與 倉庫

公開Registry

Docker Registry 公開服務是開放給用戶使用濒生、允許用戶管理鏡像的 Registry 服務埋泵。一般這類公開服務允許用戶免費上傳、下載公開的鏡像罪治,并可能提供收費服務 供用戶管理私有鏡像

私有Registry

除了使用公開服務外丽声,用戶還可以在本地搭建私有 Docker Registry。Docker 官方 提供了 Docker Registry 鏡像规阀,可以直接使用做為私有 Registry 服務恒序。
除了官方的 Docker Registry 外,還有第三方軟件實現(xiàn)了 Docker Registry API谁撼,甚 至提供了用戶界面以及一些高級功能。比如,VMWare Harbor 和 Sonatype Nexus厉碟。

docker基礎操作

  1. 獲取鏡像
    docker pull <倉庫名>:<標簽>
    2.列出鏡像
    docker images
    3.運行鏡像
    docker run [options] repository:tag
  • -d:后臺運行容器并返回容器id
  • -i:以交互模式運行
  • -t:為容器分配一個偽終端
  • --name:為容器指定一個名字
  • -e:設置環(huán)境變量
  • --env-file:從指定文件讀取環(huán)境變量
  • --net:指定容器網絡連接類型( bridge/host/none/container)
  • -p:端口映射(主機:容器)
  1. 進入容器
    docker exec [options] <container> <cmd>
  • -it 以終端交互方式進入容器
  • -d 后臺運行命令喊巍,立即返回執(zhí)行結果
  1. 停止/啟動容器
    docker stop
    docker start
    6.查看容器
    docker ps
    7.導入和導出
    docker export <containerId> > path/name.tar 將容器導出成一個tar( 是一個容器的快照)
    docker import <path/url> name 將一個容器快照在倒回為鏡像
    8.刪除鏡像
    docker rmi
    9.刪除容器
    docker rm
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市箍鼓,隨后出現(xiàn)的幾起案子崭参,更是在濱河造成了極大的恐慌,老刑警劉巖款咖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件何暮,死亡現(xiàn)場離奇詭異,居然都是意外死亡铐殃,警方通過查閱死者的電腦和手機海洼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來富腊,“玉大人坏逢,你說我怎么就攤上這事∽副唬” “怎么了是整?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長民假。 經常有香客問我浮入,道長,這世上最難降的妖魔是什么羊异? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任事秀,我火速辦了婚禮,結果婚禮上球化,老公的妹妹穿的比我還像新娘秽晚。我一直安慰自己,他們只是感情好筒愚,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布赴蝇。 她就那樣靜靜地躺著,像睡著了一般巢掺。 火紅的嫁衣襯著肌膚如雪句伶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天陆淀,我揣著相機與錄音考余,去河邊找鬼。 笑死轧苫,一個胖子當著我的面吹牛楚堤,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼身冬,長吁一口氣:“原來是場噩夢啊……” “哼衅胀!你這毒婦竟也來了?” 一聲冷哼從身側響起酥筝,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤滚躯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘿歌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸掏,經...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年宙帝,在試婚紗的時候發(fā)現(xiàn)自己被綠了丧凤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡茄唐,死狀恐怖息裸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情沪编,我是刑警寧澤呼盆,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站蚁廓,受9級特大地震影響访圃,放射性物質發(fā)生泄漏。R本人自食惡果不足惜相嵌,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一腿时、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饭宾,春花似錦批糟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弹惦,卻和暖如春否淤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棠隐。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工石抡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人助泽。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓啰扛,卻偏偏與公主長得像嚎京,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子侠讯,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容