Docker學習筆記(一)

2021-09-20 13:30:15 字數 1709 閱讀 4341

其中守護程序負責容器的建立、執行和監控,還負責映象的構建和儲存,容器和映象都在圖的右邊。守護程序通過docker damen命令啟動,一般會交由主機的作業系統負責執行。

客戶端通過http與docker守護程序通訊。預設使用unix域套接字實現,但為了支援遠端客戶端也可以使用tcp socket。

docker寄存伺服器負責儲存和發布映象。預設的寄存伺服器為docker hub,它託管了數以千計的公共映象,以及由其負責把關的「官方映象」。

swarm:docker集群方案。可以將多個docker主機組合起來,使其資源集成為一體。

compose:負責構建和執行多個docker容器所組成的應用程式的工具。它主要用於開發和測試,而不太用與生產環境。

machine:用在本地和遠端資源上安裝和配置docker主機。machine還能配置docker客戶端,使用者能輕鬆在不同環境之間切換。

kitematic:乙個macos和windows上的gui,用於執行和管理docker容器。

docker trusted registry:企業內部方案,用於儲存和管理docker映象,實際上它是個docker hub的本地版本,能夠與企業或組織現有的安全基礎整合,並能夠幫助他們遵守有關資料儲存和安全方面的法規。特點包括指標,基於角色的許可權控制和日誌,他們全部通過乙個管理控制台管理。

cmd 當容器啟動執行指定的指令。如果還定義了entrypoint,該指令將被解釋為entrypoint的引數。cmd指令也會被docker run命令中共映象名稱後面的所有引數覆蓋。加入定義了多個cmd指令,那麼只有最後乙個生效,前面出現過的cmd指令全部無效。

copy 用於構建環境上下文複製檔案至映象。它有兩種形式,copy src dst以及copy [「src」, 「dest」],兩者皆從上下文中的src複製檔案或目錄至容器內的dest。如果路徑中有空格的話,那麼必須使用json陣列格式。萬用字元可以用來指定多個檔案或目錄。

entrypoint 設定乙個於容器啟動時執行的可執行檔案。任何cmd指令或docker run指令中映象名稱之後的引數,將作為引數傳遞個可執行檔案。entrypoint指令通常用於提供「啟動」指令碼,目的是在解析引數之前,對變數和服務進行初始化。

env 設定映象內的環境變數。這些變數可以被隨後的指令引用。

expose 向docker表示該容器將會有乙個程序監聽所指定的埠。提供這個資訊的目的是用於連線容器或執行docker run命令時通過-p引數把埠發布出來,expose指令本身並不會對網路有實質性的改變。

from 設定dockerfile使用的基礎映象,隨後的指令皆執行於這個映象上。基礎映象以「映象:標籤」的格式表示。如果省略標籤,那麼就被視為最新,但最好設定乙個標籤。

maintainer 把映象中的「作者」元資料設定為指定的字串。可以通過docker inspect -f} image這個命令來檢視該資訊,這個指令通常用於設定映象維護者的姓名和****。

obuild 指定當映象被用作另乙個映象的基礎映象時將會被執行的指令。對於處理一些將要新增到子映象的資料,這個指令將會非常有用。

run 在容器中執行指定的指令,並把結果儲存下來。

ueser 設定熱河後續的run,cmd或entryoint指令執行所用到的使用者。

volume 指定為資料卷的檔案或目錄。如果該檔案或目錄已經在映象中存在,那麼當容器啟動時,它就會被複製至整個卷。如果提供多個引數,那麼就會被解釋為多個資料卷

workdir 對任何後續的run,cmd,entrypoint,add或copy指令設定工作目錄。

Docker學習筆記(一)

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

docker學習筆記(一)

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

Docker學習筆記一

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