docker學習 基礎簡介

2022-02-04 06:01:03 字數 3642 閱讀 6931

docker是基於go語言實現的雲開源專案。

解決了應用在開發環境移植到測試環境不適配的問題,方便做持續整合並有助於整體發布。

虛擬機器它是作業系統裡面執行的另一種作業系統。例在windows系統裡面執行linux系統,應用程式對此毫無感知,因為虛擬機器看上雲跟真實的系統是一模一樣的,而對於底層作業系統來說,虛擬機器就是乙個普通檔案,不需要時直接將其刪除即可,它虛擬

出了作業系統、記憶體、硬體裝置等等。也就是說虛擬機器虛擬了整個作業系統所需要的環境資訊,包括硬體(核心 cpu 記憶體) 和一些軟體資訊,

虛擬機器的缺點:

1.資源占用多  2.冗餘步驟多  3.啟動慢

也就是說我每想使用乙個作業系統執行乙個應用,就必須把整個作業系統虛擬出來,但是這樣又會占用大量的硬體資源

由於前面虛擬機器存在的缺點,linux發展出了另一種虛擬化技術:linux容器(linux containers  縮寫lxc)

linux容器不是模擬乙個完整的作業系統,它只需要構建執行所必須的庫資源就可以,有了容器,就可以將軟體執行所需要的資源打包到乙個隔離的容器中,容器中的應用程序直接執行於宿主機的核心上,容器沒有自己的核心,也就沒有對硬體進行虛擬機器,因此容器變得更輕量。容器用到的硬體資源就會依賴於宿主機的硬體資源。

容器利用自身的隔離性和執行環境的獨立性,依賴作業系統的一些硬體裝置,使得容器可以做到一次構建,到處執行,因此容器要比傳統的虛擬機器更為輕巧方便,它的啟動是秒級的

每個容器之間互相隔離,每個容器有自己的庫資源檔案系統,相互不影響。

更簡單的系統運維

更快捷高效的交付和部署

更便捷的移植性、擴容性

docker是乙個client-server結構的系統,docker守護程序執行在主機上,然後通過socket連線從客戶端接受訪問,守護程序從客戶端接受命令,並管理執行在主機上的容器。

①docker有比虛擬機器更少的抽象層。

由於docker不需要hypervisor實現硬體資源的虛擬化,執行在docker容器上的程式直接使用的都是宿主機上的硬體資源,因此在cpu、記憶體利用率上docker將會在效率上有明顯優勢。

②docker利用宿主機的核心,而不是guest os(虛擬機器作業系統)。

虛擬機器軟體(vmware 和 virtualbox)在建立虛擬機器的時候會通過hypervisor來管理和建立多個不同作業系統的虛擬機器,通過這種方式建立虛擬機器需要實現硬體資源的虛擬化,因為它是乙個完整的作業系統。這個過程是分鐘級的,而docker是利用自身的隔離性和執行環境的獨立性,依賴宿主機硬體資源,從而達到了啟動只需幾秒。

docker 映象

(image)

就是乙個唯讀的模板

.映象可以用來建立多個

docker

容器docker利用容器(container)獨立執行的乙個或一組應用,

容器是用映象建立的執行例項。

它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台,可以把容器看做是乙個簡易版的 linux 環境(包括root使用者許可權、程序空間、使用者空間和網路空間等)和執行在其中的應用程式(redis nginx mysql mycat )

容器的定義和映象幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。

倉庫(repository)是集中存放映象檔案的場所。

倉庫(repository)和倉庫註冊伺服器

(registry)

是有區別的,倉庫註冊伺服器上往往存放著多個倉庫,每個倉庫中又包含了多個映象,每個映象有不同的標籤(tag)

倉庫分為公開倉庫(public)和私有倉庫(

private

)兩種形式,最大的公開倉庫是 docker hub(

、網易雲等

映象是一種輕量級、可執行的獨立軟體包,用來打包軟體執行環境和基於執行環境開發的軟體,它包含執行某個軟體所需的所有內容,包括**、執行時、庫、環境變數和配置檔案。

union檔案系統(

unionfs

)是一種分層、輕量級並且高效能的檔案系統,它支援對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同乙個虛擬檔案系統下

(unite several directories into a single virtual filesystem)

。union

檔案系統是

docker

映象的基礎。映象可以通過分層來進行繼承,基於基礎映象(沒有父映象),可以製作各種具體的應用映象。

特性:一次同時載入多個檔案系統,但從外面看起來,只能看到乙個檔案系統,聯合載入會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄

docker的映象實際上由一層一層的檔案系統組成,這種層級的檔案系統

unionfs

。bootfs(boot file system)

主要包含

bootloader

和kernel, bootloader

主要是引導載入

kernel, linux

剛啟動時會載入

bootfs

檔案系統,在

docker

映象的最底層是

bootfs

。這一層與我們典型的

linux/unix

系統是一樣的,包含

boot

載入器和核心。當

boot

載入完成之後整個核心就都在記憶體中了,此時記憶體的使用權已由

bootfs

轉交給核心,此時系統也會解除安裝

bootfs

。rootfs (root file system) ,在bootfs之上。包含的就是典型

linux

系統中的

/dev, /proc, /bin, /etc

等標準目錄和檔案。

rootfs

就是各種不同的作業系統發行版,比如

ubuntu

,centos

等等。

對於乙個精簡的os,

rootfs

可以很小,只需要包括最基本的命令、工具和程式庫就可以了,因為底層直接用

host

的kernel

,自己只需要提供

rootfs

就行了。由此可見對於不同的

linux

發行版, bootfs

基本是一致的

, rootfs

會有差別

, 因此不同的發行版可以公用

bootfs

。docker

最大的乙個好處就是 - 共享資源

比如:有多個映象都從相同的 base 映象構建而來,那麼宿主機只需在磁碟上儲存乙份

base

映象,同時記憶體中也只需載入乙份 base 映象,就可以為所有容器服務了。而且映象的每一層都可以被共享。

docker映象都是唯讀的

當容器啟動時,乙個新的可寫層被載入到映象的頂部。這一層通常被稱作"容器層","容器層"之下的都叫"映象層"。

Docker學習系列 Docker簡介

docker 是乙個開源的應用容器引擎,基於 go 語言 並遵從apache2.0協議開源。docker 可以讓開發者打包他們的應用以及依賴包到乙個輕量級 可移植的容器中,然後發布到任何流行的 linux 機器上,也可以實現虛擬化。乙個完整的docker 有以下幾個部分組成 1.dockerclie...

Docker學習系列(一)Docker簡介

簡介 docker是乙個在全球範圍領先的軟體容器平台。開發人員可以使用容器來在協作過程中遇到的解決 不同環境配置 的問題。例如,在傳統的開發環境下,開發人員編寫 然後交由測試人員測試,但是因為各自配置的環境不同,這樣所開發和測試的結果就會不同 但是,如果使用docker的話,這個問題就不存在了。do...

docker基礎知識簡介

docker的目標是實現輕量級的作業系統虛擬化。其底層也是基於linux的 lxc 技術實現的,docker只是 在lxc上進行了一層封裝。因為docker是輕量級的虛擬化技術解決方案,所以,在起停操作方面十分快捷,非常方便。先來看看傳統虛擬化技術的原理,比如kvm,xen等,它們都是通過虛擬硬體,...