我可以基于主机文件系统构建docker容器吗?

我可以基于主机文件系统构建docker容器吗?,docker,Docker,我想使用docker进行网络隔离,但仅此而已 更具体地说,我想运行两个程序,如果通过第二个程序中继连接,则只允许网络访问一个程序上的某个端口。一个程序是VNC服务器,第二个程序是带有自定义身份验证方案的Websocket中继 所以,我正在考虑将它们放在一个容器中,并使用docker端口映射来控制它们的网络访问 我可以设置docker以便直接使用主机的文件系统吗?我想访问.Xauthority文件并创建UNIX域套接字(VNC服务器会这样做)。我知道我可以在容器中挂载主机文件系统,但是直接将其用作

我想使用docker进行网络隔离,但仅此而已

更具体地说,我想运行两个程序,如果通过第二个程序中继连接,则只允许网络访问一个程序上的某个端口。一个程序是VNC服务器,第二个程序是带有自定义身份验证方案的Websocket中继

所以,我正在考虑将它们放在一个容器中,并使用docker端口映射来控制它们的网络访问

我可以设置docker以便直接使用主机的文件系统吗?我想访问.Xauthority文件并创建UNIX域套接字(VNC服务器会这样做)。我知道我可以在容器中挂载主机文件系统,但是直接将其用作容器的文件系统会更简单。我想


这可能吗?简单?

不,每个容器都基于打包文件系统层的映像。不能在docker中禁用文件系统名称空间(与网络、pid和其他可以设置为“主机”的名称空间不同)


根据您的要求,如果您不想使用主机卷装载,也不想将应用程序打包到映像中,那么最好在docker用于实现容器隔离的Linux内核中学习网络名称空间。该命令是一个很好的起点。

是的,这是可能的!:-)我很好奇这将如何实现,所以我一直在关注这个话题。对于结构和内部通信,您可以使用docker compose。这将使配置更加容易(另外,您可以在撰写文件中定义“网络”)。您仍然需要在主机上进行一些网络配置(防火墙设置等)。我知道这是一个错误的工具,如果手动设置Linux网络名称空间是您想要的唯一面向Docker的功能,您可能会发现手动设置Linux网络名称空间更容易。如果这是两个程序之间通信的一个选项,那么控制对Unix套接字的访问也会容易一些。@mahatmanich,…回答这个问题很容易!:-)这就是我正在寻找的解决方案。我已经在想docker是如何实现其网络隔离的。这就是为什么我发布了一些关于我想要完成的事情的附加信息(总是一个好主意)。