如何从 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 运行 命令中使用 -v
标志,您可以指定主机上的目录以挂载到容器中,格式为:
-v /path/on/host:/path/inside/container
例如:
docker run -v /path/on/host:/path/inside/container <image_name>
Docker directly manages the /etc/hosts
files in containers。你不能在那里绑定挂载文件。
在多个地方手动维护主机名到 IP 地址的映射可能很难保持最新。考虑 运行 DNS 服务器,如 BIND 或 dnsmasq,或使用托管服务,如 Amazon 的 Route 53,或服务发现系统,如 Consul(附带提供 DNS 接口)。
如果您确实需要将条目添加到容器的 /etc/hosts
文件中,docker run --add-host
选项或 Docker Compose extra_hosts:
setting 即可。
作为一般规则,容器无法访问主机的文件系统,除非 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
我在 Ubuntu 服务器主机上有一个 Docker Ubuntu 仿生容器。从容器中我可以看到主机驱动器挂载为 /etc/hosts 这不是目录。尝试在不同的位置卸载和重新安装但抛出 permission denied
错误,当我以 root 身份尝试时会发生这种情况。
那么如何访问主机系统的内容?
首先,etc/hosts
是一个存在于所有 linux 系统上的网络文件,它与驱动器或 docker 无关。
其次,如果您想访问 Docker 容器内的主机文件系统的一部分,您需要使用 volumes。在 docker 运行 命令中使用 -v
标志,您可以指定主机上的目录以挂载到容器中,格式为:
-v /path/on/host:/path/inside/container
例如:
docker run -v /path/on/host:/path/inside/container <image_name>
Docker directly manages the /etc/hosts
files in containers。你不能在那里绑定挂载文件。
在多个地方手动维护主机名到 IP 地址的映射可能很难保持最新。考虑 运行 DNS 服务器,如 BIND 或 dnsmasq,或使用托管服务,如 Amazon 的 Route 53,或服务发现系统,如 Consul(附带提供 DNS 接口)。
如果您确实需要将条目添加到容器的 /etc/hosts
文件中,docker run --add-host
选项或 Docker Compose extra_hosts:
setting 即可。
作为一般规则,容器无法访问主机的文件系统,除非 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