你好,
我正在尝试对节点应用程序进行docker化。我创建了两个容器和一个docker-compose.yml文件。容器已成功构建并运行,但容器应与主机进程交互。这怎么可能?
谢谢
更新1
我的应用程序使用sudo运行一些命令。可能我必须让docker容器执行针对主机系统的命令。有什么想法吗?
答案 0 :(得分:1)
我假设通过与主机进程进行交互,是指通过某种网络协议进行交互,因此您将需要从容器访问主机的IP地址。
如果您使用的是docker的 bridge网络,则主机的IP是容器的默认网关。如果您没有在 docker-compose.yml (https://docs.docker.com/compose/compose-file/#network-configuration-reference)
中提供特定的网络配置,就会出现这种情况。由于使用的是node.js,因此可以使用 default-gateway 软件包(https://www.npmjs.com/package/default-gateway)来获取此IP。
答案 1 :(得分:1)
您不能在容器内执行主机应用程序。因为它们不在您的容器文件系统中,所以您不应尝试这样做。相反,您应该将应用程序需要的所有必要软件安装在Docker容器中,作为应用程序的依赖项。
答案 2 :(得分:0)
您可以使用 sock 文件,用于进程间通信,并将其处理给容器,类似于 watchtower 控制 docker 守护进程的操作。也许您必须创建一个简单的应用程序来将 shell 通过管道传输到 sock 文件,并将其安装在主机上以服务于容器。