分享程式代碼相關筆記
目前文章總數:223 篇
最後更新:2026年 03月 14日
0023. Jenkins 如何在限制中完成自動化 : 動態讀取 Git JSON 機器清單的 Jenkins 佈署方案,中出現的延伸問題
建置過程出現以下錯誤:
docker: Error response from daemon: invalid mount config for type "bind": bind source path does not exist: /var/dockervolumes/GetDockerContainerEnvironmentParameterExample/appsettings.json.
依照描述,會推論檔案不存在於 /var/dockervolumes/GetDockerContainerEnvironmentParameterExample/appsettings.json
到目標主機檢查,確認檔案也存在,因此不可能是 ** not exist**
ls /var/dockervolumes/GetDockerContainerEnvironmentParameterExample/appsettings.json
這屬於 Snap 版 Docker 的路徑掛載陷阱
Ubuntu 等系統若透過 snap install docker 安裝,Docker 會運行在沙盒環境中,受限於 AppArmor 政策,無法直接掛載 /var 或 /home 以外的非標準系統路徑。
通常實務上會避免 避開 Snap 或 Flatpak。雖然它們安裝方便 但常常會有非預期的問題
解除安裝 Snap 版本,並依照 Docker 官方文件 (Docker Engine) 的方式透過 apt-get 安裝。
1. 解除安裝 snap docker:
sudo snap remove docker
2. 安裝官方 Docker
curl -fsSL https://get.docker.com | sh
3. 啟動 Docker 進程
sudo systemctl start docker
4. 檢查是否正確啟動
docker info | grep "Docker Root Dir"
最終,若成功安裝會出現 Server: Docker Engine …
再次重新部署,可以發現恢復正常,不再報錯,官方 docker 可以正常訪問 /var 路徑下的資料夾