首页 > 解决方案 > 从 docker 容器访问外部端口

问题描述

我读过这个这个这个

尽管这被问了很多次,但我不明白,而且似乎没有定论。请在发布可能的重复项之前考虑一下。

在我的 Ubuntu 16 上,我有一个必须访问容器外服务的容器。无法使用--network="host",因为这与我使用 Docker 的目的背道而驰。另外,文档说:“当您的应用程序在需要通信的独立容器中运行时,通常使用桥接网络”,就是这种情况。

因此,通过选择bridge网络方法,我在这里尝试了解决方案(迄今为止最流行的在线问答)。它说使用容器内的“路由”命令获取主机IP:

export DOCKER_HOST_IP=$(route -n | awk '/UG[ \t]/{print $2}')

有两个问题:

1:对于这种微不足道的需求,这是最直接的解决方案吗?

2:我在我的节点应用程序的容器中执行此操作:

 await execSync("route -n | awk '/UG[ \t]/{print $2}'", (err, stdout,stderr) =>{
        if (err) {
            console.error("Failed: " + err);
            return;
        }
        if (stdout)
            console.log(stdout);
        if (stderr)
            console.error(stderr);
    });

这(如预期)导致:

/bin/sh: 1: route: not found

我尝试了--add-host 解决方案,但我怎么知道要使用什么 IP 号码?换句话说,这个IP是从哪里来的?

--add-host=testing.example.com:10.0.0.1

标签: dockernetworking

解决方案


推荐阅读