學習筆記,工作需要學習一下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...