這是一篇問題與答案的組合文章,是由我和 Gemini 對談的內容所構成。其實是有關一直以來我對於工作場合上遇到的,想不透的事情,所提出的問題。這些問題主要是針對 Docker 網路的基本概念,涉及的是 Macvlan 這個蠻重要的東西 (網路驅動程式)。
這是一篇問題與答案的組合文章,是由我和 Gemini 對談的內容所構成。其實是有關一直以來我對於工作場合上遇到的,想不透的事情,所提出的問題。這些問題主要是針對 Docker 網路的基本概念,涉及的是 Macvlan 這個蠻重要的東西 (網路驅動程式)。
我要做一個範例,請 Claude 幫我生成。
很簡單,使用Docker,用 GO 語言,儘量用 1.25 版。然後 Docker 基底可以使用 alpine 或 Ubuntu。Docker 有一個 volume,可以放 SQLite 資料庫。
然後用 Gin 寫一個 Web 應用,曝露 port 是 8080。
程式很簡單,有一個簡單的首頁,讓你輸入帳號和密碼。資料庫也很簡單,三個欄位:1. id:自動新增的 int,2. name : varchar(20),3. password:varchar,存加密後的密碼。
底下有一個 URL,跳到另一個畫面:新增帳號,有三個輸入方塊:帳帳和兩個密碼。
程式要讓兩個密碼相同才能接受,然後自動跳到首頁。
密碼要加密。
首頁只做一件事,從資料庫中查找帳號、密碼(不用解碼,也可像用 MD5 對照)是否在其中。符合就跳出一個畫面,上面只有四個字在正中央:歡迎光臨。
然後必須把 Docker file 也做好。如果有 Docker Compose File 更好了。
一般來說,我們在VMware建立一個VM,只須在VM中安裝VMware Tools,應該可以使用共享資料夾的功能。共享資料夾可以成為VM和Host OS之間共享檔案,這個功能很重要。但是,偶而就是會出怪事,即使你安裝了VMware Tools,在Virtual Machine Settings...也把Shared Folder加上了,但是就是連不上,這該怎麼辦呢?以下是Gemini的回答:
這是在 VMware 上使用 Linux 虛擬機(尤其是像 Kubuntu 這種基於 Ubuntu 的發行版)時非常常見的問題。雖然 VMware Tools 已經安裝,但現代 Linux 系統通常不會在開機時自動執行掛載指令,或者掛載點沒有被正確建立。
你可以按照以下步驟排查並解決:
首先,確認系統是否有偵測到 VMware 的共享資料夾功能。請在 Kubuntu 的終端機執行:
lsmod | grep vmw_gfshg
如果沒有輸出,表示模組沒載入。不過通常安裝好 open-vm-tools 後,關鍵在於掛載指令。
在自動化之前,我們先確認能不能手動掛載。請執行:
# 建立掛載點(如果還沒建立)
sudo mkdir -p /mnt/hgfs
# 執行掛載指令
sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
執行完後,檢查 /mnt/hgfs 資料夾。如果你看見了你在 Setting 中設定的資料夾名稱,那表示硬體與驅動層面是沒問題的,純粹是自動掛載失效。
要讓它每次開機都自動出現,最穩定的做法是修改 /etc/fstab:
使用編輯器開啟檔案:
sudo nano /etc/fstab
在檔案最後面加入這行:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,defaults 0 0
存檔離開(Nano 請按 Ctrl+O 再 Enter,然後 Ctrl+X)。
主要有幾個常見原因:
套件衝突: 現在大多數 Linux 發行版建議使用官方開源的 open-vm-tools-desktop,而不是 VMware 選單裡那個舊版的「Install VMware Tools」ISO。如果你是手動執行 .pl 安裝檔,有時會與系統內建的驅動衝突。
掛載點缺失: VMware Tools 預期掛載在 /mnt/hgfs,但 Ubuntu 體系的系統預設不會建立這個資料夾。
FUSE 權限: 共享資料夾是透過 FUSE 技術掛載的,如果沒有加上 allow_other 參數,有時候一般使用者權限會看不到內容。
如果你發現 /mnt/hgfs 裡面是空的,但指令都沒報錯,可以試著在進入桌面後執行 vmware-user-suid-wrapper,這有助於初始化桌面環境下的共享服務。
通常完成 /etc/fstab 的修改並重啟後,問題就能徹底解決。
這是一篇問題與答案的組合文章,是由我和 Gemini 對談的內容所構成。其實是有關一直以來我對於工作場合上遇到的,想不透的事情,所提出的問題。這些問題主要是針對 Docker 網路的基本概念,涉及的是 Macvlan 這個蠻重要的東西 (網路驅動程式)。