Tag: dockernetworking

从主机ip访问具有随机端口的docker容器

情景是这样的: 有一个应用程序在Linux机器的容器中运行。 这个应用程序有几个服务在里面运行,每个服务都有自己的端口号。 端口号是相当随机的。 现在我想在Mac笔记本电脑上访问这个应用程序。 这台Mac笔记本电脑能够ping Linux机器ip。 目前我正在做的一个方法是将所有端口从Docker容器映射到Linux机器,然后我可以使用Linux机器IP从Mac进行访问。 但是这种方法不能随着更多的服务join进行扩展。 我想知道是否有人遇到同样的问题,并有更好的方法来处理这个问题? 我们不在这些Linux机器上运行Kubernetes,因为它们不是服务器。 这些机器是为了个人发展。 谢谢!

如何使用docker在同一个域上为每个用户创buildlinux映像

这是我希望能够做到的(我甚至不知道在网上找什么文档)。 docker run –name userXXX -d ubuntu docker run –name userYYY -d ubuntu docker run –name userZZZ -d ubuntu 这样我就可以将一个rootlogin交给一个域的容器。 喜欢: ssh root@userXXX.somedomain.foo ssh root@userYYY.somedomain.foo ssh root@userZZZ.somedomain.foo 这甚至有可能吗? 我想象我需要设置DNS somedomain.foo 并在同一个dockernetworking上拥有所有的主机(这似乎足够合理)。 我似乎无法弄清楚的问题是正确的路由,其中​​hostname.somedomain.foo =>docker集装箱 每个容器将需要它自己的IP注册使用该主机/ IP更新DNSloggingDNS需要是somedomain.foo的DNS权限之一,我的真实networking上的所有机器都知道。 有没有人做过这样的事情? 如果这个问题更适合超级用户,那么让我知道,我可以移动它

以特定的顺序向Docker容器添加一个新的NIC

我正在尝试拥有两个networking接口的CentOS容器。 在经过Docker文档和“googleing”之后,我发现了这个GitHub问题评论 ,指出了如何实现这一点。 之后,我创build了一个新的networking(默认types: bridge ) docker network create my-network 检查新的networking,我可以看到Docker分配给子网172.18.0.0/16和网关172.18.0.1/16 。 然后,在创build容器时,我专门附加了新的networking: docker create -ti –privileged –net=my-network –mac-address 08:00:AA:AA:AA:FF <imageName> 在容器内部,我可以检查ifconfig是否确实存在该IP和MAC地址的接口: eth0 Link encap:Ethernet HWaddr 08:00:AA:AA:AA:FF inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::a00:aaff:feaa:aaff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 […]

我的主机上的iptables 443redirect如何干扰来自我的Docker容器的出站HTTPS请求?

我最近诊断了一个涉及Docker和iptables的非常复杂的问题。 我有一个Ubuntu主机与以下的iptables设置: $ sudo iptables -L -t nat […] Chain xyz (1 references) target prot opt source destination REDIRECT tcp — anywhere anywhere tcp dpt:https /* xyz */ redir ports 8443 这个规则是为了将所有来自端口443的入站stream量redirect到8443,这意味着将stream量redirect到一个基于Java的应用程序,这个应用程序与我的Docker容器无关,但是运行在同一台机器上,签署SSL证书。 当我使用Docker的默认networking设置在同一台计算机上运行Docker容器时,Docker(或OS)似乎将出站连接redirect到Ubuntu主机上的端口8443,并且在容器中发出wget HTTPS请求,因此,对本地的基于Java的应用程序来说,接受连接(大部分时间)并返回无效的(自签名)证书详细信息。 结果,容器内的应用程序最终与主机上的本地Java应用程序通话,而不是互联网上的真实服务器,他们应该与之通话。 我还证实,直接从Ubuntu主机发出的任何wget HTTPS请求都会触发Internet上的目标服务器。 只有在同一主机上运行的Docker容器启动的请求才会出现问题。 谁能解释为什么会发生这种情况

Docker DNS设置

我尝试创build自定义networking和dos设置docker容器。 docker network create –driver = bridge –opt“com.docker.network.bridge.enable_ip_masquerade”=“true”–opt“com.docker.network.bridge.enable_icc”=“true”–opt =“com .docker.network.driver.mtu“=”1500“–opt =”com.docker.network.bridge.host_binding_ipv4“=”0.0.0.0“net – docker run –dns 10.0.0.2 –network = net busybox cat /etc/resolv.conf 名称服务器127.0.0.11选项ndots:0 否则,如果我使用标准networking一切正常 docker run –dns 10.0.0.2 –network = bridge busybox cat /etc/resolv.conf nameserver 10.0.0.2

具有不同networking接口的Docker容器

问题:我想在Docker容器中运行多个VPN服务器,每个都有自己的公有IP。 使用-p参数,我可以分别连接到每一个,但是我看到的公共IP是eth0接口,而不是我想要的(eth0:1),所以我如何创build一个新的docker0接口eth0:1作为stream量的接口? 最好的问候和感谢。

访问Docker容器内的微服务?

我有一个在9000端口的容器中运行的Dropwizard Microservice。 在Dockerfile中,我像这样暴露了端口 FROM maven:3.3-jdk-8-alpine # Install packages RUN apk add –no-cache curl tar bash wget EXPOSE 9000 然后我像这样运行容器 docker run –add-host="localhost:10.0.2.2" -t foo-service 但是,当我尝试访问它在localhost:9000我没有得到在浏览器的响应。 我如何从Docker主机访问微服务? Docker主机是Ubuntu 16.04 非常感谢

已发布的服务在Docker群集上无法访问

所以我在docker群上创build了一个服务: docker create service –name my-service –network my-network -p 8761:8761 –replicas 1 my-image 这是一个Spring Boot应用程序,当查看创build的docker容器的标准输出时,显示以下行: 2017-01-19 12:44:48.588 INFO 6 — [ main] sbcetTomcatEmbeddedServletContainer : Tomcat started on port(s): 8761 (http) 指示应用程序监听正确的端口。 当运行docker service inspect my-service它也说端口8761是为这项服务发布的。 当我然后尝试问题: curl http://localhost:8761 (在docker群主,现在群中唯一的节点)我跑到超时。 curl到任何其他端口导致立即Connection Refused错误。 Spring Boot应用程序在机器上直接启动时工作正常,日志中没有任何提示,我真的不知道接下来要看哪里…有人在这里提供线索吗?

如何启用docker集装箱通过他们的主机名相互ping通?

我想能够从另一个docker集装箱ping通docker主机名。 我怎样才能做到这一点 ? 我的容器在同一个dockernetworking上。 有人可以指导我在哪里寻找或search,我是networking新手,不知道我应该search什么来解决这个问题。

dockernetworking不工作没有链接

我有一个mysql容器和一个service容器,需要连接到mysql容器。 我创build了一个networking与docker network create chrisbolton 我正在旋转的mysql容器 docker run –name chrisbolton-mysql -v /Users/Bolton/chrisbolton-data:/var/lib/mysql –network chrisbolton -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=chrisbolton -d mysql:latest 我正在旋转service容器 docker run -p 8080:8080 –name chrisbolton-service –network chrisbolton –link chrisbolton-mysql:mysql -d chrisbolton-service 不过,我知道这个link已被弃用,我需要转移到只使用networks 。 但是,如果我删除link在这里两个容器不能沟通。 我用以下configuration连接到mysql : #disbale Spring banner spring.main.banner-mode=off spring.datasource.url=jdbc:mysql://mysql:3306/chrisbolton spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.jdbc.Driver 我做了一个docker network inspect chrisbolton得到的IPAddresses,并试图改变我的configuration文件指出,直接。 但仍然不知道为什么它不会连接。