Docker學習筆記一

2021-09-19 03:59:33 字數 1497 閱讀 6091

今天開始學習docker。首先說些題外話,今天在學習docker時突然想到乙個問題:it技術發展日新月異,到底該如何入門一門新技術呢?我看到網上太多的教程一上來就告訴人怎麼編譯原始碼,怎麼用軟體。現在我感覺這不是正確的學習姿勢。學習一門新技術,先要問三個問題:它是什麼?它能幹什麼(或者說它的應用場景有哪些)?它出現的背景是什麼?

回到正題docker上。需要問三個問題:docker是什麼?docker能幹什麼?docker出現的背景是什麼?前兩個問題我通過閱讀網上的一篇文章:docker是什麼?可以用docker做什麼?得到了答案。按照我的理解:docker就是在作業系統裡和應用層中的乙個箱子,就是你在乙個作業系統裡安裝了docker,這個docker裡還能在裡面為你部署一套執行你的應用所需的環境。這時你要問:那docker到底有什麼用呢?比如你在你的ubuntu作業系統上開發了乙個**程式,而你的**是部署在centos環境下,這時你可以在ubuntu安裝docker,通過docker在ubuntu作業系統上部署一套centos環境(按照docker的概念這叫乙個容器,這個說法很形象,就像把應用軟體所需的環境放在了乙個箱子裡一樣),這樣你的**就能在這個環境下測試甚至部署了。可能你會說:那我在ubuntu作業系統裝乙個centos虛擬機器也能幹這事啊!首先裝虛擬機器要比裝docker麻煩多了,你得先安裝virtualbox或者vmware來架設虛擬機器,其次你得準備你要安裝的虛擬機器作業系統的映象檔案,最後安裝完虛擬機器作業系統你還得幹一系列瑣碎的事:比如設定字型、設定網路埠等等,這樣是不是特別麻煩呢?還有多個虛擬機器之間從硬體層面已經做了物理隔離,導致虛擬機器之間互不可見,也不能共享資源,而docker中的多個容器是可以共享cpu和記憶體的,所以在docker中幾乎不存在資源浪費,資源利用率比傳統的虛擬機器高多了。

那麼在談談docker出現的背景。當初在雲計算開發熱潮中,很多大中小型公司都推出自己的雲計算平台,比如亞馬遜的aws、微軟的azure等等。但是雲計算哪是一般小公司能幹得起,為了和巨頭們競爭,有一家叫dotcloud的公司另闢蹊徑,推出了docker。大家想雲計算服務本質不就是巨頭們為大家提供的遠端虛擬機器嗎?如上文所述docker是比傳統虛擬機器有著巨大優勢的,而且它是開源的。所以docker一經推出,立即受到業界的熱捧!

docker的優點是很多的,但是缺點也是有的。在《docker全攻略》一書中提到了三點:一是docker容器間的宿主資源沒有完全隔離;二是作為docker的golang語言還沒完全成熟;三是docker雖然已經開源,但是其發展還掌控在dotcloud公司手裡。其實我想到還有一點:就是windows和mac平台對docker的原生支援不好,網上的說法是windows已經原生支援docker了,但是mac還不行。為什麼windows和mac平台對docker的原生支援很重要呢?因為世界上大部分的開發者都是在windows和mac平台上的,windows上擁有宇宙第一ide——visualstuio,因此乙個很常見的應用場景是在windows和mac平台上開發,在linux上測試或者部署。比如我現在開發的桌面軟體,在windows上開發,要編譯linux版本和mac版本,就得搞兩個虛擬機器了,如果這事用docker來幹就簡單了,問題是docker對windows的支援程度如何。

Docker學習筆記(一)

我先在生搬硬套的列一下,再之後的學習過程中,希望自己能寫一下一些自己的理解!docker 本來就是為了代替虛擬機器處理程式 而虛擬器對於資源的要求過高。1.隔離應用依賴 2.建立應用映象並進行複製 3.建立容易分發的即啟即用的應用 4.允許例項簡單 快速的擴充套件 5.測試應用並隨後銷毀它們 doc...

docker學習筆記(一)

docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。docker 客戶端 docker deamon docker 容器 docker 映象 registry 通過命令列或者其他工具使用 doc...

Docker學習筆記(一)

其中守護程序負責容器的建立 執行和監控,還負責映象的構建和儲存,容器和映象都在圖的右邊。守護程序通過docker damen命令啟動,一般會交由主機的作業系統負責執行。客戶端通過http與docker守護程序通訊。預設使用unix域套接字實現,但為了支援遠端客戶端也可以使用tcp socket。do...