docker - 从 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
解决方案
推荐阅读
- wordpress - 如何更改类别中帖子的显示顺序?(wordpress)
- graph - 0.5版本下如何安装dgl
- c++ - 如何将 QVariantMap 保存到 QSqlDatabase
- flutter - 我对颤振导航和闪屏视频有疑问
- python - 在 Python 中计算相关性的问题
- sql-server - 如何在 neo4j 工具中连接远程 MS SQL Server?
- javascript - .innerhtml 将文本添加到 p 标签而不是通过按钮替换
- android - 如何从通知中显示 UI
- .net - DotNet:SocketException (111):Debian 上的 UDP 连接被拒绝
- python - 计算一个元素在python列表中连续出现n次的次数