问题标签 [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 回答
2756 浏览

postgresql - 使用 unix 域套接字从 docker 容器连接到 Postgresql 是不是很糟糕?

下面是背景故事,但问题是:我发现如果我的 docker 主机上运行了 postgresql,我可以通过作为文件安装的域套接字在容器中连接到它:

这感觉像是一次重大的黑客攻击,所以我很好奇这在生产环境中是否真的很可怕。想法?


背景故事

背景是我在 docker 主机上运行了 postgresql,因为我不相信 docker 可以直接运行 postgresql。

所以我需要从在同一台服务器上运行的 docker 容器连接到该 postgresql 实例。我试过了:

  • 使用--add-host

    但这也是一个 hack,因为它需要将 docker run 放入脚本中以找出主机的正确 IP。就像是:

    我不喜欢这样做。

  • 我尝试使用--net=host,但是……那不是我们想要的。我们想要一个覆盖网络。

  • 我尝试通过在容器中查找主机的 IP 地址来设置它,但我觉得为此目的运行脚本并不好。

所以......我想:“使用域套接字怎么样?”

0 投票
1 回答
345 浏览

docker - 使用容器时如何使用烧瓶会话将redis设置为缓存?

我正在尝试使用docker部署一个flaskapp,所以我有两个容器,一个用于我的flaskapp,另一个用于redis。我已经设置了一个网络并在其中执行。访问我的 flaskapp 时出现以下错误:

ConnectionError:连接到 localhost:6379 时出现错误 99。无法分配请求的地址。

发生这种情况是因为我使用 redis 作为烧瓶会话的缓存,并且我将 redis 托管在一个名为 exampleredis 的容器中。

我的问题是:如何在 Flask 中将 redis 主机设置为 exampleredis?

我有以下配置文件:

0 投票
2 回答
255 浏览

python - 我已经使用 ubuntu 14.04 为 python PyQt4 应用程序创建了一个 docker 映像,现在当我运行容器时,我想访问 docker 主机 ip 和接口

我想获取 docker 主机 ip 地址和接口名称,即 docker 主机的 ifconfig。相反,我在 docker 容器中执行 ifconfig 时获取了 docker 容器 IP 地址。

如果有人告诉我从 docker 容器中获取 docker 主机的 IP 地址,那就太好了。

我试过做 ifconfig dockerhostname,结果我得到错误 dockerhostmachi: error fetching interface information: Device not found

这是我的码头文件

来自 ubuntu:14.04

安装依赖项

运行 apt-get update && apt-get install -y\python-dev\libffi-dev\libssl-dev\python-enum\apache2\libapache2-mod-wsgi\python-pip\python-qt4

运行 a2enmod wsgi

我需要从 docker 容器或运行 docker 映像时获取 docker 主机的 ifconfig 结果。

0 投票
1 回答
55 浏览

docker - 从远程机器访问托管在数字海洋水滴上的容器化 API

我正在尝试连接到 DigitalOcean Docker 液滴上的 docker-compose 部署服务堆栈。它包含一个带有数据库的 MySQL 容器和一个带有 API 的 go/alpine 容器。我正在使用 2 个容器连接到的自定义桥接网络。尝试在我的 Mac 上本地部署堆栈并通过 localhost:port 访问 API 容器时,也会出现此问题。我没有使用 docker-machine,因为我认为它仅用于多主机部署。堆栈部署成功。服务器容器似乎能够连接到数据库容器。我想知道问题是否在主机的防火墙规则范围内?

我确实尝试在我的机器上运行 mysql 服务器在本地运行该应用程序并且它确实有效,所以我认为原因不是代码故障。我无法让它与基本的 HTTP 服务器或带有自签名证书的 https 一起工作(两者都在我的本地机器上工作)。

码头工人-compose.yml

iptables -L 部署了堆栈:

更新:

我有 3 个 json 文件,其中包含用于不同环境的配置和凭据,这些文件被解析为具有以下格式的配置对象(由于显而易见的原因,凭据被替换):

然后将配置传递给 db 对象和路由器对象:

D b:

路由器:

主功能:

0 投票
1 回答
766 浏览

docker - Traefik 不适用于工作节点 [docker swarm] 内的容器(404)

我的问题如下:

我创建了一个由 2 个简单节点组成的小型 swarm 集群:一个管理器和一个工作器。在管理器节点上,我安装了一个带有 Traefik 服务的堆栈和一个带有 Swarmpit 仪表板服务的堆栈。在工作节点上,我安装了一个带有 wordpress 服务的堆栈。我为正确的 traefik 配置安装了一个名为“web”的“覆盖”网络。

结果是 Traefik 仪表板和 Swarmpit 仪表板都能正常工作。我放在工作节点上的任何东西都不会被 traefik “识别”,因此它不起作用。如果我尝试访问该服务的网页,则会返回错误 404

如果我将 wordpress 服务从工作节点移动到管理节点,它就会开始正常工作。此外,我可以通过“web”网络从 traefik 容器内部 ping 到 wordpress 容器,反之亦然

可能是什么问题呢?

下面是一些配置和日志:

Traefik docker -conpose.yml配置:

Wordpress 测试docker-conpose.yml配置:

管理节点上:

管理节点上:

管理节点上:

管理节点上:

工作节点上:

工作节点上:

0 投票
1 回答
860 浏览

docker - docker ERR_CONNECTION_REFUSED 内的 Chrome

我们正在尝试在 docker 容器中运行 chrome。

构建后的docker run命令如下:

172.21.0.13是指示同一网络中另一个容器的 ip 的示例。

进入容器后,主机文件看起来像这样:

并按预期运行:

导致正确的连接

但是,在浏览器中运行连接:

导致ERR_CONNECTION_REFUSED

浏览器能够导航到任何其他网站。

谢谢。

编辑: 请注意,wget和浏览器的打开都是在容器启动的,因为我们使用 chrome headless 进行测试。

0 投票
1 回答
72 浏览

docker - Docker公共网络

有没有办法制作一个同时访问所有 docker 网络的 docker 容器?这个想法是我有 2 个 docker 网络。

假设它们被称为 demo1 和 demo2。我有另一个 docker 容器(称为 Front),它应该同时到达 demo1 和 demo2。

我可以通过在我的 docker-compose 文件中声明外部网络来做到这一点。但是,我希望能够声明 demo3 并将 Front 容器“动态”附加到它,而无需修改容器的 compose 文件,如果可能的话,无需重新启动它。

所以,我试图找到一种架构,让我的容器 Front 动态连接到任何添加的 docker 网络。

我可以在 crontab 中创建一个脚本,但我的想法是正确地执行它。需要的是一个通用的容器,它可以到达任何其他容器。

在 docker compose syntaxe 中,我的图像如下:

networks: all: name: '*' external: true

可能吗 ?如何 ?

问候

0 投票
0 回答
959 浏览

docker - docker-compose 版本 3 的默认网络网关值

我正在使用under version创建一个Nginx容器docker-compose3.7

我正在尝试指定ipam属性。但是当我阅读以下官方参考资料时: https ://docs.docker.com/compose/compose-file/#network-configuration-reference

有一个注释,我知道gateway只能在 version 下指定2

注意:其他 IPAM 配置(例如网关)目前仅适用于版本 2。

所以我尝试不指定gatewayunderipam属性。我的容器仍然可以创建和运行。

然后我去检查docker-network设置。经过我检查和观察没有指定gateway。但我Nginx's access.log仍然显示来自172.19.100.1我认为它是gateway.

我想知道并澄清一下,在 version 下3.7,是否有任何方法可以指定gateway内部docker-compose文件,或者如果我无法指定,默认值是什么?

另外,是否应该建议写docker-compose在版本2而不是3

0 投票
0 回答
52 浏览

docker - Docker 容器无法连接到互联网

我已经将我的服务器(Ubuntu 18.04 LTS)从一个网络物理移动到另一个网络(所以我更改了 IP 地址/网络掩码/网关/DNS)。一旦我重新启动它,相同的 Docker 容器就无法再连接到互联网了

这是桥接网络的配置

用户名@主机名:~$ sudo docker inspect bridge

这是接口的配置

用户名@主机名:~$ ip addr show

如果启动一个繁忙的盒子 username@hostname:~$ docker run -itd --name=container1 busybox

我附加到它 username@hostname:~$ docker attach container1

我 ping 世界 / # ping -w3 8.8.8.8

所以没有回复,而我可以成功地ping另一个繁忙的盒子容器。

只是为了提供更多信息,这些是 busybox 容器识别的 IP 名称:

以及来自容器内部的路由 / # ip route show

我可以从容器内部 ping 网关(/# ping -w 4 172.17.0.1),也可以成功 ping 我的服务器的 IP 地址(/# ping -w 4 xxx.xxx.xxx.xxx)。

显然,我对所有容器都有这个问题,不仅是busybox:例如,通过在高山码头集装箱中打开一个外壳,我也无法通过桥。

我最初的猜测是这可能是防火墙问题,但如果我“sudo ufw disable”没有任何变化。

我检查的其他可能参数是 username@hostname:~$ sudo sysctl net.ipv4.conf.all.forwarding

所以到目前为止,对我来说一切都很好。我还删除并重新安装了 docker 守护程序,但仍然是同样的问题。

问题可能是什么?任何想法?谢谢。

0 投票
1 回答
581 浏览

docker - 是否可以在 2 个 docker-compose.yaml 之间通过 docker-compose 在 docker 网络上卷曲?

我有 2 个应用程序在不同的网络上运行,它使用单独的 docker-compose.yaml。所以我试图从应用程序 A 向应用程序 B 调用请求,但它不起作用。

所以我得到了一个错误

docker-compose-app-a.yaml

docker-compose-app-b.yaml

问题:

  • 是否有可能做到这一点?
  • 如果第一个问题是可能的,请建议我:)