问题标签 [docker-network]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
83 浏览

docker - 在没有暴露端口的 docker 容器上与服务器交谈

我有一些 docker 容器通过 docker bridge 网络一起交谈。它们不能从外部访问(我说过),因为它们是从带有默认命令的脚本启动的,该命令不包括“expose”或“-p”选项。我无法更改该脚本。

我想连接到其中一个运行服务器并侦听端口 8080 上的请求的容器。我尝试将该网桥连接到新创建的 docker 网桥网络,但我没有成功。现在我正在考虑创建一个新容器并让它与服务器对话(通过桥接网络)。由于它是一个新容器,我可以使用“expose”或“-p”选项,因此它可以与主机通信。

这是个好主意吗?如何将对该容器的每个请求转发到服务器,然后将响应返回给主机?

谢谢

0 投票
2 回答
4973 浏览

docker - 如何从连接到外部网络的另一个组合访问容器?

这是我希望从外部容器连接到的带有容器配置的撰写文件(在另一个撰写文件中定义):

和另一个包含我希望连接到的容器的配置的撰写文件service-to-connect-to

我尝试service-to-connect-to通过以下域连接:

service-to-connect-to service-to-connect-to.my-external-network my_external_network.service-to-connect-to

但他们都没有工作。

我哪里错了?

谢谢

0 投票
1 回答
2287 浏览

docker - docker-compose 无法通过服务名称连接到相邻服务

我有这个 docker-compose.yml,它基本上构建了我的 e2e 测试项目。它由一个 postgres 数据库、一个后端 Node 应用程序、一个前端 Node 应用程序和一个使用 cypress 运行 e2e 测试的规范应用程序组成。版本:'3'

Dockerfiles 只是简单的 Dockerfiles,它基于 node:8 复制项目文件并运行yarn install. 在规范 Dockerfile 中,我http://frontend:3000作为 FRONTEND_URL 传递。

spec但是当我的 cypress runner 无法连接到frontend错误时,此设置在命令中失败:

如您所见,它将主机名frontend正确解析为 IP,但无法连接。我正在为为什么不能使用服务名称连接到前端而摸不着头脑。如果我打开命令specdo sleep 30; ping frontend,它会成功 ping 容器。我试过删除并让 docker-compose 重新创建网络,我试过分别指定exposelinks服务。一切都没有成功。

如果你想尝试复制问题,我在这里设置了一个示例 repo: https ://github.com/afifsohili/demo-dockercompose-network

任何帮助是极大的赞赏!谢谢!

0 投票
1 回答
722 浏览

docker - 在 docker 镜像中连接到 docker 的主机网络

我有一个 docker-compose 堆栈一起运行多个图像。

一旦我有了 docker 堆栈,我就会运行一个本地堆栈和一个 mongo。在 Local-stack 中,如果要执行 lambda,则会启动一个新的 docker 映像。从 lambda 图像我需要连接到现有堆栈中的 mongo 图像。

docker.sock 访问权限已经提供给本地堆栈,因此它会在我的主机中创建一个新的 docker 映像。现在从 lambda 到 mongo 没有建立到网络的连接。既不是通过应用环回地址也不是通过 docker-compose.yml 中提到的网络别名

你能帮我如何建立连接...?

更新

我的 docker-compose.yml

我的 localstack-config.list


0 投票
1 回答
155 浏览

docker - Docker用户定义的网络不起作用

我创建了一个桥接 docker 网络,使用

docker network create --driver bridge exa1

但是当我在我的 docker-compose 中使用这个网络并运行它时,

结果是这个输出,

错误:找不到插件“exa1”

我已使用 docker network ls 确保 exa1 网络存在

它真的存在吗?

任何帮助将不胜感激!

0 投票
0 回答
465 浏览

docker - 无法从外部主机访问 docker 容器中的服务器

我有一台托管 2 个 VM 实例的 linux 机器(Host-591)。在第一个 VM 实例 (Docker03) 中,在一个容器内,我托管了一个 Flask Web 服务器,它在 tcp/81 上运行并发布它。主机 Docker03 将其映射到端口 tcp/5003。从 Docker03,我可以访问 Flask 服务器:

但是从主机 linux 机器上,我无法访问服务器。

从主机 Ping 到 Docker03 内容器中的服务器工作正常。

从主机到 Flask 服务器端口的简单 telnet 显示可以建立 TCP 连接:

Docker03 VM 实例上的 iptables 规则如下所示:

在 DOCKER-INGRESS 链中,当我尝试从 Docker03 实例访问服务器时,pkt 计数会增加,但当我尝试从主机 (Host-591) 访问它时不会增加。

在 Docker03 内部:

这是我正在使用的 docker compose 文件:

该应用程序的 Dockerfile 如下所示:

我尝试启动另一个连接到 192.168.122.0/24 网络的 VM 实例并访问 Flask 服务器,它运行良好。似乎只有来自虚拟机外部的访问不起作用。我正在使用的 Docker 版本:

任何帮助深表感谢。

谢谢,

0 投票
1 回答
275 浏览

docker - docker-py:在 IPvlan 网络中创建具有特定 IP 的容器

我创建了一个带有驱动程序的网络:ipvlan 和几个带有特定网关的子网。(约 20 个)

现在我想创建具有特定 IP 的容器,以便它们仅分配到 ipvlan 网络的正确子网!

这里发生的是,client.containers.run给容器一个 docker bridge 网络的 ip 和 docker bridge 的默认网关。然后dockernetwork.connect给容器的接口第二个 ip(目标 ip)。

如果我将参数 network='ipvlan172' 添加到命令中:

创建的容器没有得到我想要的 docker bridge 网络的 ip,而是命令的 targetIP

将被忽略。使创建的Container拥有ipvlan网络的一个随机子网的IP

解决此问题的一种方法是创建一个脚本,该脚本将在容器启动后执行,并删除 dockerhost ip 并更改默认网关。

还有其他解决方案吗?

谢谢!

0 投票
0 回答
616 浏览

docker - 我的 docker 容器如何能够同时对外部和用户定义的网桥(其他容器)进行网络访问?

这是我的问题。

我将我的应用程序容器化到使用 docker-compose 启动的不同容器中。所以所有的容器都通过一座桥连接起来,将它们与外界隔离开来。(docker-compose 会自动为项目创建这个桥)

但我的问题是我的容器之一需要与外界通信。假设其中一个容器基于 Python 映像,我需要动态调用“pip install”命令作为我的应用程序逻辑的一部分。

但是一旦所有的容器都在一个隔离的桥上,我的基于 python 的容器(只是一个例子)就不能与外界交谈并执行 pip install 命令。

我知道你不能同时拥有网桥和主机网络。但是,从设计的角度来看,我应该怎么做?

0 投票
1 回答
219 浏览

docker - 如何确保 docker 容器具有所需的网络接口

当我在主机(ubuntu)上运行 ifconfig 命令时,我看到以下接口

当我检查容器内部时,我发现了这个

我什至希望 eth1 网络接口在容器内可用。请让我知道如何实现这一目标

0 投票
2 回答
13852 浏览

docker - 如何在 docker 启动时删除/禁用 docker0 网桥

有什么方法可以在 docker 启动时禁用 docker0 桥接器?

在 daemon.json 中尝试了 "bridge": "none" 但它不起作用。

还使用“ip link delete docker0”删除了默认的 docker 桥,但是当我们重新启动 docker 时它会自动出现。那么在启动时禁用/删除默认docker桥的任何永久方法?我在这里看到了同样的问题How to delete interface docker0但我已经尝试过了,每当重新启动 docker 时,docker0 网桥就会回来。