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