Docker學習筆記 輕量級虛擬化

2021-10-05 23:33:28 字數 2280 閱讀 7431

學習筆記,工作需要學習一下docker,學習內容有

建房子軟體帶環境安裝

在一片空地上建房子

在乙個作業系統上配環境:依賴,各種庫,程式

搬家了在另一台機子上配環境

房子映象

裝房子的揹包

倉庫

拿出揹包裡的房子再複製乙個房子

容器

直接拎包入住,不會出現"在我的機器上可以跑,在你的機器上不能跑。"解決開發與運維的問題。

除系統核心外,需要的系統環境由下而上打包,做到應用程式跨平台無縫接軌運作。

個人心得:和git思路基本一致,與linux命令列差不多。容器,倉庫,映象,dockerfile。容器和映象是千層餅一樣的東西[一層一層編譯,節約],輕量級虛擬輕就輕在不用kernel,用宿主機的kernel。是個檔案系統,union 檔案系統。乙個centos虛擬機器(虛擬硬體,os,及一些應用)和乙個centos映象:用宿主機的kernel,rootfs(核心基礎上多的一些配置讓他變成了centos,基礎少量)。

理解:ubuntu,centos這些linux的不同發行版本,可以看作(bootfs+rootfs+kernel)。其中只有rootfs不同。

虛擬機器與docker?

解決的問題:開發與運維

docker的本質:環境+應用

和房子的模擬,和貨櫃的模擬(隔離)

docker架構圖:映象(本地),倉庫,容器

docker是怎樣工作的?

docker為什麼比vm快?

docker exec與docker attach的區別?

容器和主機的檔案互動?cp(容器——>主機)&容器資料卷(指定兩個資料夾進行互動)

docker映象是什麼?

docker映象的載入原理?

docker映象為什麼採用分層結構?

docker容器資料卷兩種新增方式?

容器客居於作業系統,只能執行與底層宿主機相同或相似的作業系統(因為你要用他的核心)。比如在ubuntu伺服器上執行microsoft windows是不行的

隨著越來越多的技術引入,容器不再是單純的執行環境,更像是乙個完整的宿主機。與宿主機隔離更加徹底,有毒裡的網路和儲存棧,自己的資源管理能力。

docker映象是由檔案系統疊加而成,最底端是引導檔案系統,即bootfs。第二層是root檔案系統rootfs。docker利用聯合載入技術在rootfs上載入更多的read-only fs。[呼應了映象是唯讀的,容器不過是在映象最頂層載入乙個讀寫檔案系統]。聯合載入將各層檔案系統疊加想在docker中執行的程式就是在讀寫層中執行的

如何理解**寫時複製|copy-on-write?**修改乙個檔案,先找,從唯讀層複製到讀寫層,唯讀版本依然存在,但是被讀寫層中的該檔案副本所隱藏。

以ubuntu為例,並不是乙個完整的os,只是乙個裁剪版本,僅包含最低限度的支援系統執行的元件。tag用於區分

(都放在遠端)使用者倉庫和頂層倉庫:使用者倉庫放的是使用者自己製作的映象,未通過確認,可能有風險,頂層倉庫=docker公司+優質廠商管理,可基於這些映象自己構建,頂層倉庫保證了映象是架構良好的,安全且最新的。還有存在本地的映象,docker commit提交的映象就在本地,push以後到達遠端

docker commit提交的只是建立容器的映象與容器的當前狀態之間有差異的部分,使得更新非常輕量。【輕量,資源共享…】

dockerfile的構建:映象——>(生成)容器-——>(對容器操作)——>(docker commit)新的映象 迴圈。每一條run指令都要這麼一次

對docker守護程序和c/s模式的理解:docker命令,你發出你需要的服務,守護程序完成(在docker伺服器上),返回結果給你。比如docker build等【我的理解,不一定準確】

dockerfile和構建快取:映象層看做快取,除錯錯誤,會從正確的最後乙個位置開始,節約大量時間,如果做了修改,從修改地方的前乙個映象開始構建。【再次提現千層餅資源共享,節約,不冗餘各方面優勢】,有時需要略過快取功能,可以設定

cmd指令:把執行的命令放在陣列結構中,如果不按陣列結構docker會在命令前加上/bin/sh -c。所以建議陣列語法設定。這個地方需要學習shell命令。一條cmd,多條cmd只有最後一條會執行。想在啟動容器時執行多個程序或者多條命令,考慮supervisor這樣的服務管理工具。多條會覆蓋只有最後一條有效,run指令+命令一樣覆蓋。

entrypoint指令也是陣列形式寫,會把run後面的命令自覺加入陣列結構,不覆蓋。

Docker 輕量級虛擬化容器技術

一 docker 安裝 ubuntu 14.04 及以上版本自帶舊版本 docker 包,可通過安裝 apt transport https,並新增 docker 官方源,再安裝最新版 docker。sudo apt get install y ixc docker二 docker 核心 映象容器 ...

虛擬化明星 深挖輕量級容器docker

docker是乙個輕量級容器,屬於作業系統層面的虛擬化技術,封裝了檔案系統 aufs 以及網路互聯,程序隔離等特性。傳統虛擬化架構 docker虛擬化架構 docker庫的架構 docker registry docker repository docker image docker registr...

docker輕量級監控 sysdig

sysdig system 系統 dig 挖掘 sysdig 是乙個開源系統發掘工具,用於系統級別的勘察和排障,可以把它看作一系列linux系統工具的組合,主要包括 strace 追蹤某個程序產生和接收的系統呼叫。tcpdump 分析網路資料,監控原始網路通訊。lsof list opened fi...