Khắc phục lỗi Docker 'Mounts denied': Hướng dẫn về Chia sẻ Tệp tin

beginner🐳 Docker2026-06-29| Docker Desktop trên macOS (Intel/Apple Silicon) hoặc Windows (Hyper-V backend)

Error Message

Error response from daemon: Mounts denied: The path /Users/project is not shared from the host and is not known to Docker.
#docker-desktop#volume#macos#file-sharing#mount

Tình huốngTất cả chúng ta đều đã từng gặp tình huống này: bạn đã sẵn sàng lập trình, chạy lệnh docker-compose up, và rồi mọi thứ dừng lại. Gần đây tôi đã gặp phải trở ngại này khi ánh xạ thư mục mã nguồn tùy chỉnh vào container bằng flag -v. Thay vì một môi trường đang chạy, tôi nhận được một thông báo lỗi cụ thể trong terminal của mình:

docker: Error response from daemon: Mounts denied: 
The path /Users/project is not shared from the host and is not known to Docker. 
You can configure shared paths from Docker -> Preferences... -> Resources -> File Sharing.

Trở ngại này xuất hiện vì Docker Desktop không có quyền truy cập toàn bộ vào ổ cứng của bạn. Vì nó chạy bên trong một máy ảo (VM) nhẹ, nó hoạt động trong một sandbox bị hạn chế để đảm bảo an ninh. Nếu bạn cố gắng mount một thư mục nằm ngoài "danh sách an toàn" của Docker, engine sẽ chặn yêu cầu đó để bảo vệ hệ thống của bạn.

Tại sao điều này xảy raDocker Desktop cần sự cho phép rõ ràng để truy cập các thư mục trên máy chủ của bạn. Mặc định, nó thường tin tưởng các đường dẫn phổ biến như /Users, /Volumes, /private, và /tmp trên macOS. Tuy nhiên, nếu dự án của bạn nằm ở một vị trí tùy chỉnh—chẳng hạn như một phân vùng /Data riêng biệt hoặc một thư mục gốc cụ thể—Docker sẽ từ chối việc mount để ngăn chặn truy cập tệp trái phép từ container.

Cách khắc phục nhanh: Di chuyển dự ánNếu bạn đang vội, cách xử lý nhanh nhất là di chuyển thư mục dự án vào một đường dẫn mà Docker đã tin tưởng. Trên Mac, việc kéo thư mục của bạn vào /Users/yourusername/ thường sẽ khắc phục được vấn đề ngay lập tức. Điều này hoạt động vì /Users được chia sẻ mặc định trong hầu hết các bản cài đặt Docker Desktop.

Cách khắc phục lâu dài: Cấu hình File SharingBạn không cần phải thay đổi toàn bộ quy trình làm việc của mình chỉ để mount một thư mục. Để giữ dự án chính xác ở vị trí cũ, hãy làm theo các bước sau để cấp quyền cho đường dẫn:

Bước 1: Mở Cài đặt Docker DesktopNhấp vào biểu tượng cá voi Docker trên thanh menu (macOS) hoặc khay hệ thống (Windows). Chọn Settings. Nếu bạn đang chạy phiên bản cũ hơn 4.0, mục này có thể vẫn được dán nhãn là Preferences.

Bước 2: Đi đến File SharingNhìn vào thanh bên và đi tới Resources, sau đó nhấp vào tab File Sharing. Bạn sẽ thấy danh sách các thư mục mà Docker VM hiện được phép truy cập.

Bước 3: Thêm đường dẫn tùy chỉnh của bạnNhấp vào nút + (cộng). Tìm đến thư mục dự án của bạn, ví dụ /Users/project, hoặc chọn thư mục cha chứa tất cả các dự án phát triển của bạn. Nhấp vào Open để thêm nó vào danh sách.

Bước 4: Áp dụng và Khởi động lạiNhấp vào nút Apply & Restart. Docker sẽ khởi động lại engine bên trong để tải các quyền mới. Quá trình này thường mất khoảng 30 đến 60 giây tùy thuộc vào phần cứng của bạn.

Xác minh kết quảSau khi Docker hoàn tất việc khởi động lại, hãy kiểm tra việc mount bằng một container nhẹ. Chạy lệnh này trong terminal của bạn:

docker run --rm -v /Users/project:/app alpine ls /app

Nếu bạn thấy danh sách các tệp cục bộ của mình thay vì thông báo lỗi, bạn đã thành công.

Khắc phục sự cố đồng bộ hóa tệpĐôi khi việc mount hoạt động, nhưng các thay đổi không được đồng bộ hóa ngay lập tức. Điều này thường do cơ chế chia sẻ tệp. Docker Desktop 4.6 trở lên đã giới thiệu VirtioFS cho macOS, mang lại hiệu suất tốt hơn nhiều so với gRPC FUSE cũ.

Nếu bạn nghi ngờ các tệp của mình không được phản chiếu chính xác, hãy thử so sánh mã hash. Tôi sử dụng Hash Generator trên ToolCraft để tạo mã hash MD5 hoặc SHA-256 của một tệp cấu hình trên máy chủ. Sau đó, tôi chạy md5sum bên trong container. Nếu các chuỗi khớp nhau, việc đồng bộ hóa là hoàn hảo. Đây là một bước kiểm tra chỉ mất 10 giây nhưng hiệu quả hơn việc đoán mò.

Lưu ý cho người dùng WindowsBạn đang sử dụng Windows với WSL 2 backend? Bạn sẽ nhận thấy tab "File Sharing" hoàn toàn biến mất. Điều này là do WSL 2 quản lý quyền truy cập tệp thông qua nhân Linux. Nếu bạn gặp lỗi mount ở đây, có khả năng là do bạn đang mount một đường dẫn Windows (như C:\Projects) vào một container Linux. Để tăng hiệu suất từ 2 đến 5 lần, hãy di chuyển các tệp của bạn trực tiếp vào hệ thống tệp WSL, chẳng hạn như \\wsl$\Ubuntu\home\user\project.

Danh sách kiểm tra tóm tắt- Đường dẫn chính xác (hoặc thư mục cha) có nằm trong Docker Settings > Resources > File Sharing không?- Bạn đã nhấp vào "Apply & Restart" chưa?- Trên macOS Ventura hoặc Sonoma, Docker đã được cấp quyền "Full Disk Access" trong System Settings chưa?- Bạn có đang sử dụng đường dẫn tương đối trong một script trỏ đến một thư mục bị hạn chế không?

Related Error Notes