- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个有 2 个 IP 的服务器,我需要在它上面运行 3 个 docker 容器。
一个容器是一个 nginx 反向代理,它接收第一个 IP 上的传入连接。
第二个容器使用相同的 IP 进行外部连接,我让这部分工作。
我现在需要做的是设置一个网络,让最后一个容器通过第二个 IP 访问外部服务,但仍然允许 nginx 容器访问它的端口。
有没有办法在 docker-compose 中做到这一点?如果没有必要,我宁愿不走 kubernetes/swarm 路径。
version: '2'
services:
nginx:
image: jwilder/nginx-proxy
environment:
- VIRTUAL_PORT=8000
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
ports:
- "80:80"
python:
depends_on:
- nginx
image: python:2.7-slim
restart: always
working_dir: /usr/src/app/
- VIRTUAL_HOST=python.mydomain.com
expose:
- "8000"
volumes:
- "./:/usr/src/app/"
command: bash -c "~/do_some_stuff.sh"
最佳答案
我设法让它工作,但之后它需要一个 iptables 命令。尽管通过仅提供传出 IP 可以轻松地将其包装在脚本中以实现完全自动化。
我添加了一个自定义网络并将其分配给容器:
version: '2'
services:
nginx:
image: fedora:latest
command: /bin/bash -c "curl -s ifconfig.co" # Check our external IP
networks:
- secondaryIP
networks:
secondaryIP:
driver: bridge
ipam:
config:
- subnet: 103.11.0.0/16
docker inspect --format '{{ .HostConfig.NetworkMode }}' <ContainerID>
docker inspect --format '{{ .NetworkSettings.Networks.iptest_secondaryIP.IPAddress }}' <ContainerID>
iptest_secondaryIP
是您网络的名称。这给出了容器的地址。应该在以下 iptables 命令中使用:
sudo iptables -t nat -I POSTROUTING -s $IPADDR -j SNAT --to $SourceIP
#!/bin/bash
SourceIP=103.11.1.2 # Outgoing IP to use
# Gets IP of last launched docker container
CID=$(docker ps -q | head -1)
# Gets custom network of docker container
NETMAP=$(docker inspect --format '{{ .HostConfig.NetworkMode }}' $CID)
# Gets ip address of container
IPADDR=$(docker inspect --format "{{ .NetworkSettings.Networks.$NETMAP.IPAddress }}" $CID)
# Sets up SNAT iptables rule for docker container to use SourceIP for outgoing traffic
sudo iptables -t nat -I POSTROUTING -s $IPADDR -j SNAT --to $SourceIP
关于docker - 通过 docker-compose 为 docker 容器分配传出 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46320559/
我想创建一个 Mercurial Hook ,当我推送到本地存储库时,它会推送到备份远程存储库。我以为我可以钩住“传出”钩子(Hook),但这会创建一个不漂亮的无限循环。那么是否有类似推送后的 Hoo
我有一个托管在 Tomcat 上的应用程序,它需要通过 IBM DataPower 设备对托管的服务进行 HTTPS 调用。我在日志中看到以下内容: http-bio-8080-exec-1, REA
是否有一个 hg 命令可以组合 hg传入 + hg传出 + hg status? 这会告诉您是否有任何远程内容需要传入,是否有任何本地提交的内容需要出去,或者是否有任何本地更改需要提交。 最佳答案 虽
我在 Azure 中有一个 Windows VM,用于 VS2015 实验。 Google 云端硬盘无法联系更新服务器来完成其自身的安装(尽管 Chrome/Omaha 工作正常)。 显然,我也无法通
我正在使用 QuickFIX/J (1.6.4)。我可以看到所有消息都非常正确地隔离(传入/传出/事件) , event> (Session FIX.4.2:CLIENT2/SUB-> sched
我在 Azure 中有一个 Windows VM,用于 VS2015 实验。 Google 云端硬盘无法联系更新服务器来完成其自身的安装(尽管 Chrome/Omaha 工作正常)。 显然,我也无法通
我正在使用 QuickFIX/J (1.6.4)。我可以看到所有消息都非常正确地隔离(传入/传出/事件) , event> (Session FIX.4.2:CLIENT2/SUB-> sched
我正在使用 docker-compose 运行我的应用程序。该应用程序包含许多容器。一个容器有一个 node.js 应用程序,另一个容器有一个 .net 核心应用程序。当尝试从任何容器向外部服务器发送
我想将文件从 HDFS 传输到不在 hadoop 集群中但在网络中的不同服务器的本地文件系统。 我本可以做到: hadoop fs -copyToLocal and then scp/ftp .
我遇到了一个奇怪的偶然事件,我的结果 lsof | grep 40006 制作 java 29722 appsrv 54u IPv6 71135755
我错误地 checkin 了一些更改。现在更改正在传出更改中,但我不希望它们交付。我怎样才能让它们回到 Unresolved 状态?如果我丢弃它们,它们就会从我的源代码中消失,我就会失去我的工作。 最
我在将 URL 参数添加到每个生成的 URL 或重定向到 ASP MVC 4 应用程序时遇到问题。 我想生成一个 ID,并在整个应用程序的任何时候使用这个 ID。在 session 中存储 id 不是
我正在开发一个 Java/Spring Web 应用程序,它对每个传入请求执行以下操作: 向第三方网络服务器发出大量请求, 检索每个人的响应, 将每个响应解析为 JSON 对象列表, 将 JSON 对
我有一个基本的“包装器”WinForms 应用程序,它有一些基本控件和一个 WebBrowser 控件 (System.Windows.Forms.WebBrowser)。这链接到一个网络服务,它完成
这个问题在这里已经有了答案: Can I send webrequest from specified ip address with .NET Framework? (3 个答案) 关闭 8 年前
我在这项研究中对交通路口进行研究,我试图找到有影响力的节点,也就是说......哪些路口会相互影响,我试图将我的网络表示为图形网络,所以我搜索了已经使用的算法在希望将同样的方法应用于我的问题的网络中,
我正在开发 OpenCL 1.2 处理大型图像的应用程序。 目前,我正在测试的图像是 16507x21244 像素。我的 内核在一个循环中运行,该循环对图像的 block 进行操作.内核将 32bpp
我知道有关断开链接的问题一直被问到,但我的问题似乎有点不同,而且没有一个解决方案有效。 现在,点击我的导航部分中的其他网站链接时,它们都不起作用。它记录它们在那里,如果您右键单击它并选择“在新选项卡中
我正在使用 node.js 构建数据传输代理服务器。它使用 http(s) REST API 将客户端请求通过管道传输到快速对象存储服务器。 It works fine for the individ
我有一个 Azure Servicebus 函数触发器,每当事件放入其指定队列时,该触发器就会调用外部端点。但是,当函数拾取事件并准备发出传出请求时,它会失败并显示以下日志消息 Executed 'A
我是一名优秀的程序员,十分优秀!