如何在 Debian 12、11 或 10 上安裝 Docker

Docker 之所以迅速流行,是因為它能夠透過容器化應用程式來簡化部署流程,確保跨多個環境的一致性。其輕量級特性和高效擴展能力使其成為開發人員和 IT 專業人士的最愛。

  • 可移植性:Docker 容器可以在任何支援 Docker 的系統上運行,確保您的應用程式在不同環境中無縫運行。
  • 隔離:每個容器獨立運行,減少衝突風險,更容易管理依賴關係。
  • 效率:容器共享主機作業系統內核,使其比傳統虛擬機器更有效率。
  • 可擴展性:Docker 允許輕鬆擴展應用程序,透過新增或刪除容器來適應不同的負載。
  • 版本控制:輕鬆追蹤變更並回滾到先前的版本,從而增強開發和部署工作流程。

Debian 是與 Docker 配對的首選,原因如下:

  • 穩定:Debian 以其強大和可靠的特性而聞名,它確保了 Docker 容器的穩定基礎。
  • 安全:定期更新和對安全性的高度關注使 Debian 成為部署應用程式的安全環境。
  • 社區支持:大型活躍社群提供廣泛的文件和支持,使故障排除變得更加容易。
  • 表現:輕量且高效,Debian 確保 Docker 容器以最小的開銷平穩運作。

介紹完畢後,我們來探討如何在 Debian 上安裝 Docker,利用終端命令和各種方法來讓您的環境高效啟動和運行。

Docker 預先安裝步驟

在 Debian 系統上設定 Docker CE 既簡單又細緻。在深入研究安裝過程之前,讓我們為無錯誤執行做好準備。

第 1 步:刪除先前的 Docker 實例

筆記: 如果您沒有從 Debian 儲存庫安裝預設版本的 Docker,請跳過刪除步驟。

首先,我們必須清除所有預先存在的 Docker 安裝,以確保無衝突的環境。先前的 Docker 版本可能會幹擾我們即將進行的安裝並導致意外錯誤。使用以下命令卸載較舊的 Docker 迭代(如果存在):

sudo apt remove docker docker-engine docker.io containerd runc

如果沒有舊的 Docker 實例需要刪除, apt 套件管理器將傳回一則訊息,指示沒有要卸載的內容。

請記住,卸載 Docker 不會自動刪除通常儲存在其中的 Docker 映像、容器、磁碟區或網絡,這一點至關重要。 /var/lib/docker/。如果您打算重新開始並刪除所有與 Docker 相關的數據,請使用以下命令:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

這樣,您就清除了任何可能影響安裝過程的潛在 Docker 殘留物。

步驟 2:在安裝 Docker 之前更新 Debian 軟體包

刪除較舊的 Docker 版本後,下一步應確保您的 Debian 系統已完全更新。更新可以提高系統穩定性並確保您的系統軟體包處於最新版本,從而最大限度地減少潛在的衝突和漏洞。

若要更新可用軟體包清單並升級已安裝的軟體包,請執行以下命令:

sudo apt update && sudo apt upgrade

該命令將首先刷新可用套件的清單(apt update),然後升級所有過時的軟體包(apt upgrade).

導入 Docker CE APT 儲存庫

若要成功安裝 Docker CE,必須設定 Debian 系統以存取 Docker 儲存庫。這涉及將 Docker 儲存庫整合到您的系統中並導入相應的 GPG 金鑰。這些步驟可確保下載的 Docker 軟體套件的真實性並降低未經授權變更的風險。

第 1 步:安裝 Docker CE 的初始套件

最初,系統可能缺少此過程所需的軟體包。讓我們透過安裝它們來糾正這個問題。執行以下命令來安裝這些關鍵軟體包:

sudo apt install ca-certificates curl gnupg lsb-release dirmngr software-properties-common apt-transport-https

在這裡,您正在利用 apt 套件管理器用於安裝各種工具,例如 ca-certificates 用於證書驗證, curl 傳輸數據, gnupg 用於密鑰管理以及此流程所需的其他內容。

步驟 2:新增 Docker CE GPG 金鑰

安裝所需的軟體包後,讓我們匯入 Docker GPG 金鑰。此金鑰可讓您的系統驗證從 Docker 儲存庫下載的套件的完整性。

使用以下命令下載並儲存 GPG 金鑰:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

curl 命令從 Docker 儲存庫中取得 GPG 金鑰,然後由 gpg --dearmor 將其轉換為二進位格式 apt 需要。

步驟3:新增Docker CE APT儲存庫

準備好 GPG 金鑰後,您現在可以匯入 Docker 儲存庫。這是完成該任務的命令:

echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
 $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

這個看起來很複雜的指令將 Docker 儲存庫新增到系統的來源清單中,並將其連結到先前下載的 GPG 金鑰。此連結驗證從 Docker 儲存庫下載的套件的完整性,確保您的系統安全。

完成 Docker 安裝

本節概述了在 Debian 系統上安裝 Docker CE 的必要步驟。您將了解如何更新系統的儲存庫資訊、安裝 Docker 以及透過執行測試 Docker 映像來驗證安裝。此外,本節還包括一個重要的安全實踐,以確保安全處理 Docker 容器和映像。

步驟 1: 匯入 Docker CE 儲存庫後更新 Debian APT 快取

在開始 Docker 安裝之前,請確保系統的儲存庫資訊是最新的是有利的,特別是對於最近新增的 Docker 儲存庫。若要更新儲存庫信息,請執行以下命令:

sudo apt update

此命令刷新系統的軟體包列表,包括有關最新版本的軟體包及其相依性的詳細資訊。

步驟2:透過APT指令安裝Docker

更新系統的儲存庫資訊後,您可以繼續安裝 Docker。以下是安裝 Docker 以及一些可增強 Docker 體驗的附加插件的命令:

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

在此命令中,您將安裝 docker-ce (Docker社群版), docker-ce-cli (Docker 命令列介面), containerd.io (業界標準運行時),以及兩個有用的 Docker 插件,用於建立映像和管理多容器應用程式。

步驟 3:驗證 Debian 上的 Docker CE 安裝

完成 Docker 安裝後,透過執行測試 Docker 映像來謹慎驗證其安裝是否正確:

sudo docker run hello-world

該指令拉取 hello-world 來自 Docker 儲存庫的映像,從此映像建立一個新容器,並運行該容器。執行時,它會列印一條歡迎訊息,從而確認 Docker 正在按預期運行。

第 4 步:以非 root 使用者身分執行 Docker

出於安全原因,將 Docker 配置為以非 root 使用者身分執行。這種做法可以保護您的系統免受可能造成損害的意外或惡意變更。後面的部分將更深入地討論這方面。

Docker 故障排除技巧

在與 Docker 容器和映像互動時,如果遇到任何問題,系統重新啟動可能有助於解決這些問題,特別是與路徑生成相關的問題。若要重新啟動系統,請使用下列命令:

reboot

透過 Systemd 管理 Docker

本部分將探討如何使用 systemd 操作 Docker 服務。 Systemd 是許多 Linux 發行版(包括 Debian)的基本元件,並提供管理系統流程和服務的功能。由於 Docker 在 Debian 系統上安裝了 systemd 單元,因此這提供了管理 Docker 服務的有效方法。

透過systemd啟動Docker服務

要使用 Docker,該服務必須在您的 Debian 系統上主動運作。 Systemd 透過以下命令來實現這一點:

systemctl start docker.service

此命令啟動 Docker 服務並將其配置為在系統啟動時自動啟動,確保每次啟動後其可用性。

透過systemd停止Docker服務

在某些情況下,您可能想要停止 Docker 服務。 Systemd 提供了一個簡單的命令來完成此操作:

systemctl stop docker.service

此命令會停止 Docker 服務並阻止其在下次系統啟動時自動啟動。

透過systemd重啟Docker服務

您有時可能需要重新啟動 Docker 服務,尤其是在排除 Docker 相關問題時。 Systemd 提供了使用以下命令重新啟動 Docker 服務的功能:

systemctl restart docker.service

此命令停止並啟動 Docker 服務,有效應用最新的配置。

透過systemd檢查Docker服務狀態

若要檢查 Docker 服務的運作狀態,無論是執行、停止或不活動,可以使用以下 systemd 指令:

systemctl status docker.service

此指令會取得並顯示 Docker 服務的目前狀態,從而深入了解其運作狀況。

透過 systemd 在 Debian 系統啟動時啟用 Docker 服務

如果您希望 Docker 服務在系統啟動時自動啟動,那麼透過 systemd 啟用它是首選方法:

systemctl enable docker.service

此命令將 Docker 服務設定調整為在每次系統啟動時自動啟動,從而提供 Docker 功能的持續可用性。

透過 systemd 在系統啟動時停用 Docker 服務

如果您決定不在系統啟動期間自動啟動 Docker 服務,systemd 可以使用以下命令滿足此要求:

systemctl disable docker.service

此命令會變更 Docker 服務設置,防止其在系統啟動時自動啟動。

利用 systemd 指令,您可以有效管理 Debian 系統上的 Docker 服務,進而對 Docker 的操作行為提供高度控制。以下部分將深入探討有關使用和管理 Docker 容器和映像的更多細節。

如何配置 Docker 的範例

在本指南部分中,我們將深入研究 Docker 配置的設定。這包括以非 root 使用者身分管理 Docker(這可以增強安全性),以及更改預設日誌記錄驅動程式以更好地滿足您的需求。

第 1 步:以非 root 使用者身分執行 Docker

雖然您可以以 root 使用者身分執行 Docker,但不鼓勵這樣做,因為存在潛在的安全風險以及對 Debian 主機系統的意外修改。相反,應在非 root 使用者帳戶下管理 Docker 操作以增強安全性。

若要建立專門用於 Docker 管理的新用戶,請執行以下命令:

sudo useradd -m dockeruser
sudo usermod -aG docker dockeruser

這些命令會建立一個名為「dockeruser」的新用戶,並將該用戶附加到 Docker 群組。作為 Docker 群組的成員,使用者將獲得運行 Docker 命令所需的權限。

如果您希望將目前使用者指派到 Docker 群組,請將「dockeruser」替換為您的使用者名稱。例如,對於名為「joshua」的用戶,指令為:

sudo usermod -aG docker joshua

進行這些變更後,登出並重新登入以套用修改。有時,您可能需要重新啟動系統才能傳播這些變更。

若要確認使用者有權執行 Docker 命令,請使用下列命令:

docker ps

該命令應顯示正在運行的 Docker 容器的列表,表示安裝成功。

步驟2:修改預設的Docker日誌驅動程式

預設情況下,Docker 以 JSON 檔案格式記錄事件。儘管如此,Docker 的靈活性可讓您將預設日誌記錄驅動程式變更為不同的格式,甚至將其配置為將日誌轉送至遠端日誌管理系統。

要修改預設日誌記錄驅動程序,您需要建立一個名為的新文件 daemon.json 在裡面 /etc/docker/ 目錄。使用文字編輯器(例如 nano)執行以下命令:

sudo nano /etc/docker/daemon.json

文件打開後,將以下內容貼到其中:

{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "tcp://logs.example.com:514",
    "syslog-facility": "daemon",
    "tag": "{{.Name}}"
  }
}

Docker 在此配置中使用 syslog 驅動程序,並將日誌中繼到遠端 syslog 伺服器。將logs.example.com 替換為您的系統日誌伺服器的位址。

配置到位後,使用以下命令重新啟動 Docker 守護程式以套用新的日誌記錄驅動程式設定:

sudo systemctl restart docker.service

請記住對以下內容所做的任何修改 daemon.json 檔案需要重新啟動 Docker 守護程式才能套用變更。

Docker 命令範例

在本部分中,我們深入研究 Docker 命令的使用,這些命令在有效管理 Docker 容器、映像、網路和磁碟區方面發揮著至關重要的作用。這 docker command 提供了一個強大且多功能的工具集,旨在簡化和自動化 Docker 環境中的任務。

Docker 指令基礎知識

熟悉 Docker 命令列介面 (CLI) 對於掌握 Docker 至關重要。以下是您在 Docker 之旅中經常遇到的各種指令:

  • docker run:從映像啟動新容器。
  • docker ps:顯示目前所有正在運行的容器。
  • docker images:列出所有本地可用的圖像。
  • docker build:從 Dockerfile 建置新映像。
  • docker stop:停止目前正在運作的容器。
  • docker rm:消除容器。
  • docker rmi:刪除影像。
  • docker network:管理 Docker 網路。
  • docker volume:管理 Docker 磁碟區。

每個命令都有一組獨特的選項,可讓您修改其行為以滿足您的需求。讓我們探討每個命令及其各自的選項。

碼頭運行 命令

docker run 命令從指定的鏡像建立一個新的容器。例如,要從 Debian 映像啟動容器並在其中開啟互動式 shell,請使用以下命令:

docker run -it debian:latest /bin/bash

碼頭工人 命令

docker ps 部署命令以登記所有目前活動的容器。它揭示了有關每個容器的有價值的信息,包括容器 ID、關聯的映像和運行狀態。要取得所有正在運行的容器的列表,只需鍵入:

docker ps

docker 圖片 命令

docker images 命令的任務是列出所有本機可用的 Docker 映像。它會傳回有關每個圖像的信息,包括其 ID、關聯的存儲庫和標籤:

docker images

碼頭工人建構 命令

docker build 命令用於從 Dockerfile 建立新的 Docker 映像。 Dockerfile 本質上是一個包含建置 Docker 映像指令的腳本。例如,要使用目前目錄中的 Dockerfile 建立名為「myimage」的新映像,您可以使用下列命令:

docker build -t myimage:latest .

泊塢站 命令

docker stop 命令正常終止正在運行的 Docker 容器。您可以使用其 ID 定位所需的容器。例如,要停止 ID 為「abcdefg」的容器,您可以使用:

docker stop abcdefg

碼頭工人 命令

使用 docker rm 刪除 Docker 容器的命令。像 stop 命令,指定要刪除的容器的容器 ID。例如:

docker rm abcdefg

docker rmi 命令

使用 docker rmi 刪除 Docker 映像的命令。透過 ID 識別要刪除的影像。例如:

docker rmi 1234567

碼頭網路 命令

docker network 命令是用於建立、列出和刪除 Docker 網路的多功能工具。例如,要建立一個名為「mynetwork」的新網絡,您可以使用:

docker network create mynetwork

泊塢窗卷 命令

最後, docker volume 指令提供管理 Docker 磁碟區的功能。例如,要建立一個名為“myvolume”的新卷,您可以使用:

docker volume create myvolume

導航 Docker 容器管理

有效管理 Docker 容器會顯著影響 Docker 環境的功能和壽命。 docker 指令提供了各種用於操作 Docker 容器的關鍵子指令。這些子命令方便容器的建立、操作、修改和刪除。無論您是經驗豐富的開發人員還是容器化初學者,了解這些命令都可以大大增強您的 Docker 互動。

Docker容器管理的核心指令

命令 docker ps 是 Docker 工具包中用來列舉所有正在運行的容器的重要工具。透過執行此命令,您可以查看所有活動容器及其對應的映像、狀態和唯一容器 ID。

docker ps

若要終止目前活動的 Docker 容器, docker stop 命令已部署。您附加要停止的容器的唯一 ID 或名稱。

docker stop abcdefg

docker rm 命令用於根除 Docker 容器。這個命令,就像 docker stop,接受容器的唯一 ID 或名稱作為參數。

docker rm abcdefg

需要注意的是,刪除容器會放棄所做的任何修改。您必須使用“docker commit”命令從修改後的容器建立新映像以保留變更。

使用 docker commit 保留容器更改

使用 Docker 容器時,您可能需要自訂容器並將這些變更保留為新映像。這可以使用以下方法來完成 docker commit 命令。

使用基礎映像啟動一個新容器,並在此容器內進行必要的變更。例如,考慮從 Debian 映像啟動新容器並在容器內開啟一個 shell:

docker run -it --name mycontainer debian:latest /bin/bash

您可以在這個新容器中執行各種任務,例如修改設定檔或安裝新軟體。進行所需的變更後,使用 docker commit 命令產生封裝這些變更的新圖像。若要使用「mycontainer」容器中所做的變更建立名為「myimage」的新映像,請執行下列命令:

docker commit mycontainer myimage:latest

您現在擁有一個名為「myimage」的映像,其中包含在「mycontainer」容器中所做的變更。使用此新映像產生和操作具有更新配置或軟體的新容器。

請記住,docker commit 命令僅保存對容器檔案系統所做的修改,而不保留網路和儲存的變更。如果需要保留網路和儲存中的更改,請考慮使用其他 Docker 命令,例如 docker network 和 docker volume。

包起來

在整個討論過程中,我們深入研究了在 Debian Linux 發行版上安裝和管理 Docker 社群版 (CE)。 Docker CE 帶來​​了容器化的所有優勢,讓開發人員在不同環境中建置、發布和運行分散式應用程式。此處討論的 Docker 命令和用例提供了管理 Docker 容器的基礎知識。雖然本文涉及了基本的 Docker 命令,例如 docker run, docker ps, docker rm, 和別的。

請記住,Docker 生態系統要廣泛得多,有許多命令和選項,您可以探索它們來微調您的 Docker 體驗。

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)

發佈留言