从Docker容器访问主机进程/终端

时间:2019-06-02 06:19:13

标签: docker-compose dockerfile

你好,

我正在尝试对节点应用程序进行docker化。我创建了两个容器和一个docker-compose.yml文件。容器已成功构建并运行,但容器应与主机进程交互。这怎么可能?

谢谢

更新1
我的应用程序使用sudo运行一些命令。可能我必须让docker容器执行针对主机系统的命令。有什么想法吗?

3 个答案:

答案 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 文件,并将其安装在主机上以服务于容器。

袜子文件: What are .sock files and how to communicate with them

瞭望塔: https://github.com/containrrr/watchtower