ubuntu安裝docker遇到權限問題

問題現象:

使用snap安裝的docker,執行docker build命令構建景象時報錯:
[+] Building 0.1s (1/1) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 2B 0.0s
ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory

分析說明:實際目錄下Dockerfile是存在的;

解決方案:優選步驟五,直接安裝官方原始版本docker;


🛠? 一、核心問題定位

  1. 路徑映射問題
    Snap 版 Docker 默認啟用 嚴格沙盒隔離,容器無法直接訪問宿主機的絕對路徑(如 /data/code)。

    • 錯誤 open Dockerfile: no such file or directory 表明 Docker 引擎未找到構建上下文中的 Dockerfile
    • 根本原因:Snap 限制了 Docker 對非 /home/tmp 目錄的訪問權限。
  2. 權限沖突風險
    即使使用 sudo,Snap 的沙盒規則仍可能阻斷非標準路徑的訪問,導致權限失效。


🔧 二、解決方案分步指南

? 步驟 1:確認 Dockerfile 位置與構建命令
# 確認當前目錄存在 Dockerfile
ls -la Dockerfile# 正確構建命令(指定路徑)
docker build -t xxx:latest .
  • 關鍵點
    • 確保終端當前目錄為 Dockerfile 所在目錄(/data/code/codehub/xxx-service)。
    • Dockerfile 不在當前目錄,需用 -f 指定路徑:
      docker build -t xxx -f /path/to/Dockerfile .
      
? 步驟 2:繞過 Snap 路徑隔離(2 選 1)
  • 方案 A:移動項目至 Snap 白名單路徑
    將代碼移至 /home/tmp 目錄再構建:

    mv /data/code/codehub/XXX-service ~/projects/  # 移至用戶目錄
    cd ~/projects/xxx-service
    docker build -t XXX .
    
  • 方案 B:解除 Snap 路徑限制(需謹慎)
    手動授權 Docker 訪問 /data 目錄:

    sudo snap connect docker:home :home         # 允許訪問所有 /home
    sudo snap connect docker:removable-media    # 允許訪問外部媒體(含 /data)
    sudo systemctl restart snap.docker.dockerd  # 重啟服務[citation:2]
    
? 步驟 3:修復用戶組權限(若方案 2 無效)
# 將當前用戶加入 docker 組
sudo usermod -aG docker $USER# 立即生效組權限(無需重啟)
newgrp docker# 驗證非 sudo 執行權限
docker run hello-world
  • 安全提示:加入 docker 組等效于賦予用戶 root 權限,僅限受信任賬戶操作。
? 步驟 4:檢查 Docker 服務狀態
# 確認 Snap 版 Docker 服務已運行
sudo snap services | grep docker# 重啟服務(若異常)
sudo snap restart docker
? 步驟 5:終極方案——改用官方源安裝(推薦)

若上述步驟無效,說明 Snap 版存在兼容性缺陷,建議 卸載 Snap 版 并改用 Docker 官方源:

# 卸載 Snap 版
sudo snap remove docker# 安裝官方 Docker
sudo apt-get update
sudo apt-get install docker.io# 重啟服務并加入用戶組
sudo systemctl restart docker
sudo usermod -aG docker $USER
newgrp docker

?? 三、避坑指南

問題現象原因解決命令/操作
ERROR: failed to solveDockerfile 路徑不可達移動項目至 /home 或解除沙盒限制
Got permission denied用戶未加入 docker 組sudo usermod -aG docker $USER
命令路徑指向 /snap/bin/dockerSnap 版與其他版本沖突卸載 Snap 版,改用 apt 安裝官方版[citation:3]

💎 總結建議

  1. 首選方案
    遷移項目至 /home 目錄 → 避免 Snap 沙盒限制(無需復雜配置)。
  2. 長期建議
    卸載 Snap 版 Docker → 官方源(docker.io)兼容性更佳,權限管理更靈活。
  3. 權限原則
    避免濫用 sudo chmod 666 /var/run/docker.sock(高危操作),優先通過用戶組授權。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86786.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在Linux系統中部署Java項目

1.在Linux中啟動mysql的服務: systemctl start mysql可以采用以下代碼查看狀態: systemctl status mysql如下圖展示綠色代表啟動成功 2.之后進入mysql mysql -uroot -p輸入自己的密碼,這里的密碼不會顯示,直接輸入即可 3.在DG中連接Linux的數據庫 4.修改配置文件…

C++洛谷P1002 過河卒

題目 鏈接:https://www.luogu.com.cn/problem/P1002 解析 這道題適用于了解動態規劃的同學。 變量初始化 初始化B點坐標(n, m)和馬的坐標(a, b) 初始化方向數組和動態規劃數組 long long dp[30][30]; int dx[8] …

BlogX項目Go-gin--根據IP獲取地理位置

先定義一個函數來判斷IP地址是否為內網,歸為工具類 // utils/ip/enter.go package ipimport "net"func HasLocalIPAddr(ip string) bool {return HasLocalIP(net.ParseIP(ip)) }// HasLocalIP 檢測 IP 地址是否是內網地址 // 通過直接對比ip段范圍效率更…

鴻蒙系統(HarmonyOS)應用開發之實現瀑布流圖片展示效果

項目概述 科技圖庫是一款基于鴻蒙系統(HarmonyOS)開發的高品質圖片瀏覽應用,專注于展示精選科技主題圖片。應用采用現代化的瀑布流布局,為用戶提供流暢、直觀的瀏覽體驗,讓科技之美盡收眼底。 主要功能 1. 瀑布流布…

【fish-speech】新模型openaudio-s1-mini嘗鮮

一、配置 顯卡:v100(測試簡短語句,顯存實際占用不足6G) 二、安裝測試 1. 安裝 1.1 下載源碼 git clone https://github.com/fishaudio/fish-speech.git1.2 安裝系統組件 apt install portaudio19-dev libsox-dev ffmpeg1.3 …

介紹Windows下的由Sysinternals開發的一些小工具

Sysinternals是一個開發了很多Windows下系統工具的公司,這些工具能極大地提高對Windows系統的深入認知。就像它的名字Sys(tem)internals,深入系統里面。這些工具都放在微軟的網站上可以下載到。https://learn.microsoft.com/en-us/sysinternals/ 下載網…

云服務器環境下Linux系統epoll機制與高并發服務器優化實踐

在當今云計算時代,云已成為企業部署高并發服務的首選平臺。本文將深入探討Linux系統核心的epoll機制如何賦能云環境下的高并發服務器,解析其底層工作原理與性能優勢,并對比傳統IO復用模型的差異,幫助開發者構建更高效的云端服務架…

Java爬蟲實戰指南:按關鍵字搜索京東商品

在電商領域,快速獲取商品信息對于市場分析、選品上架、庫存管理和價格策略制定等方面至關重要。京東作為國內領先的電商平臺之一,提供了豐富的商品數據。雖然京東開放平臺提供了官方API來獲取商品信息,但有時使用爬蟲技術來抓取數據也是一種有…

aspose.word在IIS后端DLL中高并發運行,線程安全隔離

aspose.word在IIS后端DLL中運行,加載很慢,如何為全部用戶加載,再每個用戶訪問時在各自線程中直接可以打開WORD文件處理 Aspose.Words 在 IIS 中優化加載性能方案 針對 Aspose.Words 在 IIS 后端 DLL 中加載緩慢的問題,我們可以通過單例模式預加載組件并結合線程安…

鏈表題解——回文鏈表【LeetCode】

一、算法邏輯(通順講解每一步思路) 我們從 isPalindrome 這個主函數入手: 步驟 1:找到鏈表的中間節點 middleNode 使用 快慢指針法(slow 和 fast) 快指針一次走兩步,慢指針一次走一步。 當快…

allegro 銅皮的直角邊怎么快速變成多邊形?

像這種: 變成這種: 解決方案: shape edit boundary 點擊鋪銅邊緣就能裁剪

從廚房到代碼臺:用做菜思維理解iOS開發 - Swift入門篇②

從廚房到代碼臺:用做菜思維理解iOS開發 - Swift入門篇② 本章重點? 理解App開發的整體流程熟悉Xcode主界面結構與常用分區跟著步驟動手創建第一個App項目,認識模擬器掌握"打掃廚房"高頻快捷鍵,解決常見疑難雜癥 1、目標 像一個專…

EloqCloud for KV 初體驗:兼容redis的云原生KV數據庫

最近在做一些AI應用的時候,我在想嘗試利用redis的能力緩存一些信息,這使我想去找一個免費的redis來進行使用,在調研的過程中我發現了一款產品EloqCloud for KV可以提供類似的能力,于是嘗試使用了一下,本文記錄了這次體…

企業級路由器技術全解析:從基礎原理到實戰開發

簡介 在當今數字化時代,路由器作為網絡的核心設備,其技術深度與應用廣度直接影響著企業網絡的性能與安全性。本文將全面解析路由器的基礎原理、工作機制以及企業級開發技術,從網絡層尋址到路由協議算法,從安全配置到QoS實現,再到多廠商API開發實戰,旨在幫助網絡工程師和…

day041-web集群架構搭建

文章目錄 0. 老男孩思想-高薪四板斧1. web集群架構圖2. 搭建異地備份服務2.1 服務端-阿里云服務器2.1.1 查看rsync軟件包2.1.2 添加rsync配置文件2.1.3 添加虛擬用戶2.1.4 創建校驗用戶密碼文件2.1.5 創建備份目錄2.1.6 啟動服務2.1.7 開放安全組端口2.1.8 發送檢查郵件 2.2 客…

day44-Django RestFramework(drf)下

1.5 Django RestFramework(下) drf 內置了很多便捷的功能,在接下來的課程中會給大家依次講解下面的內容: 快速上手請求的封裝版本管理認證權限限流序列化視圖條件搜索分頁路由解析器10. 分頁 在查看數據列表的API中,如果 數據量 比較大,肯定不能把所有的數據都展示給用…

機器學習基礎 線性回歸與 Softmax 回歸

機器學習基礎 線性回歸與 Softmax 回歸 文章目錄 機器學習基礎 線性回歸與 Softmax 回歸1. 最小二乘法1.1 數據集定義1.2 最小二乘的矩陣推導1.3 最小二乘的幾何解釋1.4 概率視角下的最小二乘估計 2. 正則化2.1 L1 范數與 L2 范數2.2 正則化的作用2.3 Lasso 回歸的求解2.3.1 L-…

6.27_JAVA_面試(被抽到了)

1.MYSQL支持的存儲引擎有哪些, 有什么區別 ? In-no-DB(默認):支持事務安全(數據庫運行時,能保證數據的一致性、完整性),支持表行鎖,支持物理和邏輯外鍵。占用磁盤空間大。 MEMORY&…

YOLOv13震撼發布:超圖增強引領目標檢測新紀元

YOLOV13最近發布了,速速來看。 論文標題:YOLOv13:融合超圖增強的自適應視覺感知的實時目標檢測 論文鏈接:https://arxiv.org/pdf/2506.17733 代碼鏈接:https://github.com/iMoonLab/yolov13 話不多說,直…

Docker錯誤問題解決方法

1. Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) https://zhuanlan.zhihu.com/p/24228872523 2. no configuration file provided: …