
- Docker 教程
- Docker - 首頁
- Docker - 概述
- Docker - 在 Linux 上安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 倉庫
- Docker - Compose
- Docker - 使用容器
- Docker - 架構
- Docker - 層
- Docker - 容器 & 宿主機
- Docker - 配置
- Docker - 容器 & Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 管理埠
- Docker - Web 伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全
- Docker - 工具箱
- Docker - 雲
- Docker - 構建雲
- Docker - 日誌
- Docker - 持續整合
- Docker - Kubernetes 架構
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 設定服務
- Docker - 設定 Node.js
- Docker - 設定 MongoDB
- Docker - 設定 NGINX
- Docker - 設定 ASP.Net
- Docker - 設定 MySQL
- Docker - 設定 Go
- Docker - 設定 Rust
- Docker - 設定 Apache
- Docker - 設定 MariaDB
- Docker - 設定 Jupyter
- Docker - 設定 Portainer
- Docker - 設定 Rstudio
- Docker - 設定 Plex
- Docker 設定 - Flame
- Docker 設定 - PostgreSql
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - 設定 Python
- Docker - 設定 Java
- Docker - 設定 Redis
- Docker - 設定 Alpine
- Docker - 設定 BusyBox
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker - 快速指南
Docker - 概述
Docker 是一種容器管理服務。Docker 的關鍵詞是 **開發、交付** 和 **執行** 在任何地方。Docker 的核心思想是讓開發者能夠輕鬆開發應用程式,並將它們打包到容器中,然後可以在任何地方部署。
Docker 的首次釋出是在 2013 年 3 月,從那時起,它就成為了現代世界開發的熱門詞彙,尤其是在基於敏捷的專案中。

Docker 的特性
Docker 透過提供更小的作業系統佔用空間(透過容器)來降低開發規模。
透過容器,不同部門的團隊(例如開發、QA 和運維)可以更輕鬆地在應用程式之間無縫協作。
您可以在任何地方部署 Docker 容器,包括任何物理機和虛擬機器,甚至雲環境。
由於 Docker 容器非常輕量級,因此非常易於擴充套件。
Docker 的元件
Docker 包含以下元件
Docker for Mac - 它允許在 Mac OS 上執行 Docker 容器。
Docker for Linux - 它允許在 Linux OS 上執行 Docker 容器。
Docker for Windows - 它允許在 Windows OS 上執行 Docker 容器。
Docker Engine - 用於構建 Docker 映象和建立 Docker 容器。
Docker Hub - 這是用於託管各種 Docker 映象的登錄檔。
Docker Compose - 用於使用多個 Docker 容器定義應用程式。
我們將在後續章節中詳細討論所有這些元件。
Docker 的官方網站是 https://www.docker.com/ 該網站包含有關 Docker 軟體的所有資訊和文件。它還提供了各種作業系統的下載連結。
在 Linux 上安裝 Docker
要開始安裝 Docker,我們將使用一個 Ubuntu 例項。如果您還沒有,可以使用 Oracle Virtual Box 設定一個虛擬 Linux 例項。
以下螢幕截圖顯示了一個簡單的 Ubuntu 伺服器,它已安裝在 Oracle Virtual Box 上。系統上定義了一個名為 **demo** 的 OS 使用者,該使用者擁有對伺服器的完全 root 訪問許可權。

要安裝 Docker,我們需要按照以下步驟操作。
步驟 1 - 在安裝 Docker 之前,您首先需要確保正在執行正確的 Linux 核心版本。Docker 僅設計為在 Linux 核心版本 3.8 及更高版本上執行。我們可以透過執行以下命令來執行此操作。
uname
此方法返回有關 Linux 系統的系統資訊。
語法
uname -a
選項
a - 用於確保返回系統資訊。
返回值
此方法在 Linux 系統上返回以下資訊 -
- 核心名稱
- 節點名稱
- 核心版本
- 核心版本號
- 機器
- 處理器
- 硬體平臺
- 作業系統
示例
uname –a
輸出
當我們執行上述命令時,我們將獲得以下結果 -

從輸出中,我們可以看到 Linux 核心版本為 4.2.0-27,高於版本 3.8,因此我們可以繼續。
步驟 2 - 您需要使用以下命令更新作業系統以獲取最新的軟體包 -
apt-get
此方法將從 Internet 上安裝軟體包到 Linux 系統。
語法
sudo apt-get update
選項
sudo - sudo 命令用於確保命令以 root 許可權執行。
update - update 選項用於確保 Linux 系統上的所有軟體包都已更新。
返回值
無
示例
sudo apt-get update
輸出
當我們執行上述命令時,我們將獲得以下結果 -

此命令將連線到 Internet 並下載 Ubuntu 的最新系統軟體包。
步驟 3 - 下一步是安裝以後與 Docker 站點一起使用以下載必要的 Docker 軟體包所需的必要證書。可以使用以下命令完成。
sudo apt-get install apt-transport-https ca-certificates

步驟 4 - 下一步是新增新的 GPG 金鑰。此金鑰用於確保在下載 Docker 的必要軟體包時所有資料都已加密。
以下命令將從 **金鑰伺服器** hkp://ha.pool.sks-keyservers.net:80 下載 ID 為 58118E89F3A912897C070ADBF76221572C52609D 的金鑰,並將其新增到 **adv** 金鑰環。請注意,此特定金鑰是下載必要的 Docker 軟體包所必需的。

步驟 5 - 接下來,根據您使用的 Ubuntu 版本,您需要將相關站點新增到 **docker.list**(用於 **apt 軟體包管理器**),以便它能夠從 Docker 站點檢測 Docker 軟體包並相應地下載它們。
Precise 12.04 (LTS) ─ deb https://apt.dockerproject.org/repoubuntu-precise main
Trusty 14.04 (LTS) ─ deb https://apt.dockerproject.org/repo/ ubuntu-trusty main
Wily 15.10 ─ deb https://apt.dockerproject.org/repo ubuntu-wily main
Xenial 16.04 (LTS) - https://apt.dockerproject.org/repo ubuntu-xenial main
由於我們的作業系統是 Ubuntu 14.04,因此我們將使用儲存庫名稱“deb https://apt.dockerproject.org/repoubuntu-trusty main”。
然後,我們需要將此儲存庫新增到上面提到的 **docker.list** 中。
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main” | sudo tee /etc/apt/sources.list.d/docker.list

步驟 6 - 接下來,我們發出 **apt-get update 命令** 來更新 Ubuntu 系統上的軟體包。

步驟 7 - 如果您想驗證軟體包管理器是否指向正確的儲存庫,可以透過發出 **apt-cache 命令** 來執行此操作。
apt-cache policy docker-engine
在輸出中,您將獲得指向 https://apt.dockerproject.org/repo/ 的連結

步驟 8 - 發出 **apt-get update 命令** 以確保本地系統上的所有軟體包都已更新。

步驟 9 - 對於 Ubuntu Trusty、Wily 和 Xenial,我們必須安裝 linux-image-extra-* 核心軟體包,這允許使用 **aufs 儲存驅動程式**。此驅動程式由較新版本的 Docker 使用。
可以使用以下命令完成。
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

步驟 10 - 最後一步是安裝 Docker,我們可以使用以下命令來完成 -
sudo apt-get install –y docker-engine
這裡,**apt-get** 使用 install 選項從 Docker 網站下載 Docker-engine 映象並安裝 Docker。
Docker-engine 是 Docker 公司為基於 Ubuntu 的系統提供的官方軟體包。

在下一節中,我們將瞭解如何檢查已安裝的 Docker 版本。
Docker 版本
要檢視正在執行的 Docker 版本,您可以發出以下命令 -
語法
docker version
選項
version - 用於確保 Docker 命令返回已安裝的 Docker 版本。
返回值
輸出將提供有關係統上安裝的 Docker 版本的各種詳細資訊。
示例
sudo docker version
輸出
當我們執行上述程式時,我們將獲得以下結果 -

Docker 資訊
要檢視有關係統上執行的 Docker 的更多資訊,您可以發出以下命令 -
語法
docker info
選項
info - 用於確保 Docker 命令返回有關已安裝的 Docker 服務的詳細資訊。
返回值
輸出將提供有關係統上安裝的 Docker 的各種詳細資訊,例如 -
- 容器數量
- 映象數量
- Docker 使用的儲存驅動程式
- Docker 使用的根目錄
- Docker 使用的執行驅動程式
示例
sudo docker info
輸出
當我們執行上述命令時,我們將獲得以下結果 -

Docker for Windows
Docker 對 Windows 具有開箱即用的支援,但您需要具有以下配置才能安裝 Docker for Windows。
系統要求
Windows 作業系統 | Windows 10 64 位 |
記憶體 | 2 GB RAM(推薦) |
您可以從以下位置下載 Docker for Windows - https://docs.container.club.tw/docker-for-windows/

Docker 工具箱
Docker 工具箱專為舊版 Windows(如 Windows 8.1 和 Windows 7)設計。您需要具有以下配置才能安裝 Docker for Windows。
系統要求
Windows 作業系統 | Windows 7、8、8.1 |
記憶體 | 2 GB RAM(推薦) |
虛擬化 | 這應該已啟用。 |
您可以從以下位置下載 Docker 工具箱 - https://www.docker.com/products/docker-toolbox

Docker - 安裝
讓我們瞭解每個產品的安裝過程。
Docker for Windows
下載安裝程式後,雙擊它以啟動安裝程式,然後按照以下步驟操作。
步驟 1 - 單擊“協議條款”,然後單擊“安裝”按鈕以繼續安裝。

步驟 2 - 完成後,單擊“完成”按鈕以完成安裝。

Docker 工具箱
下載安裝程式後,雙擊它以啟動安裝程式,然後按照以下步驟操作。
步驟 1 - 在開始螢幕上單擊“下一步”按鈕。

步驟 2 - 在下一個螢幕上保留預設位置,然後單擊“下一步”按鈕。

步驟 3 - 保留預設元件,然後單擊“下一步”按鈕繼續。

步驟 4 − 保持其他任務不變,然後單擊“下一步”按鈕。

步驟 5 − 在最終螢幕上,單擊“安裝”按鈕。

使用 Docker Toolbox
現在讓我們看看如何使用 Docker Toolbox 在 Windows 上使用 Docker 容器。第一步是啟動 Docker Toolbox 應用程式,在安裝 Docker Toolbox 時會在桌面上建立該應用程式的快捷方式。

接下來,您將在啟動 Docker Toolbox 時看到配置正在進行。

完成後,您將看到 Docker 已配置並啟動。您將獲得 Docker 的互動式 Shell。

為了測試 Docker 是否正常執行,我們可以使用 Docker 的run 命令下載並執行一個簡單的HelloWorld Docker 容器。
Docker run 命令的工作原理如下所示:
docker run
此命令用於在 Docker 容器中執行命令。
語法
docker run image
選項
映象 − 這是用於執行容器的映象名稱。
返回值
輸出將在所需的容器中執行命令。
示例
sudo docker run hello-world
此命令將下載hello-world映象(如果尚未存在),並以容器的形式執行hello-world。
輸出
當我們執行上述命令時,我們將獲得以下結果 -

如果要在 Windows 上執行 Ubuntu 作業系統,可以使用以下命令下載 Ubuntu 映象:
Docker run –it ubuntu bash
在這裡,您告訴 Docker 透過–it選項以互動模式執行該命令。

在輸出中,您可以看到 Ubuntu 映象已下載並執行,然後您將以 root 使用者身份登入到 Ubuntu 容器中。
Docker - Hub
Docker Hub 是一個雲上的登錄檔服務,允許您下載其他社群構建的 Docker 映象。您還可以將自己構建的 Docker 映象上傳到 Docker Hub。在本章中,我們將瞭解如何從 Docker Hub 下載並使用 Jenkins Docker 映象。
Docker Hub 的官方網站為:https://www.docker.com/community-edition#/add_ons
步驟 1 − 首先,您需要在 Docker Hub 上進行簡單的註冊。

步驟 2 − 註冊完成後,您將登入到 Docker Hub。

步驟 3 − 接下來,讓我們瀏覽並找到 Jenkins 映象。

步驟 4 − 如果向下滾動同一頁面,您可以看到 Docker 的pull命令。這將用於將 Jenkins 映象下載到本地 Ubuntu 伺服器上。

步驟 5 − 現在,轉到 Ubuntu 伺服器並執行以下命令:
sudo docker pull jenkins

要執行 Jenkins,您需要執行以下命令:
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
請注意上述sudo命令的以下幾點:
我們使用sudo命令確保它以 root 許可權執行。
這裡,jenkins是我們想要從 Docker Hub 下載並在我們的 Ubuntu 機器上安裝的映象名稱。
-p用於將內部 Docker 映象的埠號對映到我們的主 Ubuntu 伺服器,以便我們可以相應地訪問容器。

然後,您將成功地在 Ubuntu 機器上以容器形式執行 Jenkins。
Docker - 映象
在 Docker 中,一切都是基於映象的。映象是檔案系統和引數的組合。讓我們以 Docker 中的以下命令為例。
docker run hello-world
Docker 命令是特定的,它告訴作業系統上的 Docker 程式需要執行某些操作。
run命令用於表示我們想要建立映象的例項,然後該例項被稱為容器。
最後,“hello-world”表示建立容器的映象。
現在讓我們看看如何使用 Docker Hub 中提供的 CentOS 映象在 Ubuntu 機器上執行 CentOS。我們可以透過在 Ubuntu 機器上執行以下命令來實現:
sudo docker run centos –it /bin/bash
請注意上述sudo命令的以下幾點:
我們使用sudo命令確保它以root許可權執行。
這裡,centos是我們想要從 Docker Hub 下載並在我們的 Ubuntu 機器上安裝的映象名稱。
─it用於表示我們想要以互動模式執行。
/bin/bash用於在 CentOS 啟動並執行後執行 bash shell。
顯示 Docker 映象
要檢視系統上的 Docker 映象列表,您可以發出以下命令。
docker images
此命令用於顯示當前安裝在系統上的所有映象。
語法
docker images
選項
無
返回值
輸出將提供系統上的映象列表。
示例
sudo docker images
輸出
當我們執行上述命令時,它將產生以下結果:

從上述輸出中,您可以看到伺服器上有三個映象:centos、newcentos和jenkins。每個映象都具有以下屬性:
TAG − 用於對映象進行邏輯標記。
映象 ID − 用於唯一標識映象。
建立時間 − 映象建立至今的天數。
虛擬大小 − 映象的大小。
下載 Docker 映象
可以使用 Docker 的run命令從 Docker Hub 下載映象。讓我們詳細瞭解如何做到這一點。
語法
以下語法用於在 Docker 容器中執行命令。
docker run image
選項
映象 − 這是用於執行容器的映象名稱。
返回值
輸出將在所需的容器中執行命令。
示例
sudo docker run centos
此命令將下載centos映象(如果尚未存在),並以容器的形式執行作業系統。
輸出
當我們執行上述命令時,我們將獲得以下結果 -

您現在將看到 CentOS Docker 映象已下載。現在,如果我們執行 Docker 的images命令以檢視系統上的映象列表,我們應該能夠看到centos映象。

刪除 Docker 映象
可以使用docker rmi命令刪除系統上的 Docker 映象。讓我們更詳細地瞭解此命令。
docker rmi
此命令用於刪除 Docker 映象。
語法
docker rmi ImageID
選項
映象 ID − 需要刪除的映象的 ID。
返回值
輸出將提供已刪除映象的映象 ID。
示例
sudo docker rmi 7a86f8ffcb25
這裡,7a86f8ffcb25是newcentos映象的映象 ID。
輸出
當我們執行上述命令時,它將產生以下結果:

讓我們再看看一些關於映象的 Docker 命令。
docker images -q
此命令用於僅返回映象的映象 ID。
語法
docker images
選項
q − 它告訴 Docker 命令僅返回映象 ID。
返回值
輸出將僅顯示 Docker 主機上映象的映象 ID。
示例
sudo docker images -q
輸出
當我們執行上述命令時,它將產生以下結果:

docker inspect
此命令用於檢視映象或容器的詳細資訊。
語法
docker inspect Repository
選項
倉庫 − 這是映象的名稱。
返回值
輸出將顯示映象的詳細資訊。
示例
sudo docker inspect jenkins
輸出
當我們執行上述命令時,它將產生以下結果:

Docker - 容器
容器是 Docker 映象的例項,可以使用 Docker run 命令執行。Docker 的基本目的是執行容器。讓我們討論如何使用容器。
執行容器
容器的執行由 Docker 的run命令管理。要在互動模式下執行容器,首先啟動 Docker 容器。
sudo docker run –it centos /bin/bash
然後按 Crtl+p,您將返回到作業系統 Shell。

然後,您將在 Ubuntu 伺服器上的 CentOS 系統例項中執行。
列出容器
可以透過docker ps命令列出機器上的所有容器。此命令用於返回當前正在執行的容器。
docker ps
語法
docker ps
選項
無
返回值
輸出將顯示當前正在執行的容器。
示例
sudo docker ps
輸出
當我們執行上述命令時,它將產生以下結果:

讓我們看看docker ps命令的一些其他變體。
docker ps -a
此命令用於列出系統上的所有容器
語法
docker ps -a
選項
─a − 它告訴docker ps命令列出系統上的所有容器。
返回值
輸出將顯示所有容器。
示例
sudo docker ps -a
輸出
當我們執行上述命令時,它將產生以下結果:

docker history
使用此命令,您可以檢視透過容器對映象執行的所有命令。
語法
docker history ImageID
選項
映象 ID − 這是您想要檢視其所有執行命令的映象 ID。
返回值
輸出將顯示針對該映象執行的所有命令。
示例
sudo docker history centos
上述命令將顯示針對centos映象執行的所有命令。
輸出
當我們執行上述命令時,它將產生以下結果:

Docker - 使用容器
在本章中,我們將詳細探討可以使用容器執行的操作。
docker top
使用此命令,您可以檢視容器內的頂級程序。
語法
docker top ContainerID
選項
容器 ID − 這是您想要檢視其頂級程序的容器 ID。
返回值
輸出將顯示容器內的頂級程序。
示例
sudo docker top 9f215ed0b0d3
上述命令將顯示容器內的頂級程序。
輸出
當我們執行上述命令時,它將產生以下結果:

docker stop
此命令用於停止正在執行的容器。
語法
docker stop ContainerID
選項
容器 ID − 需要停止的容器 ID。
返回值
輸出將給出已停止容器的 ID。
示例
sudo docker stop 9f215ed0b0d3
上述命令將停止 Docker 容器9f215ed0b0d3。
輸出
當我們執行上述命令時,它將產生以下結果:

docker rm
此命令用於刪除容器。
語法
docker rm ContainerID
選項
容器 ID − 需要刪除的容器 ID。
返回值
輸出將給出已刪除容器的 ID。
示例
sudo docker rm 9f215ed0b0d3
上述命令將刪除 Docker 容器9f215ed0b0d3。
輸出
當我們執行上述命令時,它將產生以下結果:

docker stats
此命令用於提供正在執行的容器的統計資訊。
語法
docker stats ContainerID
選項
容器 ID − 需要提供統計資訊的容器 ID。
返回值
輸出將顯示容器的 CPU 和記憶體使用情況。
示例
sudo docker stats 9f215ed0b0d3
上述命令將提供容器9f215ed0b0d3的 CPU 和記憶體使用情況。
輸出
當我們執行上述命令時,它將產生以下結果:

docker attach
此命令用於附加到正在執行的容器。
語法
docker attach ContainerID
選項
容器 ID − 需要附加到的容器 ID。
返回值
無
示例
sudo docker attach 07b0b6f434fe
上述命令將附加到 Docker 容器07b0b6f434fe。
輸出
當我們執行上述命令時,它將產生以下結果:

附加到 Docker 容器後,您可以執行上述命令以檢視該 Docker 容器中的程序使用情況。

docker pause
此命令用於暫停正在執行的容器中的程序。
語法
docker pause ContainerID
選項
容器 ID − 需要暫停容器中程序的容器 ID。
返回值
已暫停容器的容器 ID。
示例
sudo docker pause 07b0b6f434fe
上述命令將暫停正在執行的容器07b0b6f434fe中的程序。
輸出
當我們執行上述命令時,它將產生以下結果:

docker unpause
此命令用於恢復正在執行的容器中的程序。
語法
docker unpause ContainerID
選項
容器 ID − 需要恢復容器中程序的容器 ID。
返回值
正在執行的容器的容器 ID。
示例
sudo docker unpause 07b0b6f434fe
上述命令將恢復正在執行的容器07b0b6f434fe中的程序。
輸出
當我們執行上述命令時,它將產生以下結果:

docker kill
此命令用於殺死正在執行的容器中的程序。
語法
docker kill ContainerID
選項
容器 ID − 需要殺死容器中程序的容器 ID。
返回值
正在執行的容器的容器 ID。
示例
sudo docker kill 07b0b6f434fe
上述命令將殺死正在執行的容器07b0b6f434fe中的程序。
輸出
當我們執行上述命令時,它將產生以下結果:

Docker – 容器生命週期
下圖說明了 Docker 容器的整個生命週期。

最初,Docker 容器將處於已建立狀態。
然後,當使用 Docker 的run命令時,Docker 容器將進入執行狀態。
Docker 的kill命令用於殺死現有的 Docker 容器。
Docker 的pause命令用於暫停現有的 Docker 容器。
Docker 的stop命令用於暫停現有的 Docker 容器。
Docker 的 **run** 命令用於將容器從 **停止** 狀態恢復到 **執行** 狀態。
Docker - 架構
下圖顯示了 **虛擬化** 的標準架構和傳統架構。

伺服器是用於託管多個虛擬機器的物理伺服器。
主機作業系統是基礎機器,例如 Linux 或 Windows。
管理程式可以是 VMWare 或 Windows Hyper V,用於託管虛擬機器。
然後,您可以在現有的管理程式之上安裝多個作業系統作為虛擬機器,作為訪客作業系統。
然後,您將在每個訪客作業系統上託管您的應用程式。
下圖顯示了透過 Docker 實現的新一代虛擬化。讓我們看一下各個層。

伺服器是用於託管多個虛擬機器的物理伺服器。因此,此層保持不變。
主機作業系統是基礎機器,例如 Linux 或 Windows。因此,此層保持不變。
現在出現了新一代技術,即 Docker 引擎。它用於執行作業系統,而以前是將虛擬機器作為 Docker 容器執行。
所有應用程式現在都作為 Docker 容器執行。
這種架構的明顯優勢在於,您不需要為訪客作業系統配備額外的硬體。一切都可以作為 Docker 容器執行。
Docker - 容器和主機
Docker 引擎的一大優點是它設計為可以在各種作業系統上執行。我們已經看到了在 Windows 上的安裝,以及在 Linux 系統上所有 Docker 命令的使用。現在讓我們看看在 Windows 作業系統上的各種 Docker 命令。
Docker 映象
讓我們在 Windows 主機上執行 Docker **images** 命令。

從這裡我們可以看到,我們有兩個映象 - **ubuntu** 和 **hello-world**。
執行容器
現在讓我們在 Windows Docker 主機上執行一個容器。

我們可以看到,透過執行容器,我們現在可以在 Windows 主機上執行 Ubuntu 容器。
列出所有容器
讓我們列出 Windows 主機上的所有容器。

停止容器
現在讓我們停止 Windows 主機上正在執行的容器。

因此,您可以看到 Docker 引擎在不同的 Docker 主機上非常一致,它在 Windows 上的工作方式與在 Linux 上相同。
Docker - 配置
在本章中,我們將瞭解配置 Docker 的不同選項。
service docker stop
此命令用於停止 Docker **守護程序**。
語法
service docker stop
選項
無
返回值
顯示 Docker 程序已停止的訊息。
示例
sudo service docker stop
輸出
當我們執行上述命令時,它將產生以下結果:

service docker start
此命令用於啟動 Docker 守護程序。
語法
service docker start
選項
無
返回值
顯示 Docker 程序已啟動的訊息。
示例
sudo service docker start
輸出
當我們執行上述命令時,它將產生以下結果:

Docker - 容器和 Shell
預設情況下,當您啟動容器時,您還將在啟動容器時使用 **shell 命令**,如下所示。這正是我們在前面章節中處理容器時所看到的。

在上面的螢幕截圖中,您可以看到我們發出了以下命令:
sudo docker run –it centos /bin/bash
我們使用此命令建立了一個新容器,然後使用 Ctrl+P+Q 命令退出容器。它確保即使我們在退出容器後,容器仍然存在。
我們可以使用 Docker **ps** 命令驗證容器是否仍然存在。如果我們直接退出容器,則容器本身將被銷燬。
現在有一種更簡單的方法可以連線到容器並乾淨地退出,而無需銷燬它們。實現此目的的一種方法是使用 **nsenter** 命令。
在執行 **nsenter** 命令之前,您需要先安裝 **nsenter** 映象。可以使用以下命令完成:
docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter

在使用 **nsenter** 命令之前,我們需要獲取容器的程序 ID,因為 **nsenter** 命令需要此 ID。我們可以透過 Docker **inspect 命令**獲取程序 ID,並透過 **Pid** 進行過濾。

如上圖所示,我們首先使用了 **docker ps** 命令檢視正在執行的容器。我們可以看到有一個正在執行的容器,其 ID 為 ef42a4c5e663。
然後,我們使用 Docker **inspect** 命令檢查此容器的配置,然後使用 **grep** 命令僅過濾程序 ID。從輸出中,我們可以看到程序 ID 為 2978。
現在我們有了程序 ID,就可以繼續使用 **nsenter** 命令連線到 Docker 容器。
nsenter
此方法允許使用者連線到容器而無需退出容器。
語法
nsenter –m –u –n –p –i –t containerID command
選項
**-u** 用於指定 **Uts 名稱空間**
**-m** 用於指定 **掛載名稱空間**
**-n** 用於指定 **網路名稱空間**
**-p** 用於指定 **程序名稱空間**
**-i** 用於使容器以互動模式執行。
**-t** 用於將容器的 I/O 流連線到主機作業系統。
**containerID** - 這是容器的 ID。
**Command** - 這是要在容器內執行的命令。
返回值
無
示例
sudo nsenter –m –u –n –p –i –t 2978 /bin/bash
輸出

從輸出中,我們可以觀察到以下幾點:
當我們發出 **nsenter** 命令時,提示符會直接更改為 **bash shell**。
然後我們發出 **exit** 命令。現在,通常情況下,如果您沒有使用 **nsenter** 命令,則容器將被銷燬。但是您會注意到,當我們執行 **nsenter** 命令時,容器仍在執行。
Docker - 檔案
在前面的章節中,我們已經看到了各種映象檔案,例如從 **Docker Hub** 下載的 Centos,您可以從中啟動容器。下面再次顯示了一個示例。

如果我們使用 Docker **images** 命令,我們可以看到系統中現有的映象。從上面的螢幕截圖中,我們可以看到有兩個映象:**centos** 和 **nsenter**。
但是 Docker 還使您能夠建立自己的 Docker 映象,這可以透過 **Docker 檔案** 來完成。Docker 檔案是一個簡單的文字檔案,其中包含有關如何構建映象的說明。
以下步驟說明了您應該如何建立 Docker 檔案。
**步驟 1** - 建立一個名為 **Docker 檔案** 的檔案,並使用 **vim** 進行編輯。請注意,檔名必須為“Dockerfile”,其中“D”為大寫。

**步驟 2** - 使用以下說明構建 Docker 檔案。
#This is a sample Image FROM ubuntu MAINTAINER demousr@gmail.com RUN apt-get update RUN apt-get install –y nginx CMD [“echo”,”Image created”]
關於上述檔案,需要注意以下幾點:
第一行“#This is a sample Image”是註釋。您可以使用 **#** 命令在 Docker 檔案中添加註釋
下一行必須以 **FROM** 關鍵字開頭。它告訴 Docker,您要從哪個基礎映象構建您的映象。在我們的示例中,我們正在從 **ubuntu** 映象建立映象。
下一個命令是將要維護此映象的人員。在此處,您指定 **MAINTAINER** 關鍵字並僅提及電子郵件 ID。
**RUN** 命令用於對映象執行指令。在我們的例子中,我們首先更新 Ubuntu 系統,然後在我們的 **ubuntu** 映象上安裝 nginx 伺服器。
最後一個命令用於向用戶顯示訊息。
**步驟 3** - 儲存檔案。在下一章中,我們將討論如何構建映象。

Docker - 構建檔案
我們在上一章建立了 Docker 檔案。現在是時候構建 Docker 檔案了。Docker 檔案可以使用以下命令構建:
docker build
讓我們進一步瞭解此命令。
docker build
此方法允許使用者構建自己的 Docker 映象。
語法
docker build -t ImageName:TagName dir
選項
**-t** - 用於為映象指定標籤
**ImageName** - 這是您要給映象起的名稱。
**TagName** - 這是您要給映象起的標籤。
**Dir** - Docker 檔案所在的目錄。
返回值
無
示例
sudo docker build –t myimage:0.1.
這裡,**myimage** 是我們給映象起的名稱,**0.1** 是我們給映象起的標籤號。
由於 Docker 檔案位於當前工作目錄中,因此我們在命令末尾使用了“.”來表示當前工作目錄。
輸出
從輸出中,您首先會看到 Ubuntu 映象將從 Docker Hub 下載,因為機器上本地沒有可用的映象。

最後,當構建完成時,所有必要的命令都將在映象上執行。

然後您將看到成功構建的訊息和新映象的 ID。當您執行 Docker **images 命令**時,您將能夠看到您的新映象。

您現在可以從您的新映象構建容器。
Docker - 公共倉庫
公共儲存庫可用於託管 Docker 映象,其他人可以使用這些映象。例如,Docker Hub 上可用的映象。大多數映象,例如 Centos、Ubuntu 和 Jenkins,都對所有人公開可用。我們還可以透過將其釋出到 Docker Hub 上的公共儲存庫來使我們的映象可用。
對於我們的示例,我們將使用在“構建 Docker 檔案”一章中構建的 **myimage** 儲存庫並將該映象上傳到 Docker Hub。讓我們首先檢視 Docker 主機上的映象,以瞭解我們可以推送到 Docker 登錄檔的內容。

這裡,我們有我們的 **myimage:0.1** 映象,它是作為“構建 Docker 檔案”一章的一部分建立的。讓我們使用它上傳到 Docker 公共儲存庫。
以下步驟說明了如何將映象上傳到公共儲存庫。
**步驟 1** - 登入 Docker Hub 並建立您的儲存庫。這是儲存映象的儲存庫。轉到 https://hub.docker.com/ 並使用您的憑據登入。

**步驟 2** - 單擊上述螢幕上的“建立儲存庫”按鈕,並建立一個名為 **demorep** 的儲存庫。確保儲存庫的可見性為公開。

建立儲存庫後,請記下附加到儲存庫的 **pull** 命令。

將在我們的儲存庫中使用的 **pull** 命令如下:
docker pull demousr/demorep
**步驟 3** - 現在返回到 Docker 主機。在這裡,我們需要將我們的 **myimage** 標記到 Docker Hub 中建立的新儲存庫。我們可以透過 Docker **tag 命令**來完成此操作。
我們將在本章後面進一步瞭解此 **tag 命令**。
**步驟 4** - 發出 Docker login 命令,從命令提示符登入到 Docker Hub 儲存庫。Docker login 命令將提示您輸入 Docker Hub 儲存庫的使用者名稱和密碼。

**步驟 5** - 標記映象後,現在是時候將映象推送到 Docker Hub 儲存庫了。我們可以透過 Docker **push** 命令來完成此操作。我們將在本章後面進一步瞭解此命令。
docker tag
此方法允許使用者將映象標記到相關的儲存庫。
語法
docker tag imageID Repositoryname
選項
imageID − 需要標記到儲存庫的 ImageID。
Repositoryname − 需要將 ImageID 標記到的儲存庫名稱。
返回值
無
示例
sudo docker tag ab0c1d3744dd demousr/demorep:1.0
輸出
下面給出了上述示例的輸出示例。

docker push
此方法允許將映象推送到 Docker Hub。
語法
docker push Repositoryname
選項
Repositoryname − 需要推送到 Docker Hub 的儲存庫名稱。
返回值
推送到 Docker Hub 的儲存庫的長 ID。
示例
sudo docker push demousr/demorep:1.0
輸出

如果您返回到 Docker Hub 頁面並轉到您的儲存庫,您將在儲存庫中看到標籤名稱。

現在讓我們嘗試將我們上傳到 Docker 主機的儲存庫拉取到本地。首先,讓我們從本地 Docker 主機刪除映象 myimage:0.1 和 demousr/demorep:1.0。讓我們使用 Docker 的 pull 命令從 Docker Hub 拉取儲存庫。

從上面的螢幕截圖中,您可以看到 Docker 的 pull 命令已從 Docker Hub 獲取我們的新儲存庫並將其放置在我們的機器上。
Docker - 管理埠
在 Docker 中,容器本身可以在埠上執行應用程式。當您執行容器時,如果要透過埠號訪問容器中的應用程式,則需要將容器的埠號對映到 Docker 主機的埠號。讓我們來看一個如何實現此目的的示例。
在我們的示例中,我們將從 Docker Hub 下載 Jenkins 容器。然後,我們將 Jenkins 埠號對映到 Docker 主機上的埠號。
步驟 1 − 首先,您需要在 Docker Hub 上進行簡單的註冊。

步驟 2 − 註冊完成後,您將登入到 Docker Hub。

步驟 3 − 接下來,讓我們瀏覽並找到 Jenkins 映象。

步驟 4 − 如果您向下滾動到同一頁面,您將看到 Docker 的 pull 命令。這將用於將 Jenkins 映象下載到本地 Ubuntu 伺服器上。

步驟 5 − 現在轉到 Ubuntu 伺服器並執行以下命令 −
sudo docker pull jenkins

步驟 6 − 要了解容器公開了哪些埠,您應該使用 Docker 的 inspect 命令檢查映象。
現在讓我們進一步瞭解此 inspect 命令。
docker inspect
此方法允許返回有關容器或映象的低階資訊。
語法
docker inspect Container/Image
選項
Container/Image − 要檢查的容器或映象
返回值
映象或容器的低階資訊,以 JSON 格式呈現。
示例
sudo docker inspect jenkins
輸出

inspect 命令的輸出將以 JSON 格式顯示。如果我們觀察輸出,我們可以看到有一個“ExposedPorts”部分,並且看到提到了兩個埠。一個是 8080 的資料埠,另一個是 50000 的控制埠。
要執行 Jenkins 並對映埠,您需要更改 Docker 的 run 命令並新增“p”選項,該選項指定埠對映。因此,您需要執行以下命令 −
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
埠號對映的左側是 Docker 主機要對映到的埠,右側是 Docker 容器的埠號。
當您開啟瀏覽器並導航到埠 8080 上的 Docker 主機時,您將看到 Jenkins 正在執行。

Docker - 私有登錄檔
您可能需要擁有自己的私有儲存庫。您可能不想在 Docker Hub 上託管儲存庫。為此,Docker 本身提供了一個儲存庫容器。讓我們看看如何下載和使用用於登錄檔的容器。
步驟 1 − 使用 Docker 的 run 命令下載私有登錄檔。這可以透過以下命令完成。
sudo docker run –d –p 5000:5000 –-name registry registry:2
關於上述命令,需要注意以下幾點 −
Registry 是 Docker 管理的容器,可用於託管私有儲存庫。
容器公開的埠號為 5000。因此,使用 –p 命令,我們將相同的埠號對映到本地主機的 5000 埠號。
我們只是將登錄檔容器標記為“2”,以便在 Docker 主機上進行區分。
–d 選項用於在分離模式下執行容器。這樣容器就可以在後臺執行。

步驟 2 − 讓我們執行 docker ps 以檢視登錄檔容器是否確實正在執行。

我們現在已確認登錄檔容器確實正在執行。
步驟 3 − 現在讓我們標記我們現有的映象之一,以便我們可以將其推送到我們的本地儲存庫。在我們的示例中,由於我們本地有 centos 映象,我們將將其標記到我們的私有儲存庫並新增一個名為 centos 的標籤。
sudo docker tag 67591570dd29 localhost:5000/centos
關於上述命令,需要注意以下幾點 −
67591570dd29 指的是 centos 映象的映象 ID。
localhost:5000 是我們私有儲存庫的位置。
我們在私有儲存庫中將儲存庫名稱標記為 centos。

步驟 4 − 現在讓我們使用 Docker 的 push 命令將儲存庫推送到我們的私有儲存庫。
sudo docker push localhost:5000/centos
在這裡,我們將 centos 映象推送到託管在 localhost:5000 上的私有儲存庫。

步驟 5 − 現在讓我們使用 docker rmi 命令刪除我們為 centos 擁有的本地映象。然後,我們可以從我們的私有儲存庫下載所需的 centos 映象。
sudo docker rmi centos:latest sudo docker rmi 67591570dd29

步驟 6 − 現在我們的本地機器上沒有任何 centos 映象,我們可以使用以下 Docker 的 pull 命令從我們的私有儲存庫拉取 centos 映象。
sudo docker pull localhost:5000/centos
在這裡,我們正在將 centos 映象拉取到託管在 localhost:5000 上的私有儲存庫。

如果您現在檢視系統上的映象,您也將看到 centos 映象。
Docker - 構建 Web 伺服器 Dockerfile
我們已經瞭解瞭如何使用 Dockerfile 構建我們自己的自定義映象。現在讓我們看看如何構建一個可用於構建容器的 Web 伺服器映象。
在我們的示例中,我們將使用 Ubuntu 上的 Apache Web 伺服器來構建我們的映象。讓我們按照下面給出的步驟構建我們的 Web 伺服器 Dockerfile。
步驟 1 − 第一步是構建我們的 Dockerfile。讓我們使用 vim 並建立一個包含以下資訊的 Dockerfile。
FROM ubuntu RUN apt-get update RUN apt-get install –y apache2 RUN apt-get install –y apache2-utils RUN apt-get clean EXPOSE 80 CMD [“apache2ctl”, “-D”, “FOREGROUND”]
關於上述語句,需要注意以下幾點 −
我們首先從 Ubuntu 基礎映象建立我們的映象。
接下來,我們將使用 RUN 命令更新 Ubuntu 系統上的所有軟體包。
接下來,我們使用 RUN 命令在我們的映象上安裝 apache2。
接下來,我們使用 RUN 命令在我們的映象上安裝必要的實用程式 apache2 軟體包。
接下來,我們使用 RUN 命令清理系統中任何不必要的檔案。
EXPOSE 命令用於將容器中 Apache 的 80 埠公開到 Docker 主機。
最後,CMD 命令用於在後臺執行 apache2。

現在檔案詳細資訊已輸入,只需儲存檔案即可。
步驟 2 − 執行 Docker 的 build 命令來構建 Dockerfile。這可以透過以下命令完成 −
sudo docker build –t=”mywebserver” .
我們將映象標記為 mywebserver。構建映象後,您將收到一條成功訊息,表明檔案已構建。

步驟 3 − 現在 Web 伺服器檔案已構建,現在是時候從映象建立容器了。我們可以使用 Docker 的 run 命令來實現。
sudo docker run –d –p 80:80 mywebserver

關於上述命令,需要注意以下幾點 −
容器公開的埠號為 80。因此,使用 –p 命令,我們將相同的埠號對映到本地主機的 80 埠號。
–d 選項用於在分離模式下執行容器。這樣容器就可以在後臺執行。
如果您在 Web 瀏覽器中轉到 Docker 主機上的 80 埠,您現在將看到 Apache 正在執行。

Docker - 指令命令
Docker 有一系列指令命令。這些是放在 Dockerfile 中的命令。讓我們看看有哪些可用的命令。
CMD 指令
此命令用於在執行時執行容器執行時的命令。
語法
CMD command param1
選項
command − 這是在啟動容器時要執行的命令。
param1 − 這是輸入到命令的引數。
返回值
命令將相應地執行。
示例
在我們的示例中,我們將在 Dockerfile 中輸入一個簡單的 Hello World 回顯,並建立一個映象並從中啟動一個容器。
步驟 1 − 使用以下命令構建 Dockerfile −
FROM ubuntu MAINTAINER demousr@gmail.com CMD [“echo” , “hello world”]
這裡,CMD 只是用於列印 hello world。

步驟 2 − 使用 Docker 的 build 命令構建映象。

步驟 3 − 從映象執行一個容器。

ENTRYPOINT
此命令也可用於在執行時為容器執行命令。但是我們可以透過 ENTRYPOINT 命令獲得更大的靈活性。
語法
ENTRYPOINT command param1
選項
command − 這是在啟動容器時要執行的命令。
param1 − 這是輸入到命令的引數。
返回值
命令將相應地執行。
示例
讓我們來看一個示例以進一步瞭解 ENTRYPOINT。在我們的示例中,我們將在 Dockerfile 中輸入一個簡單的 echo 命令,並建立一個映象並從中啟動一個容器。
步驟 1 − 使用以下命令構建 Dockerfile −
FROM ubuntu MAINTAINER demousr@gmail.com ENTRYPOINT [“echo”]

步驟 2 − 使用 Docker 的 build 命令構建映象。

步驟 3 − 從映象執行一個容器。

ENV
此命令用於在容器中設定環境變數。
語法
ENV key value
選項
Key − 這是環境變數的鍵。
value − 這是環境變數的值。
返回值
命令將相應地執行。
示例
在我們的示例中,我們將在 Dockerfile 中輸入一個簡單的 echo 命令,並建立一個映象並從中啟動一個容器。
步驟 1 − 使用以下命令構建 Dockerfile −
FROM ubuntu MAINTAINER demousr@gmail.com ENV var1=Tutorial var2=point

步驟 2 − 使用 Docker 的 build 命令構建映象。

步驟 3 − 從映象執行一個容器。

步驟 4 − 最後,執行 env 命令以檢視環境變數。

WORKDIR
此命令用於設定容器的工作目錄。
語法
WORKDIR dirname
選項
dirname − 新的工作目錄。如果目錄不存在,它將被新增。
返回值
命令將相應地執行。
示例
在我們的示例中,我們將在 Dockerfile 中輸入一個簡單的 echo 命令,並建立一個映象並從中啟動一個容器。
步驟 1 − 使用以下命令構建 Dockerfile −
FROM ubuntu MAINTAINER demousr@gmail.com WORKDIR /newtemp CMD pwd

步驟 2 − 使用 Docker 的 build 命令構建映象。

步驟 3 − 從映象執行一個容器。

Docker - 容器連結
容器連結允許多個容器相互連結。它是比公開埠更好的選擇。讓我們一步一步地學習它是如何工作的。
步驟 1 − 如果 Jenkins 映象不存在,請使用 Jenkins 的 pull 命令下載它。

步驟 2 − 映象可用後,執行容器,但這次您可以使用 –-name 選項為容器指定一個名稱。這將是我們的 源容器。

步驟 3 − 接下來,是時候啟動目標容器了,但這次我們將它與我們的源容器連結起來。對於我們的目標容器,我們將使用標準的 Ubuntu 映象。

當您執行 docker ps 時,您將看到兩個容器都在執行。
步驟 4 − 現在,連線到接收容器。

然後執行 env 命令。您將注意到與源容器連結的新變數。


Docker - 儲存
儲存驅動程式
Docker 具有多個儲存驅動程式,允許使用者與底層儲存裝置互動。下表顯示了不同的儲存驅動程式及其使用的技術。
技術 | 儲存驅動程式 |
---|---|
OverlayFS | overlay 或 overlay2 |
AUFS | aufs |
Btrfs | brtfs |
裝置管理器 | devicemanager |
VFS | vfs |
ZFS | zfs |
現在讓我們討論一些您將使用各種儲存驅動程式的情況 −
AUFS
這是一個穩定的驅動程式;可用於生產就緒型應用程式。
它具有良好的記憶體使用率,並且有助於確保容器擁有流暢的 Docker 體驗。
此驅動程式與高寫入活動相關聯,應予以考慮。
它適用於平臺即服務型別的系統。
Devicemapper
這是一個穩定的驅動程式;確保流暢的 Docker 體驗。
此驅動程式適用於在實驗室中測試應用程式。
此驅動程式與主 Linux 核心功能一致。
Btrfs
此驅動程式與主 Linux 核心功能一致。
此驅動程式與高寫入活動相關聯,應予以考慮。
此驅動程式適用於您維護多個構建池的例項。
Overlay
這是一個穩定的驅動程式,並且與主 Linux 核心功能一致。
它具有良好的記憶體使用率。
此驅動程式適用於在實驗室中測試應用程式。
ZFS
這是一個穩定的驅動程式,並且適用於在實驗室中測試應用程式。
它適用於平臺即服務型別的系統。
要檢視正在使用的儲存驅動程式,請發出docker info命令。
語法
docker info
選項
無
返回值
該命令將提供有關安裝在 Docker 主機上的 Docker 元件的所有相關資訊。
示例
sudo docker info
輸出
以下輸出顯示正在使用的主要驅動程式是aufs驅動程式,並且根目錄儲存在/var/lib/docker/aufs中。

資料卷
在 Docker 中,您有一個可以跨容器共享的單獨卷。這些被稱為資料卷。資料卷的一些功能包括:
- 它們在建立容器時初始化。
- 它們可以在許多容器之間共享和重用。
- 可以直接對卷本身進行任何更改。
- 即使容器被刪除後,它們也仍然存在。
讓我們看看我們的 Jenkins 容器。讓我們執行一個docker inspect來檢視此映象的詳細資訊。我們可以發出以下命令將docker inspect命令的輸出寫入文字檔案,然後相應地檢視該檔案。
sudo docker inspect Jenkins > tmp.txt
當您使用more 命令檢視文字檔案時,您將看到一個名為JENKINS_HOME=/var/Jenkins_home的條目。
這是透過 Jenkins 映象在容器內完成的對映。

現在假設您想將容器中的卷對映到本地卷,那麼您需要在啟動容器時指定–v選項。下面顯示了一個示例:
sudo docker run –d –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
–v選項用於將容器中的卷/var/jenkins_home對映到 Docker 主機上的位置/home/demo。

現在,如果您在啟動容器後轉到 Docker 主機上的/home/demo位置,您將看到所有容器檔案都存在那裡。

更改容器的儲存驅動程式
如果您想更改用於容器的儲存驅動程式,您可以在啟動容器時執行此操作。這可以透過在使用docker run命令時使用–volume-driver引數來完成。下面給出了一個示例:
sudo docker run –d --volume-driver=flocker –v /home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
–volume-driver選項用於為容器指定另一個儲存驅動程式。

要確認驅動程式已更改,首先讓我們使用docker ps命令檢視正在執行的容器並獲取容器 ID。因此,首先發出以下命令:
sudo docker ps
然後針對容器發出docker inspect並使用該命令將輸出放入文字檔案。
sudo docker inspect 9bffb1bfebee > temp.txt

如果您瀏覽文字檔案並轉到顯示VolumeDriver的行,您將看到驅動程式名稱已更改。

建立卷
可以使用docker命令預先建立卷。讓我們進一步瞭解此命令。
語法
docker volume create –-name=volumename –-opt options
選項
name - 這是需要建立的卷的名稱。
opt - 這些是您在建立卷時可以提供的選項。
返回值
該命令將輸出建立的卷的名稱。
示例
sudo docker volume create –-name = demo –opt o = size = 100m
在上面的命令中,我們正在建立一個大小為 100MB 且名稱為 demo 的卷。
輸出
上面命令的輸出如下所示:

列出所有卷
您還可以列出docker 主機上的所有docker 卷。下面提供了有關此命令的更多詳細資訊:
語法
docker volume ls
選項
無
返回值
該命令將輸出docker 主機上的所有卷。
示例
sudo docker volume ls
輸出
上面命令的輸出如下所示:

Docker - 網路
Docker 負責網路方面,以便容器可以與其他容器以及 Docker 主機通訊。如果您在 Docker 主機上執行ifconfig,您將看到 Docker 乙太網介面卡。此介面卡是在 Docker 安裝在 Docker 主機上時建立的。

這是 Docker 主機和 Linux 主機之間的橋樑。現在讓我們看看與 Docker 中的網路相關的一些命令。
列出所有 Docker 網路
此命令可用於列出主機上與 Docker 關聯的所有網路。
語法
docker network ls
選項
無
返回值
該命令將輸出 Docker 主機上的所有網路。
示例
sudo docker network ls
輸出
上面命令的輸出如下所示

檢查 Docker 網路
如果您想檢視有關與 Docker 關聯的網路的更多詳細資訊,可以使用 Docker network inspect命令。
語法
docker network inspect networkname
選項
networkname - 這是您需要檢查的網路的名稱。
返回值
該命令將輸出有關網路的所有詳細資訊。
示例
sudo docker network inspect bridge
輸出
上面命令的輸出如下所示:

現在讓我們執行一個容器,看看我們再次檢查網路時會發生什麼。讓我們使用以下命令啟動一個 Ubuntu 容器:
sudo docker run –it ubuntu:latest /bin/bash

現在,如果我們透過以下命令檢查網路名稱,您將看到該容器已連線到橋接。
sudo docker network inspect bridge

建立您自己的新網路
在啟動容器之前,可以在 Docker 中建立網路。這可以透過以下命令完成:
語法
docker network create –-driver drivername name
選項
drivername - 這是用於網路驅動程式的名稱。
name - 這是賦予網路的名稱。
返回值
該命令將輸出新網路的長 ID。
示例
sudo docker network create –-driver bridge new_nw
輸出
上面命令的輸出如下所示:

您現在可以在啟動容器時附加新網路。因此,讓我們使用以下命令啟動一個 Ubuntu 容器:
sudo docker run –it –network=new_nw ubuntu:latest /bin/bash

現在,當您透過以下命令檢查網路時,您將看到該容器已連線到網路。
sudo docker network inspect new_nw

Docker - 設定 Node.js
Node.js 是一個用於開發伺服器端應用程式的 JavaScript 框架。它是一個開源框架,開發用於在各種作業系統上執行。由於 Node.js 是一個流行的開發框架,因此 Docker 也確保它支援 Node.js 應用程式。
我們現在將瞭解啟動並執行 Node.js 的 Docker 容器的各種步驟。
步驟 1 - 第一步是從 Docker Hub 拉取映象。當您登入 Docker Hub 時,您將能夠搜尋並檢視 Node.js 的映象,如下所示。只需在搜尋框中鍵入 Node,然後單擊搜尋結果中出現的 node(官方)連結。

步驟 2 - 您將在 Docker Hub 中儲存庫的詳細資訊中看到 Node 的 Docker pull命令。

步驟 3 - 在 Docker 主機上,使用上面顯示的 Docker pull命令從 Docker Hub 下載最新的 node 映象。

pull完成後,我們可以繼續下一步。

步驟 4 - 在 Docker 主機上,讓我們使用vim編輯器並建立一個 Node.js 示例檔案。在此檔案中,我們將新增一個簡單的命令以將“HelloWorld”顯示到命令提示符。

在 Node.js 檔案中,讓我們新增以下語句:
Console.log(‘Hello World’);
當我們透過 Node.js 執行它時,這將輸出“Hello World”短語。

確保儲存檔案,然後繼續下一步。
步驟 5 - 要使用 Node Docker 容器執行我們的 Node.js 指令碼,我們需要執行以下語句:
sudo docker run –it –rm –name = HelloWorld –v “$PWD”:/usr/src/app –w /usr/src/app node node HelloWorld.js
關於上述命令,需要注意以下幾點 −
–rm選項用於在容器執行後將其刪除。
我們為容器指定了一個名為“HelloWorld”的名稱。
我們提到要將容器中的卷/usr/src/app對映到我們當前的工作目錄。這樣做是為了讓 node 容器獲取我們工作目錄中 Docker 主機上的 HelloWorld.js 指令碼。
–w選項用於指定 Node.js 使用的工作目錄。
第一個 node 選項用於指定執行 node 映象。
第二個 node 選項用於指定在 node 容器中執行 node 命令。
最後,我們提到指令碼的名稱。
然後我們將獲得以下輸出。從輸出中,我們可以清楚地看到 Node 容器作為容器執行並執行了 HelloWorld.js 指令碼。

Docker - 設定 MongoDB
MongoDB 是一個著名的面向文件的資料庫,許多現代 Web 應用程式都使用它。由於 MongoDB 是一個流行的開發資料庫,因此 Docker 也確保它支援 MongoDB。
我們現在將瞭解啟動並執行 MongoDB 的 Docker 容器的各種步驟。
步驟 1 - 第一步是從 Docker Hub 拉取映象。當您登入 Docker Hub 時,您將能夠搜尋並檢視 Mongo 的映象,如下所示。只需在搜尋框中鍵入 Mongo,然後單擊搜尋結果中出現的 Mongo(官方)連結。

步驟 2 - 您將在 Docker Hub 中儲存庫的詳細資訊中看到 Mongo 的 Docker pull命令。

步驟 3 - 在 Docker 主機上,使用上面顯示的 Docker pull命令從 Docker Hub 下載最新的 Mongo 映象。


步驟 4 - 現在我們有了 Mongo 的映象,讓我們首先執行一個 MongoDB 容器,它將成為我們的 MongoDB 例項。為此,我們將發出以下命令:
sudo docker run -it -d mongo
關於上述命令,需要注意以下幾點:
–it選項用於以互動模式執行容器。
–d選項用於作為守護程序執行容器。
最後,我們正在從 Mongo 映象建立容器。
然後,您可以發出docker ps命令以檢視正在執行的容器:

請注意以下幾點:
容器的名稱是tender_poitras。此名稱將有所不同,因為當您啟動容器時,容器的名稱會不斷變化。但只需記下您已啟動的容器即可。
接下來,還要注意它正在執行的埠號。它在 TCP 埠 27017 上偵聽。
步驟 5 - 現在讓我們啟動另一個容器,它將充當我們的客戶端,用於連線到 MongoDB 資料庫。為此,我們將發出以下命令:
sudo docker run –it –link=tender_poitras:mongo mongo /bin/bash
關於上述命令,需要注意以下幾點:
–it選項用於以互動模式執行容器。
我們現在將新容器連結到已啟動的 MongoDB 伺服器容器。在這裡,您需要提及已啟動容器的名稱。
然後我們指定要啟動 Mongo 容器作為我們的客戶端,然後在新容器中執行bin/bashshell。

您現在將在新容器中。
步驟 6 - 在新容器中執行env命令以檢視有關如何連線到 MongoDB 伺服器容器的詳細資訊。

步驟 6 - 現在是時候從客戶端容器連線到 MongoDB 伺服器了。我們可以透過以下命令執行此操作:
mongo 172.17.0.2:27017
關於上述命令,需要注意以下幾點
mongo命令是用於連線到 MongoDB 資料庫的客戶端mongo命令。
IP 和埠號是在使用env命令時獲得的。
執行該命令後,您將連線到 MongoDB 資料庫。

然後,您可以在命令提示符下執行任何 MongoDB 命令。在我們的示例中,我們正在執行以下命令:
use demo
此命令是一個 MongoDB 命令,用於切換到資料庫名稱demo。如果資料庫不可用,則將建立它。

現在您已成功建立了客戶端和伺服器 MongoDB 容器。
Docker - 設定 NGINX
NGINX 是一款流行的輕量級 Web 應用程式,用於開發伺服器端應用程式。它是一個開源的 Web 伺服器,可以執行在各種作業系統上。由於nginx 是一個流行的開發 Web 伺服器,因此 Docker 確保了對nginx 的支援。
現在我們將瞭解啟動並執行nginx 的 Docker 容器的各個步驟。
步驟 1 - 第一步是從 Docker Hub 拉取映象。登入 Docker Hub 後,您將能夠搜尋並檢視nginx 的映象,如下所示。只需在搜尋框中輸入 nginx,然後點選搜尋結果中出現的nginx(官方)連結。

步驟 2 - 您將在 Docker Hub 中儲存庫詳細資訊中看到nginx 的 Docker pull 命令。

步驟 3 - 在 Docker 主機上,使用上面顯示的 Docker pull 命令從 Docker Hub 下載最新的 nginx 映象。

步驟 4 - 現在讓我們透過以下命令執行nginx 容器。
sudo docker run –p 8080:80 –d nginx
我們將nginx 伺服器上的埠 80 暴露到 Docker 主機上的埠 8080。

執行該命令後,如果您瀏覽 URL http://dockerhost:8080,您將獲得以下輸出。這表明nginx 容器已啟動並正在執行。

步驟 5 - 讓我們來看另一個示例,我們可以在ngnix 容器中託管一個簡單的網頁。在我們的示例中,我們將建立一個簡單的HelloWorld.html 檔案並在我們的nginx 容器中託管它。
首先讓我們建立一個名為HelloWorld.html 的 HTML 檔案。

讓我們在 HTML 檔案中新增一行簡單的 Hello World。

然後讓我們執行以下 Docker 命令。
sudo docker run –p 8080:80 –v “$PWD”:/usr/share/nginx/html:ro –d nginx
關於上述命令,需要注意以下幾點 −
我們將nginx 伺服器上的埠 80 暴露到 Docker 主機上的埠 8080。
接下來,我們將容器上的卷/usr/share/nginx/html 附加到我們的當前工作目錄。這是我們的 HelloWorld.html 檔案儲存的位置。

現在,如果我們瀏覽 URL http://dockerhost:8080/HelloWorld.html,我們將獲得以下預期輸出 -

Docker - 工具箱
在介紹性章節中,我們已經瞭解了在 Windows 上安裝 Docker 工具箱。Docker 工具箱的開發是為了讓 Docker 容器可以在 Windows 和 MacOS 上執行。Windows 上工具箱的網站是 https://docs.container.club.tw/docker-for-windows/

對於 Windows,您需要擁有 Windows 10 或 Windows Server 2016 並且啟用了 Hyper-V。
工具箱包含以下元件 -
Docker Engine - 用作執行 Docker 容器的基礎引擎或 Docker 守護程式。
Docker Machine - 用於執行 Docker machine 命令。
Docker Compose - 用於執行 Docker compose 命令。
Kitematic - 這是為 Windows 和 Mac OS 構建的 Docker GUI。
Oracle VirtualBox
現在讓我們討論使用 Docker 工具箱可以執行的不同型別的活動。
在 PowerShell 中執行
使用 Windows 10 上的 Docker 工具箱,您現在可以從powershell 執行 Docker 命令。如果您在 Windows 上開啟 powershell 並輸入 Docker 版本命令,您將獲得有關已安裝的 Docker 版本的所有必要詳細資訊。

拉取映象和執行容器
您現在也可以從 Docker Hub 拉取映象並在 powershell 中執行容器,就像在 Linux 中一樣。以下示例將簡要說明下載 Ubuntu 映象並在該映象上執行容器。
第一步是使用 Docker pull 命令從 Docker Hub 拉取 Ubuntu 映象。

下一步是使用以下run 命令執行 Docker 映象 -
docker run –it ubuntu /bin/bash
您會注意到該命令與 Linux 中的相同。

Kitematic
這是 Windows 上 Docker 的 GUI 等效項。要開啟此 GUI,請轉到工作列,在 Docker 圖示上右鍵單擊,然後選擇開啟 Kitematic。

它將提示您下載 Kitematic GUI。下載完成後,只需解壓縮內容。將有一個名為Kitematic.exe 的檔案。雙擊此 exe 檔案以開啟 GUI 介面。
然後將要求您登入 Docker Hub,透過 GUI 登入。只需輸入所需的使用者名稱和密碼,然後點選登入按鈕。

登入後,您將能夠在介面左側看到系統上下載的所有映象。

在右側,您將找到 Docker Hub 上可用的所有映象。
讓我們以一個示例來了解如何使用 Kitematic 從 Docker Hub 下載 Node 映象。
步驟 1 - 在搜尋條件中輸入節點關鍵字。

步驟 2 - 點選官方 Node 映象上的建立按鈕。然後您將看到映象正在下載。

映象下載完成後,它將開始執行 Node 容器。

步驟 3 - 如果您轉到設定選項卡,您可以深入瞭解更多設定選項,如下所示。
常規設定 - 在此選項卡中,您可以命名容器、更改路徑設定和刪除容器。

埠 - 在這裡您可以看到不同的埠對映。如果需要,您可以建立自己的埠對映。

卷 - 在這裡您可以看到不同的卷對映。

高階 - 它包含容器的高階設定。

Docker - 設定 ASP.Net
ASP.Net 是 Microsoft 提供的標準 Web 開發框架,用於開發伺服器端應用程式。由於 ASP.Net 在開發中已經存在很長時間,因此 Docker 確保了對 ASP.Net 的支援。
在本章中,我們將瞭解啟動並執行 ASP.Net 的 Docker 容器的各個步驟。
先決條件
首先需要執行以下步驟才能執行 ASP.Net。
步驟 1 - 由於這隻能在 Windows 系統上執行,因此您首先需要確保您擁有 Windows 10 或 Window Server 2016。
步驟 2 - 接下來,確保 Hyper-V 和容器已安裝在 Windows 系統上。要安裝 Hyper-V 和容器,您可以轉到“啟用或關閉 Windows 功能”。然後確保選中 Hyper-V 選項和容器,然後點選“確定”按鈕。

此操作後,系統可能需要重新啟動。
步驟 3 - 接下來,您需要使用以下 PowerShell 命令安裝 Docker 的1.13.0rc4 版本。以下命令將下載此版本並將其儲存在臨時位置。
Invoke-WebRequest "https://test.docker.com/builds/Windows/x86_64/docker-1.13.0- rc4.zip" -OutFile "$env:TEMP\docker-1.13.0-rc4.zip" –UseBasicParsing

步驟 4 - 接下來,您需要使用以下powershell 命令展開存檔。
Expand-Archive -Path "$env:TEMP\docker-1.13.0-rc4.zip" -DestinationPath $env:ProgramFiles

步驟 5 - 接下來,您需要使用以下powershell 命令將 Docker 檔案新增到環境變數。
$env:path += ";$env:ProgramFiles\Docker"
步驟 6 - 接下來,您需要使用以下powershell 命令註冊 Docker 守護程式服務。
dockerd --register-service
步驟 7 - 最後,您可以使用以下命令啟動docker 守護程式。
Start-Service Docker
在powershell 中使用docker version 命令驗證docker 守護程式是否正在工作。

安裝 ASP.Net 容器
讓我們看看如何安裝 ASP.Net 容器。
步驟 1 - 第一步是從 Docker Hub 拉取映象。登入 Docker Hub 後,您將能夠搜尋並檢視Microsoft/aspnet 的映象,如下所示。只需在搜尋框中輸入asp,然後點選搜尋結果中出現的 Microsoft/aspnet 連結。

步驟 2 - 您將在 Docker Hub 中儲存庫詳細資訊中看到 ASP.Net 的 Docker pull 命令。

步驟 3 - 轉到 Docker 主機並執行 microsoft/aspnet 映象的 Docker pull 命令。請注意,該映象非常大,大約 4.2 GB。

步驟 4 - 現在轉到以下位置 https://github.com/Microsoft/aspnet-docker 並下載整個 Git 儲存庫。
步驟 5 - 在您的 C 驅動器中建立一個名為App 的資料夾。然後將4.6.2/sample 資料夾中的內容複製到您的 C 驅動器。轉到示例目錄中的 Docker 檔案併發出以下命令 -
docker build –t aspnet-site-new –build-arg site_root=/
關於上述命令,需要注意以下幾點 −
- 它從 Docker 檔案構建一個名為aspnet-site-new 的新映象。
- 根路徑設定為本地路徑資料夾。

步驟 6 - 現在是時候執行容器了。可以使用以下命令完成:-
docker run –d –p 8000:80 –name my-running-site-new aspnet-site-new

步驟 7 - 現在您將在 Docker 容器中執行 IIS。要查詢 Docker 容器的 IP 地址,您可以發出如下所示的 Docker inspect 命令。

Docker - 雲
Docker Cloud 是 Docker 提供的一項服務,您可以在其中執行以下操作 -
節點 - 您可以將 Docker Cloud 連線到您現有的雲提供商(如 Azure 和 AWS),以在這些環境中啟動容器。
雲端儲存庫 - 提供一個儲存您自己的儲存庫的位置。
持續整合 - 連線Github 並構建持續整合管道。
應用程式部署 - 部署和擴充套件基礎設施和容器。
持續部署 - 可以自動化部署。
入門
您可以訪問以下連結以開始使用 Docker Cloud - https://cloud.docker.com/

登入後,您將獲得以下基本介面 -

連線到雲提供商
第一步是連線到現有的雲提供商。以下步驟將向您展示如何連線到 Amazon Cloud 提供商。
步驟 1 - 第一步是確保您擁有正確的 AWS 金鑰。這可以從aws 控制檯獲取。使用以下連結登入您的aws 帳戶 - https://aws.amazon.com/console/

步驟 2 - 登入後,轉到安全憑證部分。記下將從 Docker Hub 使用的訪問金鑰。

步驟 3 − 接下來,您需要在aws中建立一個策略,允許 Docker 檢視 EC2 例項。轉到aws中的配置檔案部分。點選建立策略按鈕。

步驟 4 − 點選“建立自己的策略”,並將策略名稱命名為dockercloudpolicy,策略定義如下所示。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:*", "iam:ListInstanceProfiles" ], "Effect": "Allow", "Resource": "*" } ] }

接下來,點選建立策略按鈕。
步驟 5 − 接下來,您需要建立一個角色,Docker 將使用該角色在 AWS 上啟動節點。為此,請轉到 AWS 中的角色部分,然後點選建立新角色選項。

步驟 6 − 為角色命名為dockercloud-role。

步驟 7 − 在下一個螢幕上,轉到“跨賬戶訪問的角色”,然後選擇“在您的賬戶和第三方 AWS 賬戶之間提供訪問許可權”。

步驟 8 − 在下一個螢幕上,輸入以下詳細資訊 -
- 在賬戶 ID 欄位中,輸入 Docker Cloud 服務的 ID:689684103426。
- 在外部 ID 欄位中,輸入您的 Docker Cloud 使用者名稱。

步驟 9 − 然後,點選下一步按鈕,在下一個螢幕上,附加在前面步驟中建立的策略。

步驟 10 − 最後,在建立角色的最後一個螢幕上,確保複製建立的arn角色。
arn:aws:iam::085363624145:role/dockercloud-role

步驟 11 − 現在返回Docker Cloud,選擇雲提供商,然後點選 Amazon Web Services 旁邊的插頭符號。

輸入arn角色並點選儲存按鈕。

儲存後,與 AWS 的整合將完成。

設定節點
與 AWS 整合完成後,下一步是設定節點。轉到 Docker Cloud 中的節點部分。請注意,節點的設定將自動首先設定節點叢集。
步驟 1 − 轉到 Docker Cloud 中的節點部分。

步驟 2 − 接下來,您可以提供將在 AWS 中設定的節點的詳細資訊。

然後,您可以點選螢幕底部顯示的啟動節點叢集。節點部署後,您將在節點叢集螢幕中收到通知。

部署服務
部署節點後的下一步是部署服務。為此,我們需要執行以下步驟。
步驟 1 − 轉到 Docker Cloud 中的服務部分。點選建立按鈕。

步驟 2 − 選擇所需的 Service。在我們的例子中,讓我們選擇mongo。

步驟 3 − 在下一個螢幕上,選擇建立和部署選項。這將開始在您的節點叢集上部署Mongo容器。

部署後,您將能夠看到容器處於執行狀態。

Docker - 日誌
Docker 具有現成的日誌記錄機制,可用於在問題發生時進行除錯。在守護程序級別和容器級別都有日誌記錄。讓我們看看不同級別的日誌記錄。
守護程序日誌記錄
在守護程序日誌記錄級別,有四個級別的日誌記錄可用 -
除錯 − 它詳細說明了守護程序處理的所有可能資訊。
資訊 − 它詳細說明了守護程序處理的所有錯誤 + 資訊。
錯誤 − 它詳細說明了守護程序處理的所有錯誤。
致命 − 它僅詳細說明了守護程序處理的所有致命錯誤。
請按照以下步驟瞭解如何啟用日誌記錄。
步驟 1 − 首先,我們需要停止docker 守護程序,如果它已經在執行。可以使用以下命令完成 -
sudo service docker stop

步驟 2 − 現在我們需要啟動docker 守護程序。但是這次,我們需要附加–l引數來指定日誌記錄選項。因此,在啟動docker 守護程序時,讓我們發出以下命令。
sudo dockerd –l debug &
關於上述命令,需要注意以下幾點 −
dockerd是docker 守護程序的可執行檔案。
–l選項用於指定日誌記錄級別。在我們的例子中,我們將其設定為除錯。
&用於在啟用日誌記錄後返回命令提示符。

啟用日誌記錄後啟動 Docker 程序後,您現在還將看到除錯日誌傳送到控制檯。

現在,如果您執行任何 Docker 命令,例如docker images,除錯資訊也將傳送到控制檯。

容器日誌記錄
在容器級別也可以使用日誌記錄。因此,在我們的示例中,讓我們首先啟動一個 Ubuntu 容器。我們可以使用以下命令來完成。
sudo docker run –it ubuntu /bin/bash

現在,我們可以使用docker log 命令檢視容器的日誌。
語法
Docker logs containerID
引數
containerID − 這是您需要檢視其日誌的容器的 ID。
示例
在我們的 Docker 主機上,讓我們發出以下命令。在此之前,您可以在容器中發出一些命令。
sudo docker logs 6bfb1271fcdd
輸出

從輸出中,您可以看到在容器中執行的命令顯示在日誌中。
Docker - Compose
Docker Compose用於將多個容器作為單個服務執行。例如,假設您有一個需要 NGNIX 和 MySQL 的應用程式,您可以建立一個檔案,該檔案將這兩個容器作為服務啟動,而無需單獨啟動每個容器。
在本章中,我們將瞭解如何開始使用 Docker Compose。然後,我們將瞭解如何使用 Docker Compose 啟動並執行一個帶有 MySQL 和 NGNIX 的簡單服務。
Docker Compose ─ 安裝
要啟動並執行 Docker Compose,需要遵循以下步驟。
步驟 1 − 使用以下命令從github下載必要的檔案 -
curl -L "https://github.com/docker/compose/releases/download/1.10.0-rc2/dockercompose -$(uname -s) -$(uname -m)" -o /home/demo/docker-compose
上述命令將下載 Docker Compose 的最新版本,在撰寫本文時為1.10.0-rc2。然後將其儲存在/home/demo/目錄中。

步驟 2 − 接下來,我們需要使用以下命令為下載的 Docker Compose 檔案提供執行許可權 -
chmod +x /home/demo/docker-compose

然後,我們可以使用以下命令檢視compose版本。
語法
docker-compose version
引數
version − 這用於指定我們想要Docker Compose版本詳細資訊。
輸出
將顯示 Docker Compose 的版本詳細資訊。
示例
以下示例顯示瞭如何獲取docker-compose版本。
sudo ./docker-compose -version
輸出
然後您將獲得以下輸出 -

建立您的第一個 Docker-Compose 檔案
現在讓我們繼續建立我們的第一個 Docker Compose 檔案。所有 Docker Compose 檔案都是 YAML 檔案。您可以使用 vim 編輯器建立一個。因此,執行以下命令以建立compose檔案 -
sudo vim docker-compose.yml

讓我們仔細看看此檔案的各種詳細資訊 -
database和web關鍵字用於定義兩個獨立的服務。一個將執行我們的mysql資料庫,另一個將是我們的nginx Web 伺服器。
image關鍵字用於為我們的mysql和nginx容器指定來自dockerhub的映象。
對於資料庫,我們使用 ports 關鍵字來提及需要為mysql公開的埠。
然後,我們還為mysql指定了執行mysql所需的環境變數。
現在讓我們使用以下命令執行我們的 Docker Compose 檔案 -
sudo ./docker-compose up
此命令將獲取您本地目錄中的docker-compose.yml檔案並開始構建容器。

執行後,所有映象將開始下載,容器將自動啟動。

當您執行docker ps時,您可以看到容器確實已啟動並正在執行。

Docker - 持續整合
Docker 與許多持續整合工具整合,其中還包括流行的 CI 工具Jenkins。在 Jenkins 中,您可以使用可用於處理容器的外掛。因此,讓我們快速瞭解一下 Jenkins 工具可用的 Docker 外掛。
讓我們一步一步地看看 Jenkins 中為 Docker 容器提供了什麼。
步驟 1 − 轉到您的 Jenkins 儀表板並點選管理 Jenkins。

步驟 2 − 轉到管理外掛。

步驟 3 − 搜尋 Docker 外掛。選擇 Docker 外掛並點選無需重啟即可安裝按鈕。

步驟 4 − 安裝完成後,轉到 Jenkins 儀表板中的作業。在我們的示例中,我們有一個名為Demo的作業。

步驟 5 − 在作業中,當您轉到構建步驟時,您現在可以看到啟動和停止容器的選項。

步驟 6 − 作為一個簡單的示例,您可以選擇在構建完成後停止容器的進一步選項。然後,點選儲存按鈕。

現在,只需在 Jenkins 中執行您的作業即可。在控制檯輸出中,您現在將能夠看到已執行停止所有容器的命令。

Docker - Kubernetes 架構
Kubernetes 是一個用於 Docker 容器的編排框架,它有助於將容器作為服務公開給外部世界。例如,您可以有兩個服務 - 一個服務包含nginx和mongoDB,另一個服務包含nginx和redis。每個服務都可以有一個 IP 或服務點,其他應用程式可以透過該服務點連線。然後使用 Kubernetes 來管理這些服務。
下圖以簡化的格式顯示了 Kubernetes 從架構角度的工作原理。

minion是所有服務執行的節點。您可以同時執行許多 minion。每個 minion 將承載一個或多個 POD。每個POD都像託管一個服務一樣。然後,每個 POD 包含 Docker 容器。每個 POD 可以託管一組不同的 Docker 容器。然後使用代理來控制將這些服務公開給外部世界。
Kubernetes 的架構中包含多個元件。下面解釋了每個元件的作用 &mius;
etcd − 此元件是一個高可用的鍵值儲存,用於儲存共享配置和服務發現。在這裡,各種應用程式將能夠透過發現服務連線到服務。
Flannel − 這是容器所需的後臺網路。
kube-apiserver − 這是一個 API,可用於編排 Docker 容器。
kube-controller-manager − 用於控制Kubernetes 服務。
kube-scheduler − 用於在主機上排程容器。
Kubelet − 用於透過清單檔案控制容器的啟動。
kube-proxy − 用於向外部世界提供網路代理服務。
Docker - Kubernetes 的工作原理
在本章中,我們將瞭解如何透過kubeadm安裝Kubenetes。這是一個有助於安裝 Kubernetes 的工具。讓我們一步一步地學習如何安裝 Kubernetes。
步驟 1 − 確保您正在使用的Ubuntu 伺服器版本為16.04。
步驟 2 − 確保您生成了一個可用於ssh登入的ssh金鑰。您可以使用以下命令執行此操作。
ssh-keygen
這將在您的主資料夾中生成一個金鑰,如下所示。

步驟 3 − 接下來,根據您擁有的 Ubuntu 版本,您需要將相關站點新增到docker.list(用於apt 包管理器),以便它能夠從kubernetes站點檢測Kubernetes 包並相應地下載它們。
我們可以使用以下命令來完成。
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo "deb http://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/docker.list
步驟 4 − 然後,我們發出一個 apt-get update 以確保所有包都下載到 Ubuntu 伺服器上。

步驟 5 − 按照前面章節的詳細說明安裝 Docker 軟體包。
步驟 6 − 現在是時候安裝Kubernetes了,安裝以下軟體包 −
apt-get install –y kubelet kubeadm kubectl kubernetes-cni


步驟 7 − 所有Kubernetes軟體包下載完成後,可以使用以下命令啟動 Kubernetes 控制器 −
kubeadm init

完成後,您將收到一條成功訊息,表明主節點已啟動並執行,節點現在可以加入叢集。