Tag: docker networking

docker合成和其他图像之间的通信

我有这样的架构: – 在主机端口80上运行nginx的docker组件 – 有2个服务的app:一个节点和一个mongodb docker合成文件: version: '2' services: backend: build: ./back-end/ container_name: "app-back-end" volumes: – ./back-end/:/usr/src/dance-app-back – /usr/src/app-back/node_modules ports: – "3000:3050" links: – mongodb mongodb: image: mongo:3.2.15 ports: – "3100:27017" volumes: – ./data/mongodb:/data/db nginxconfiguration文件 server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location /back_1 { #proxy_pass http://172.17.0.2:5050/; proxy_pass http://0.0.0.0:5050/; } #error_page […]

如果TestContainers不存在,那么TestContainer可以为我创builddockernetworking吗?

看起来我需要一个networking,因为我想通过另一个主机名来引用一个容器。 我也可以使用 – –link但不推荐使用,可能会很快消失。 这就是为什么我想知道Testcontainers是否可以为我创build一个dockernetworking。 使用命令行我只需要执行docker network create bridge2然后我可以像这样启动容器: docker run -it –rm –net=bridge2 –name alpine1 alpine docker run -it –rm –net=bridge2 –name alpine2 alpine 并从alpine1容器parsingnslookup alpine2 。 如果我尝试使用默认的–net=bridge或跳过–net选项(实际上是相同的)引用名称将无法正常工作。

泊坞窗自定义DNS在容器之间解决

我有以下docker-compose.yml php: build: ./phpfpm volumes: – ~/works/codes:/code web: image: nginx:latest ports: – "80:80" volumes: – ~/works/codes:/code – ./nginx/etc/conf.d/virtual.conf:/etc/nginx/conf.d/virtual.conf – ./nginx/var/log/nginx:/var/log/nginx links: – php 我有2个虚拟主机设置在Web容器内 app.lan api.lan 在我的php应用程序,我curl到api.lan 。 但它引发Could not resolve host: api.lan 在我的docker主机中,我添加了以下到/etc/hosts文件 127.0.0.1 app.lan 127.0.0.1 api.lan 我可以从docker主机机器curl到api.lan没有问题。 但似乎web容器不解决docker主机的名称。 如果我findweb容器的IP,并将其放入PHP容器的主机文件,如下所示。 172.18.0.5 api.lan 但是,如何在docker上自动执行这个操作。 还是有其他的最佳做法呢? 另外,如果我cat /etc/resolve.conf的任何一个容器,我可以find以下。 search local nameserver 127.0.0.11 options ndots:0 这是什么127.0.0.11? 它是主机吗? […]

从docker容器到主机超时的curl请求

我遇到了一个docker问题,我相信这是由于我在dockernetworking方面的知识存在差距。 我有一个运行nginx和php的docker镜像。 必要的端口暴露。 这里是我用来运行图像的简化命令。 docker run –name php-app -p 80:80 php-app 问题是,安装设置,PHP应用程序使用主机公用IPcurl到自己。 举个例子, curl http://105.15.25.120/phpsetup.php?setup 这个IP似乎是从容器内部无法访问的,因为curl超时 curl -vvv 105.15.25.120 About to connect() to 105.15.25.120 port 80 (#0) Trying 105.15.25.120… Connection timed out Failed connect to 105.15.25.120:80; Connection timed out Closing connection 0 curl: (7) Failed connect to 105.15.25.120:80; Connection timed out 我可以成功地从容器内curl到其他IP,而不是主机。 从主机使用curl工作正常,并不会导致任何奇怪的行为。 为了简单和testing,我已经用官方的nginx镜像重现了这个行为,以帮助得出结论,这不是我自己的形象的问题。 docker […]

如何在部分隔离的主机上的docker容器中运行yum?

我有一台半隔离networking的机器。 我必须使用代理连接到互联网。 我已经validation,在我的主机上,我设置http_proxy环境variables后,我可以从公共Yum存储库接收更新。 现在我正在试图在我的机器上的Docker容器中做同样的事情,但似乎没有工作。 $docker run –rm -it –net=host rhel /bin/bash [root@MyCont] http_proxy=http://myproxy:1234/ [root@MyCont] echo -e "[base] \nname=CentOS-7 – Base – centos.com\nbaseurl=http://mirror.centos.org/centos/7/os/\$basearch/\ngpgcheck=1\ngpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7" > /etc/yum.repos.d/CentOS7-Base-centos.repo \ && yum clean all \ && yum install -y openssh-server openssh-clients 我提出了我的容器在主机networking模式,所以我假设我应该有我的容器中的主机相同的networking堆栈。 因此,如果我正确设置了http_proxy,我应该在容器内部和外部有相同的yum行为。 是否有可能在docker容器中运行yum,该容器的主机位于需要http_proxy访问yum的半独立networking上?

Postgres与Docker容器和主机LAN联网

我在ARM设备上的Docker容器中运行Postgres。 我想要允许来自两个networking的容器(172.17.0.x)以及主机的LANnetworking(192.168.100.x)的连接。 它是否正确?: 的pg_hba.conf # Docker network host all all 172.17.0.0/24 md5 # Host's LAN network host all all 192.168.0.0/24 md5 对于postgres.conf,我可以为listen_addresses字段使用CIDR掩码吗? 我的networking容器的主机名将与容器名称相同。 我能否假设Docker DNS服务器将所有容器和外部机器主机名parsing为IP地址,并且Postgres将允许这些连接?

第二个geode容器连接到端口10334上的定位器的问题

我正在试图在docker w / 2服务器节点和一个定位器中创build一个Apache Geode集群。 事情似乎一切OK,直到我试图使第二个节点(geodesrvB)连接到定位器。 连接失败,我必须失去一些东西。 我已经把我的bash脚本拆分成单个命令来尝试隔离问题。 下面是一些命令,显示了他们给我的一些初始命令和问题。 任何帮助是极大的赞赏! docker run -d -it -p 162.243.207.235:10335:10334 -p 162.243.207.235:1097:1099 -p 162.243.207.235:40412:40411 –name geodesrvA apachegeode/geode geodesrvB失败,它说端口10334已经分配。 没有为geodesrvB绑定端口10334,当连接到定位器时连接被拒绝 docker run -d -it -p 162.243.207.235:1098:1099 -p 162.243.207.235:10336:10334 –name geodesrvB apachegeode/geode docker run -it apachegeode/geode docker exec -it geodesrvA bash -c 'gfsh -e "start locator –name=locator1 –J=-Dgemfire.jmx-manager-hostname-for-clients=162.243.207.235 –hostname-for-clients=162.243.207.235" -e "start […]

容器到容器通信 – Docker for Windows

我是docker工的新手。 我在Windows 10上使用docker for windows。 我已经创build了一个需要与rabbitmq进行通信的docker容器应用程序(spring boot),这个应用程序又是一个容器,它们都使用相同的dockernetworking(默认网桥),但是当我尝试连接到rabbitmq(端口5672 )连接被拒绝。我正在使用容器IP(rabbitmq为172.17.0.2)。 如果我在Docker容器外部运行连接应用程序并连接到本地计算机的映射rabbitmq端口,它就可以工作。 连接到同一个dockernetworking的集装箱不能使用docker端口相互通信?

连接Oracle数据库容器和Java应用程序容器(Docker)

我现在正在一个docker项目中使用两个docker容器 – 一个用于oracle数据库,另一个用java应用程序。 oracle db的容器工作正常。 我使用了已经build好的oracle映像,并在其中创build了我的表空间和用户。 我用来拉和使用oracle db容器的命令如下: docker pull wnameless/oracle-xe-11g docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g 现在我有我自己的Java应用程序与Oracle数据库交互,我使用下面的命令运行它: docker run -it –name mypgm myrepo/oracletesting 它运行一个交互式java程序,要求提供Oracle数据库的详细信息,并允许用户与数据库进行交互。 但是我不知道如何指定详细信息,如驱动程序名称,连接URL,用户名和密码 我给的价值如下: 驱动程序名称:oracle.jdbc.OracleDriver连接URL:jdbc:oracle:thin:@ localhost:1521 :orcl11g用户名:imtheuser密码:********** 我不知道什么地方出了问题,但它不工作。 我在检查Docker容器的IP地址后也试着给Connection URL提供不同的input: 连接URL:jdbc:oracle:thin:@ 172.17.0.2:1521:orcl11g 我给连接URL和/或端口号是否正确? 有人可以帮助我正确连接这两个容器,并让项目移动? 感谢您的亲切帮助..

如何将请求发送到在外部世界中的AWS EC2机器内的Docker容器内运行的Web服务器?

我有一个运行在AWS EC2 Ubuntu机器上的Docker容器内运行的Python Flask Web服务器。 容器正在运行默认的networking设置(docker0)。 在主机EC2中,我可以使用docker-machine ip(172.xxx)和主机的转发端口(3000:3000)将请求(Get,Post)发送到此Web服务器。 url: http:// 172.xxx:3000 / <api address> 如何从外部世界向这个Web服务器发送请求(GET,POST) ? 例如从另一个EC2机器上运行的另一个Web服务器。 甚至从网上使用我的networking浏览器? 我需要为我的docker主机获取公共IP地址吗? 在另一个EC2中运行的另一个Web服务器中,是否有另一种方式与这种Web服务器交互? 如果您有解决scheme,请尽可能详细地解释,以便我能理解。 我能想到的唯一方法是在主EC2上编写一个Web服务器来监听这些请求,并将它们转发给相应的Docker容器Web服务器? 但是那将会是冗余代码太多,我宁愿直接向容器上运行的Web服务器请求!