我是Docker的新手,我有一个奇怪的例子,我希望有一个cpp可执行文件(创建一个TCP服务器)位于RHEL 7 Docker容器中。此可执行文件具有许多运行时依赖项(静态库和DLL)。
我想做一次设置依赖项的工作,然后只是将容器重新分发给团队。是否可以将可执行文件存放在Docker容器中(然后将其链接到容器中的运行时依赖项),但是在主机上挂载并运行可执行文件,即TCP服务器使用主机的IP地址而不是Docker容器的IP地址?
同样,可执行文件(TCP服务器)必须在主机上运行时使用容器上的依赖项。
主机将是RHEL 7.
更新1:
抱歉,我忘了添加一个关键参数。主机上将存在服务器需要访问的文件。我知道你可以在启动时将目录挂载到容器,但服务器需要访问的文件将是即时创建的子目录。 即,当请求进入服务器时,服务器将需要访问目录/ servers_important_files /。子目录将在/ servers_inportant_files /下动态创建,服务器也需要访问。因此,我想知道是否有办法在主机上运行可执行文件。
全部谢谢!
答案 0 :(得分:0)
如果您只是希望服务器进程可以作为连接到主机(或从其他主机连接到物理主机)的东西,那么您可以绑定端口。
E.g。 (80是主机上的端口,8080是容器中的端口)。这也会按照编辑中的要求将主机中的卷安装到容器内的位置。
docker run -p 80:8080 -v /dir/on/host:/dir/in/container nginx
在这种情况下,依赖项和可执行文件都将在容器内。
参考:https://docs.docker.com/v17.09/engine/userguide/networking/default_network/binding/