Home >> Blog >> Docker 教學:基礎、架構、容器
基礎、架構、容器
什麼是 Docker?
Docker是一個用於虛擬化的軟體開發平台,在同一主機上運行多個操作系統。它有助於分離基礎架構和應用程式,以便快速交付軟體。與用於創建 VM(虛擬機)的 Hypervisor 不同,Docker 中的虛擬化是在系統級別執行的,也稱為 Docker 容器。
如下圖所示,Docker 容器運行在主機操作系統之上。這可以幫助您提高效率和安全性。此外,我們可以在同一基礎架構上運行比運行虛擬機更多的容器,因為容器使用的資源更少。
與可以與主機硬體通信的 VM(例如:以太網適配器以創建更多虛擬適配器)不同,Docker 容器在主機操作系統之上的隔離環境中運行。即使您的主機運行 Windows 操作系統,您也可以藉助 Hyper-V 在容器中運行 Linux 映像,Hyper-V 會自動創建小型 VM 來虛擬化系統的基本映像,在本例中為Linux。
為什麼要使用 Docker?
- 是用於虛擬化的電腦軟體,以便在同一主機上運行多個操作系統OS
- 是客戶端-伺服器類型的應用程式,這意味著我們有客戶端中繼到伺服器
- 鏡像是我們容器的“源程式碼”;我們用它們來建造
- Dockerfile 有兩種類型的註冊表 1.) 公共和 2) 私有註冊表
- 容器是 Docker 卷的組織單元。簡單來說,圖像是一個模板,而容器是該模板的副本。您可以擁有同一圖像的多個容器(副本)。
Docker架構
現在在這個 Docker 容器教學中,我們來談談 Docker 架構中的 Docker 主要組件:
Docker引擎
Docker 是客戶端-伺服器類型的應用程式,這意味著我們有客戶端中繼到伺服器。所以 Docker 守護進程稱為:dockerd 是代表伺服器的 Docker 引擎。docker 守護進程和客戶端可以在同一台或遠端主機上運行,它們通過命令行客戶端二進制文件以及與守護進程交互的完整 RESTful API:dockerd 進行通信。
泊塢窗圖像
Docker 鏡像是我們容器的“源程式碼”;我們使用它們來構建容器。他們可以預裝SEO軟體以加快部署速度。它們是可移植的,我們可以使用現有的圖像或構建自己的圖像。
Docker 註冊表
Docker 將我們構建的鏡像存儲在註冊表中。有公共和私人登記處。Docker 公司有一個名為Docker hub的公共註冊表,您還可以在其中私下存儲圖像。Docker hub 有數百萬個鏡像,你現在就可以開始使用了。
Docker集裝箱
容器是組織單元,是 Docker 的基礎概念之一。當我們構建鏡像並開始運行它時;我們在一個容器中運行。使用容器類比是因為我們在容器中運行的軟體的可移植性。我們可以移動它,換句話說,“運送”軟體、修改、管理、創建或刪除它、銷毀它,就像貨船對真正的集裝箱所做的那樣。
簡單來說,圖像是一個模板,而容器是該模板的副本。您可以擁有同一圖像的多個容器(副本)。
下面我們有一個圖像,它完美地代表了不同組件之間的交互以及 Docker 容器技術的工作原理。
我們有幾個 docker 命令 docker pull, docker run.. 我們稍後會詳細討論。
如何在 Linux/Ubuntu 上安裝 Docker
以下是在 Linux/Ubuntu 上逐步安裝 Docker 的過程:
步驟 1 ) 要安裝 Docker,我們需要使用 Docker 團隊的 DEB 包。
為此,需要一些必備的 Ubuntu 軟體包。
使用以下命令安裝 Ubuntu 軟體包
$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common
*符號“\”不是必須的,它用於換行,如果需要,您可以在一行中不使用“\”來編寫命令。
步驟 2)添加帶有指紋的官方 Docker GPG 密鑰。
使用以下 Docker 命令輸入 GPG 密鑰
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key 添加 -
步驟 3)接下來,添加 Docker APT 存儲庫。
使用以下 Docker 命令添加存儲庫
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
系統可能會提示您確認是否要添加存儲庫並將 GPG 密鑰自動添加到您的主機。
lsb_release 命令應該填充主機的 Ubuntu 分發版本。
步驟 4) 添加 GPG 密鑰後,
使用以下 Docker 命令更新 APT 源
$ sudo apt-get 更新
我們現在可以安裝 Docker 包本身。
步驟 5)一旦 APT 源更新,
使用以下 Docker 命令開始在 Ubuntu 上安裝 Docker 包
$ sudo apt-get 安裝 docker-ce
上面給出的命令安裝 Docker 和其他額外的必需包。在 Docker 1.8.0 之前,包名是 lxc-docker,在 Docker 1.8 和 1.13 之間,包名是 docker-engine。
注意:適用於 Windows 的 Docker 需要 Windows 10 專業版或企業版 14393 或 Windows server 2016 RTM 才能運行
如何使用基本的 Docker 命令來使用 Docker
以下是使用基本 Docker 命令使用 Docker 的方法:
安裝 Docker 後我們必須運行的最基本命令是 $ docker info ,正如我們之前所說。
$ sudo Docker工人信息
您應該得到類似或以下的結果
正如我們在上面的 Docker 示例中看到的,我們有關於 docker 容器有多少正在運行、暫停或停止以及我們下載了多少圖像的信息。所以讓我們在這個 Docker 命令教學中獲取我們的第一個圖像。
$ sudo docker pull alpine
使用這個命令,我們告訴 docker 下載圖像 alpine,從公共註冊表中提取它,這是默認設置的最新版本。
*alpine 是基於 Alpine Linux 的最小 Docker 映像,具有完整的包索引,大小僅為 5 MB。
如果我們想將鏡像作為容器運行,我們將在本 Docker 教學指南中使用以下命令。
$ sudo docker run -i -t alpine /bin/bash
如果我們運行命令,我們將被直接發送到 alpine 的終端。-i 標誌使 STDIN 從容器中保持打開狀態,即使您沒有附加到它。這種持久的標準輸入是交互式 shell 所需輸入的一半。-t 標誌是另一半,它指示 Docker 為容器分配一個偽 tty。這為我們提供了新容器中的交互式外殼。我們使用簡單的退出命令退出容器。
現在在這個 Docker 基礎教學中,我們可以嘗試運行一個 Ubuntu 鏡像。
$ sudo docker run -it ubuntu /bin/bash
您可以注意到 docker 在本地檢查圖像,如果不存在,圖像會自動從圖像庫中提取,並且我們再次運行了一個交互式 shell。我們還可以在運行容器時為其命名。
$ sudo docker run --name our_container -it ubuntu /bin/bash
我們再次退出。
我們還可以運行我們之前創建的容器,而無需交互式外殼。
$ sudo docker start 容器名稱
並停止容器寫入 docker stop container_name
$ sudo docker stop 容器名稱
如果我們想查看所有正在運行的容器,我們只需運行
$Docker工人ps
對於所有容器,我們在同一命令的末尾添加“-a”,例如 docker ps -a。
該命令顯示容器的 ID、創建時使用的鏡像、運行狀態、暴露的端口和隨機生成的容器名稱,以便於管理。
當我們運行容器時,我們還想知道它們正在使用多少資源,為此我們可以使用該命令。
$ Docker工人統計
您還可以查看我們在本地下載了哪些圖像以及有關它們的信息。
$ sudo Docker工人圖像
上述 Docker 示例中的命令顯示帶有標籤的 docker 鏡像,該標籤顯示我們的鏡像版本、獨特的鏡像 ID、創建時間和鏡像大小。
什麼是虛擬化?
早些時候,部署服務的過程緩慢而痛苦。首先,開發人員正在編寫程式碼;然後運營團隊將其部署在裸機上,他們必須在其中尋找庫版本、補丁和語言編譯器才能使程式碼正常工作。如果有一些錯誤或錯誤,該過程將重新開始,開發人員將對其進行修復,然後運營團隊再次在那裡進行部署。
Hypervisors 的創建有了改進。管理程式在同一主機上有多個虛擬機或 VM,它們可能正在運行或關閉。VM 大大減少了部署程式碼和修復錯誤的等待時間,但真正改變遊戲規則的是 Docker 容器。
重要的 Docker 命令
以下是重要的 Docker 命令:
概括
- 是一個用於虛擬化的軟體開發平台,在同一主機上運行多個操作系統。它有助於分離基礎架構和應用程式,以便快速交付軟體。
- 架構: 引擎、映像、註冊表、容器。
- 引擎: 是客戶端-伺服器類型的應用程式,這意味著我們有客戶端中繼到伺服器。所以 Docker 守護進程稱為:dockerd 是代表伺服器的 Docker 引擎。
- 鏡像: 鏡像是我們容器的“源程式碼”;我們使用它們來構建容器。他們可以預裝軟體以加快部署速度。它們是可移植的,我們可以使用現有的圖像或構建自己的圖像。
- Registries:將我們構建的鏡像存儲在註冊表中。有公共和私人登記處。Docker 公司有一個名為 Docker hub 的公共註冊表,您還可以在其中私下存儲圖像。Docker hub 有數百萬個鏡像,你現在就可以開始使用了。
- Containers:容器是組織單元,是 Docker 的基本概念之一。當我們構建鏡像並開始運行它時;我們在一個容器中運行。使用容器類比是因為我們在容器中運行的軟體的可移植性。