簡體   English   中英

如何從 Docker 容器訪問主機中的文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM