banner
冷板凳

冷板凳

🚀探索笔记和效率工具
twitter
telegram

輕鬆上手 Docker 個人部署案例及初學者實用技巧

image

什麼是 Docker#

Docker 就像一個中央食堂,匯集了來自世界各地開發者的預製菜。你想要運行什麼程序,就選擇相應的預製菜,就像點餐一樣簡單。

這些預製菜包含了程序運行所需的一切,包括軟體庫、工具和配置,就像一個完整的運行時環境。Docker 就像一個微波爐,只需將預製菜放進去,啟動加熱,就能輕鬆運行程序。

無論是開源軟體還是其他複雜程序,Docker 都能讓你一鍵啟動,無需擔心繁瑣的配置和環境搭建。

Docker 安裝#

Docker 有桌面客戶端,安裝相對而言比較簡單,Win 系統需要開啟 Hyper-V,下一步到完成。打開客戶端沒有報錯就表示安裝成功。

image

image

如果安裝過程遇到奇奇怪怪問題,有時需要考慮是否安裝的 win 盜版且阉割系統導致。

Docker 應用#

Docker 就像一個巨大的軟體倉庫,裡面存放著各種預製好的軟體包,就像微信小程序一樣,下載並運行就能使用。

我個人用到 Docker 有三個應用,Memos,Lobehub 和 Planka。

Lobehub 目前我使用過最好 Ai 集成工具之一,支持 Vercel 部署。本地如果安裝 Ollma,安裝一個 Docker 版 Lobe-Chat 是順其自然的事情。

image

image

Memos 輕量級筆記服務,像 Flomo 輕鬆捕捉和分享你的精彩想法,可以當做離線朋友圈使用。

image

有些比較散碎文字,記錄在 Memos,當可以構成一篇文章時,將碎片轉到 Obsidian 整合創作。

這款 Trello 開源版的看板工具 Planka,旨在滿足個人和團隊的項目管理需求。它具有與 Trello 類似的功能,包括看板、列表和卡片,但它是自托管的,這意味著你可以完全控制您的數據和隱私。

image

image

Docker 小技巧#

我不需要熟練使用 Docker 桌面客戶端,通常我只是打開,看看容器是否啟動,僅此而已。

大部分操作使用命令,然而在我實際工作中,使用它們不超過五條。

我嘗試使用客戶端,比如刪除,拉取等操作,能用,但不好用,容易出現各種小問題。

我個人琢磨最佳方式:幾條常用命令 + 客戶端可視化相結合。

Docker 拉取並啟動項目

以 lobehub 為例,在開發者 GitHub 項目中找到 Docker 安裝鏈接。

第一條命令,拉取鏡像👇

Docker pull lobehub/lobe-chat

image

打開 CMD,複製粘貼鏈接地址,敲回車。

image

項目安裝好之後,需要啟動,即 下載鏡像 → 啟動容器。汽車需要啟動才會動,如果你不想推它上路的話。

第二條命令,啟動容器👇

Docker run -d -p 3210:3210 lobehub/lobe-chat

Docker 方便之處在於提升 lucky 值,對於普通人而言,Docker 已經降低了使用需要各種系統環境及各種配置的難點。

通常兩條命令即可完成一個項目拉取,啟動。

此時打開 Docker 桌面客戶端,看看容器是否正常啟動,點擊鏈接就能用啦🎉

image

離線使用 Memos 記錄閃念,用 LobeHut + Ollama 大模型進行文本生成和翻譯,用 Planka 整理計劃。

通過將本地端口映射到公網,並使用內網穿透技術,你可以從任何地方(家裡、手機、其他電腦)訪問你的 Docker 項目。

如果你想從辦公室以外的地方訪問你的 Docker 項目,你需要使用內網穿透,並且你的辦公室電腦必須始終開機。

我習慣在本地使用 Docker,如果需要外網訪問,則會使用 Vercel 或其他免費雲端部署方案。

Docker 項目更新和卸載

Docker 核心價值在於免費,離線,安全。但它也有一個很大的劣勢,項目更新,數據遷移等問題。

比如項目上游有更新,Docker 如何同步?當你需要換電腦時,本機存在項目數據該如何遷移到另外一台電腦?如何乾淨清爽卸載項目?

當項目上游有更新,通常會在項目應用內提示。先把容器停止移除,然後在鏡像上拉取上游更新到本地,重新部署,啟動容器。

停止移除容器,我們可以在 Docker 客戶端操作,也可以使用命令,使用命令你需要知道容器名稱。

使用客戶端停止刪除容器,簡單直觀,看圖標就曉得了。

image

使用命令行停止刪除容器,先看看有哪些容器,確定下容器名稱,再停止刪除。

Docker ps -a

image

停止並刪除容器命令,以 memos 為例。

Docker stop memos & Docker rm memos

客戶端和命令操作都可以,兩者取其一。

同樣更新項目鏡像方式可以使用桌面客戶端按鈕或者使用命令。

如使用命令就是上文中的第一條拉取命令。

如使用客戶端更新,點擊該鏡像文件的 Pull。

image

當下載新版本之後,舊版本鏡像可以刪除(Docker 鏡像 pull 後生成新鏡像而不是覆蓋原有鏡像)

現在我們需要重新啟動容器,記住,這個操作不要使用客戶端方式,請使用命令啟動容器,比如上文中的第二條啟動容器命令

如此一來,項目就更新到最新版本與上游同步,通常舊的記錄都會在,建議更新前備份數據。比如 memos 有筆記導出功能。

image

讓項目容器隨 Docker 啟動而啟動

一切順利的話,想必你已經愉快玩耍起來了。

當你下班關機,第二天開機之後發現,有些程序無法運行。那是因為容器沒有隨著 Docker 啟動而啟動。

此時手動打開 Docker 客戶端,選擇容器,點擊啟動按鈕即可。但每次開機都要手動點火,未免太麻煩,希望容器可以隨 Docker 一起啟動。

兩條命令搞定。

首先我們需要判斷該容器是否設置為開機自啟,如果是為 “Always”,如不是為 “no”,以 memos 為例👇

Docker inspect -f "{{ .HostConfig.RestartPolicy.Name }}" memos

image

如果是 no,就執行下一條命令,設置隨機啟動。

Docker update --restart always memos

然後再運行上一條命令,檢查是否設置成功,“Always” 即成功設置。

Docker 命令擴展#

隨著 Docker 使用的深入,越來越多的命令和操作會讓人感到困惑。若不能將這些命令和操作有效地組織起來,就會形成碎片化的知識,導致 Docker 難以掌握和使用。

我個人處理方式,把命令分門別類保存。這不,使用 Docker 搭建的 Planka 不就派上用場了嗎。

image

在 Docker 搭建項目,應當是日常使用頻率較高的應用。

此外,定期清理不必要的鏡像和容器至關重要。鏡像是容器的底層基礎,而容器則是運行中的實例。過多的未使用鏡像和容器會佔用大量存儲空間,並可能減慢系統速度。

因此,避免安裝了很多不常用的項目,造成無端消耗電腦性能。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。