繁体   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