[英]How to access files in host from a Docker Container?
我在 Ubuntu 服務器主機上有一個 Docker Ubuntu 仿生容器。 從容器中,我可以看到主機驅動器安裝為 /etc/hosts,它不是目錄。 嘗試在不同的位置卸載和重新安裝,但拋出permission denied
錯誤,當我以 root 身份嘗試時會發生這種情況。 那么如何訪問主機系統的內容呢?
首先, etc/hosts
是一個存在於所有 linux 系統上的網絡文件,它與驅動器或 docker 無關。
其次,如果要訪問 Docker 容器內的主機文件系統的一部分,則需要使用volumes 。 在 docker run 命令中使用-v
標志,您可以指定主機上的目錄以安裝到容器中,格式如下:
-v /path/on/host:/path/inside/container
例如:
docker run -v /path/on/host:/path/inside/container <image_name>
Docker 直接管理容器中的/etc/hosts
文件。 你不能在那里綁定掛載文件。
在多個位置手動維護主機名到 IP 地址的映射可能很難保持最新狀態。 考慮運行 BIND 或 dnsmasq 等 DNS 服務器,或使用 Amazon Route 53 等托管服務,或 Consul 等服務發現系統(順便提供一個 DNS 接口)。
如果您確實需要向容器的/etc/hosts
文件添加條目,則extra_hosts:
docker run --add-host
選項或Docker Compose extra_hosts:
設置將完成此操作。
作為一般規則,容器不能訪問主機的文件系統,除非docker run -v
選項將特定目錄映射到容器中。 同樣作為一般規則,您不能直接更改容器中的掛載點; 使用不同的-v
選項停止、刪除和重新創建它。
例子。 容器 ID:32162f4ebeb0
#HOST BASH SHELL
docker cp 32162f4ebeb0:/dir_inside_container/image1.jpg /dir_inside_host/image1.jpg
docker cp /dir_inside_host/image1.jpg 32162f4ebeb0:/dir_inside_container/image1.jpg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.