问题标签 [docker-networking]

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 投票
1 回答
1935 浏览

docker - 如何在 docker swarm 模式下将发布的端口绑定到特定的 eth[x]

我正在尝试将我的容器部署到 docker swarm 集群(docker engine 1.12.1)。

docker swarm mode的特性真的很令人兴奋,比如集群 docker、多主机网络。

但是我发现到目前为止无法以 swarm 模式存档某些内容(docker 1.12.xdocker run ),这在用于启动容器时效果很好。

我的主机有eth0用于 Intranet 网络,eth1用于 Internet 网络。我只想发布docker service create在 Intranet 网络上部署的服务。但是在通过. _ _docker service create --name my_web --publish 8000:80 my_web_image

任何解决方案/解决方法来归档my_web服务只监听eth0接口?

0 投票
1 回答
721 浏览

docker - 从 Ansible 使用预设 IP 运行 Docker 容器

我正在尝试使用 Ansible 部署 3 个容器,其中一个包含一个 MySQL,我想确保它的 IP 是静态的,并且对于其他 2 个是众所周知的。

我试过这个任务:

但是ip不支持该参数,文档也没有给出任何线索。

我知道我可以使用该shell参数通过 bash 命令运行容器。但是有没有使用 Ansible Docker 模块预设 IP 的选项?

0 投票
3 回答
563 浏览

docker - 网络中两个 docker 容器之间的链接

我在 geoserver 和 postgres 之间有一个 docker 网络。当我做 docker 检查时container name,我可以看到两者是链接的。当我执行到 geoserver 容器中时,我可以 ping postgres 容器但是当我尝试从 geoserver 容器中连接到 postgres db 时出现错误

psql:无法将主机名转换postgres为地址:名称或服务未知

这是我的 docker-compose 的示例:

我知道 docker 网络/etc/hosts没有填充文件。如何启用从地理服务器容器访问数据库。

0 投票
6 回答
22328 浏览

docker - docker-compose 服务内没有互联网

我无法从 docker-compose 容器访问外部网络。

考虑以下 docker-compose 文件:

使用简单的docker run -it nginx bash我设法访问外部 IP 或 Internet IP ( ping www.google.com)。

另一方面,如果我使用 docker-compose 并附加到容器,我无法访问外部 IP 地址/DNS。

码头工人信息:

docker-compose 1.8.1,构建 878cff1

daemon.json 文件:

0 投票
1 回答
1669 浏览

docker - docker-compose 在不同主机和不同项目上的 RabbitMQ 集群

我有 3 个项目,部署在不同的主机上。每个项目都有自己的 RabbitMQ 容器。但是我需要用这 3 个主机创建集群,使用相同的虚拟主机,但不同的用户/登录对。

我尝试过 Swarm 和覆盖网络,但 swarm 旨在运行单独的容器,而使用 compose 它不起作用。另外,我尝试了 docker-compose bundle,但这并没有按预期工作:(

我认为它会像这样工作

1)在管理器节点上,我创建覆盖网络

2)在每个撰写文件中,我使用覆盖网络扩展 rabbitmq 容器的网络配置。

3)它们按预期工作,我不发布到 Internet rabbitmq 端口。


任何想法,我该怎么做?

0 投票
4 回答
37549 浏览

docker - 限制 Internet 访问 - Docker 容器

我有一种情况要限制负载均衡器网络中容器的互联网访问。例如在下图中

方便您参考

只有container4连接互联网;其他三个只通过container4与外界通信。例如,如果container1需要 smtp 支持,它会将 smtp 请求转发给container4以获取访问权限。

除了container4之外的任何容器都不能直接上网!这应该在 Docker 级别强制执行。

我相信它可以在docker network creation上进行配置,任何人都可以解释如何实现这一点吗?

0 投票
0 回答
53 浏览

docker - 跨主机链接 Docker 容器

我的设置如下

机器 - 1 = 沙发搬运工

机器 - 2 = Web Docker

如何将我的 Web docker 连接/链接到另一个系统沙发 docker?

我尝试了下面的方法,但它不起作用。

在机器 1 上

步骤1

第2步

在机器 2 上

步骤 - 3

它给了我以下错误

任何想法可以做什么?

0 投票
1 回答
406 浏览

docker - Docker 覆盖了我自己手动创建的网桥的 IP 地址

我正在尝试将 docker 设置为将所有容器连接到我自己手动创建的网桥 (br0),我不希望 docker 在我的网桥中创建或编辑任何内容,因为我有其他使用并依赖于我的网桥的服务(比如OpenVPN)因此我更喜欢使用我自己的 bash 脚本来创建网桥。

当我启动 docker 服务时,问题出现了,docker 将我的网桥 IP 地址从我想要的(192.168.1.10)更改为其他地址(169.254.xx)!!!

我的 Docker 版本 1.12.1,构建 23cf638

我做的步骤

桥梁创建:

我还删除了默认的 docker0 brdige。

告诉 docker 使用我的 br0 而不是默认的 docker0:

将-b br0参数传递给 dockerd.service 启动脚本,告诉 docker 我希望他使用我的 br0:

我将 ExecStart 编辑为这样:

接着:

现在,当我检查我的br0 IP 时,它不再是 192.168.1.10,而是回到 172.17.xx,当我现在尝试手动将其更改回 192.168.1.10 时,容器中的接口继续使用 169.254.xx而不是我想要的IP。

Ps 当我检查容器的接口在哪里时brctl show它们确实在我的 br0 中(这意味着 docker 接受了 -b br0 参数,但它只是忽略或覆盖了我的预期 IP 地址)。

有人可以帮我解决这个问题吗?它看起来可能像一个错误。我只想让 docker 使用我的 br0 和预期的 IP 地址 192.168.1.10。

我的需要是我所有的容器都在我想要的范围内获得 IP 地址。提前致谢。

编辑:

我的 /var/log/daemon.log

有趣的部分是最后一部分(我在下面重新复制了它):

0 投票
2 回答
955 浏览

docker - 构建时可以将域绑定到 docker 容器吗?

目前在我工作的公司,他们有一个包含 LAMP 环境的中央开发服务器。每个开发人员都可以通过以下方式访问应用程序:developer_username.domain.com. 我们正在开发的应用程序使用许可证,并且许可证是在每个域下生成的,并且仅与域相关联,这意味着我不能使用其他开发人员的许可证。

下面的例子会给你一个想法:

我正在尝试对这个环境进行 dockerize,至少将 PHP 和 Apache 放在一个容器中,并且我能够创建我需要的一切并且它可以工作。看看这个docker-compose.yml

这将构建我需要的东西,但是当我尝试访问服务器时出现问题,因为我正在使用http://localhost,然后许可证将不起作用,我将无法使用该应用程序。

这个想法是访问 as developer_username.domain.com,所以我的问题是:这是应该在 Dockerfile 或 Docker Compose 上完成的工作ENV/etc/hosts?运行 Docker 的主机?

0 投票
3 回答
1662 浏览

curl - Docker 自定义 dns 在容器之间解析

我有以下docker-compose.yml

我在 Web 容器中设置了 2 个虚拟主机

在我的php应用程序中,我卷曲到api.lan. 但它抛出Could not resolve host: api.lan

在我的 docker 主机中,我在文件中添加了以下/etc/hosts内容

我可以从 docker 主机卷曲到api.lan没有问题。但似乎web容器不能从 docker 主机解析名称。

如果我找到web容器的 ip 并将其放入 php 容器的主机文件中,如下所示。

但是如何在 docker compose 上自动执行此操作。或任何其他最佳实践?

此外,如果我/etc/resolve.conf对任一容器进行 cat,我可以找到以下内容。

这是什么 127.0.0.11?是主机吗?

我在“Docker for mac”v 1.12.1