在 Linux 上安裝 Docker 和 Portainer
並非所有東西都應該直接存在於您的作業系統上。 像SQL Server這樣的工具會佔用大量資源,並且在裸機上運行意味著即使在不需要時這些資源也會被消耗。 容器解決了這個問題:您在需要時啟動一個,當不需要時停止它。 Docker是驅動此工作流程的引擎,而Portainer是輕量級的GUI,可以讓您在不記住一整套CLI命令的情況下進行管理。
此細分基於Tim Corey's Linux開發系列,詳細說明在Ubuntu上的完整設定:註冊apt儲存庫,設置引擎,對於個人裝置移除sudo要求,並部署Portainer CE作為持久性的容器。
步驟1:添加Docker的apt儲存庫
[3:10 - 6:00] 在可以通過apt安裝Docker之前,您需要註冊Docker的套件來源並讓您的系統信任它。 Docker提供了一個可以一次粘貼的可複製命令塊來處理所有這些操作。 前往docs.docker.com,導航到安裝部分,然後選擇Ubuntu。 "使用apt儲存庫安裝"下方的命令就是您想要的。
該區塊按順序執行多個操作:它安裝所需的證書工具,下載Docker的官方GPG密鑰,調整其權限,並將儲存庫地址寫入您的apt來源列表中。通過從文檔中復制並粘貼到終端中的Ctrl+Shift+V來一次運行整個塊。
一個需要強調的重要點:不要盲目地添加新的套件來源。 在安裝其證書之前,先驗證您信任該來源。 Docker是值得信任的,但這一原則適用於您添加的每個來源。 這種方法實際上比許多套件管理器預設的做法更嚴格,這是一個特性,而不是一個複雜性。
步驟2:安裝Docker引擎
[6:00 - 7:10] 註冊儲存庫後,安裝Docker是一個單一的apt命令:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
當提示時確認,apt會處理下載和安裝。 Docker被配置為在啟動時自動啟動,因此每次重啟後它都會在後台運行而不需要任何額外步驟。
為了確認一切正常,運行hello-world容器:
sudo docker run hello-world
sudo docker run hello-world
Docker提取映像,執行並打印確認訊息。 該輸出表示您的安裝正常運行。 hello-world容器設計為運行一次並退出; 它純粹存在於驗證引擎是否在回應。
步驟3:無需sudo運行Docker(僅個人機器)
[7:45 - 10:30] 默認情況下,Docker命令需要sudo,因為管理容器是一個特權操作。 在共享伺服器或生產機器上,保持此設置不變。 對於您自己控制的個人開發機器,將自己添加到docker組可移除前綴:
sudo usermod -aG docker $USER
sudo usermod -aG docker $USER
-aG將當前帳戶附加到它。 大小寫很重要:$USER必須為大寫。 變更只有在您登出並重新登錄後才生效; 全面系統重啟通常比簡單登出更可靠以正確應用群組成員資格。 一旦這樣做後,sudo的情況下運行。
這是一個便利的妥協,而不是安全性的改進。 僅對於開發機器保留它。
步驟4:為Portainer創建一個卷
[11:30 - 12:45] 在啟動Portainer之前,創建一個命名卷以在容器重啟和替換之間持久存儲其數據:
docker volume create portainer_data
docker volume create portainer_data
容器設計為瞬态,銷毀一個將擦除其內部存儲的所有內容。 卷存在於容器生命周期之外,由Docker管理的路徑,因此即使您銷毀並重建它,Portainer的配置仍然有效。
步驟5:運行Portainer容器
[12:45 - 14:10] Portainer CE本身就是一個Docker容器。 完整的運行命令是:
docker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
docker run -d -p 9000:9000 --name portainer \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
分解:-d以分離方式運行容器,使其保持在後台。 -p 9000:9000暴露主機端口9000並將其路由到容器內部的匹配地址。 第一個-v掛載了Docker套接字,讓Portainer可以查看並控制其他容器和映像。 以這種方式連接插座使GUI能夠讀取和管理整個Docker環境。 第二個/data,以保持其狀態。
從portainer/portainer-ce提取(社區版)。 portainer.io網站以付費的Enterprise層級為主,但CE是免費的,完全適合本地和個人使用。
導航Portainer UI
[14:10 - 17:30] 容器啟動後,開啟瀏覽器並前往http://localhost:9000。 Portainer在第一次訪問時提示您創建管理員密碼; 必須至少12個字符。 登錄後,請通過快速設置向導而不添加額外的環境,然後從儀表板中選擇本地環境。
主頁視圖顯示了一個摘要:下載的映像,存在的容器,配置的網絡和使用的卷。 單擊每個部分即可獲得完整控制。 在映像下,您將看到hello-world和在安裝過程中執行的兩次提取中的Portainer CE映像。在容器中,兩次hello-world運行都顯示為停止狀態,Portainer本身則在運行中。
從容器面板中,您可以啟動、停止或刪除任何條目。 選擇一個容器並單擊日誌顯示其輸出。 hello-world條目顯示兩次運行時熟悉的問候語。 重啟容器並檢查其日誌可以確認新輸出附加在第一個之後。
卷會列出它們的掛載路徑。 /var/lib/docker/volumes/下的位置,這是引擎將所有命名卷數據存儲在磁碟上的地方。
為何選擇Portainer而不是Docker Desktop
[17:30 - 18:10] Docker Desktop附帶了一個GUI但攜帶了大量的開銷,這在Linux開發機中很重要,因為您希望系統資源可用於實際工作負載。 Portainer CE本身作為一個容器運行,消耗的記憶體和CPU要少得多。 它涵蓋了實際需要:瀏覽映像和容器,閱讀日誌,管理卷,啟動和停止服務,沒有繁重的負擔。
接下來的步驟
[17:50 - 18:30] 既然Docker和Portainer已經到位,該系列的下一步是在容器中運行SQL Server。 單個docker run命令提取映像並啟動實例。 從Portainer的容器面板中,您可以在會話結束時停止它,並在需要時重新啟動它。 此模式同樣適用於Redis和其他基礎設施工具,持續運行代價高昂但容器化簡單。
結論
[18:30 - 結束] 總結:使用GPG密鑰註冊Docker的apt儲存庫,通過localhost:9000提供了一個GUI,可以在不觸及CLI的情況下完成管理Linux上的容器的日常工作。
