所以我在Ubuntu服务器主机上有Docker Ubuntu仿生容器。从容器我可以看到hsot驱动器挂载为/ etc / hosts,而不是目录。尝试在不同的位置卸载和重新安装但是说允许,这种情况发生在我以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 directly manages the /etc/hosts
files in containers。您无法在那里绑定文件。
手动维护主机名到多个地方的IP地址的映射可能很难以保持最新。考虑运行DNS服务器,如BIND或dnsmasq,或使用托管服务,如亚马逊的Route 53,或服务发现系统,如Consul(顺便提供DNS接口)。
如果您确实需要将条目添加到容器的/etc/hosts
文件中,则docker run --add-host
选项或Docker Compose extra_hosts:
setting将执行此操作。
作为一般规则,容器无法访问主机的文件系统,除非docker run -v
选项将特定目录映射到容器中。另外,作为一般规则,您无法直接更改容器中的挂载点;使用不同的-v
选项停止,删除和重新创建它。