Tag: 路由

反应docker化的应用程序:路线不工作

我是新来的Docker,我正在尝试使用这个Dockerfile dockerize一个React应用程序: Dockerfile FROM node:latest LABEL autor="Ed de Almeida" RUN apt-get update && apt-get install -y apache2 tree RUN mkdir /tmp/myapp COPY . /tmp/myapp RUN cd /tmp/myapp && npm install RUN cd /tmp/myapp && npm run build RUN cd /tmp/myapp/build && cp -Rvf * /var/www/html RUN cd /var/www && chown -Rvf www-data:www-data html/ EXPOSE 80 […]

我如何configurationDocker与我的ens34networking接口(而不是eth0)?

有谁知道如何docker决定哪个网卡将与docker0networking工作? 我有一个有两个接口(eth0和ens34)的节点,但是只有通过eth0的请求被转发到容器。 当我的虚拟机configuration好了,并且安装了Docker后,我开始了一个非常愚蠢的testing:我创build了一个centos虚拟机,安装了netcat并提交了镜像。 然后我启动了一个监听端口8080的守护进程容器。我使用了: docker -it -p 8080:8080 –name nc-server nc-server nc -vv -l 8080 所以我尝试连接到从同一networking中的另一个节点(与接口ens34相同的IP地址)监听8080端口的容器。 它不起作用。 而当我从另一台机器向eth0的IP地址发送请求时,我发现容器中有一些反应(通信正常)。 我用下面的方法“输出”输出: docker logs -ft nc-server 我的结论是:eth0(主NIC)和docker0之间有一些神秘的关系,发送到ens34(10. )接口的请求永远不会被转发到veth / docker0接口,只有通过eth0 9. *)。 为什么? 此外,我知道如果我使用–net = host,我可以使所有的工作,但我不想用它…它不觉得正确的,是在Docker中使用HOST模式的标准做法容器? 任何警告呢? – 更新:我设法禁用iptables后使其工作: service iptables stop 但是,我仍然不知道发生了什么事情。 下面的信息应该是相关的,以了解是怎么回事: 使用ifconfig [root@mydockervm2 myuser]# ifconfig | grep -A 1 flags docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet […]

将主机dynamic路由到docker

我试图dynamic路由Web主机LAMPdocker容器。 有点如何“阿帕奇dynamic虚拟主机”路由Web主机到他们的Webroot文件夹根据他们的名字( http://httpd.apache.org/docs/current/vhosts/mass.html )。 我试图使用相同的虚拟机上的nginx泊坞窗使用相同的主机名将networking主机路由到泊坞窗。

Docker群集模式,内部运行多个具有唯一域名的服务,但每个服务都在端口80上

我试图设置一个微服务部署( https://github.com/mojlighetsministeriet/groups/blob/master/docker-compose.example.yml部署文件)与几个服务,将使用HTTP(希望稍后HTTPS)在内部进行通信而不会暴露在networking之外。 我稍后将添加一个代理服务,将公开特定的function。 我想用docker swarm模式做这个,我喜欢在docker-compose.yml中定义部署的可能性,所以我可以使用: $ docker stack deploy my-platform -c docker-compose.example.yml 我想要内部的APIurl像GET http:// identity-provider / public-key和GET http:// groups / b0c44674-58e0-4a8a-87e0-e1de35088964 。 我之前已经用Kubernetes设置完成了这个工作,而且工作很好,但是现在我想用docker swarm模式工作。 DNS部分工作没有任何问题,但docker群模式不会让我有每个服务侦听端口80(稍后将443)。 即使每个服务都有唯一的域名,例如身份提供者或组等,它也会不断抱怨端口冲突。 我应该使用特定的networking驱动程序来实现这个function吗? 我目前使用覆盖。 使用没有随机端口的域名将使服务之间的调用比例如http:// identity-provider:1234和http:// groups:1235更加简单,这些端口仅增加了设置的复杂性。 如果有帮助的话,我可以使用任何超级尖端版本的docker-ce。 这应该是可能的吧?

不能通过IP地址访问docker容器

我正在一个Django的应用程序,我决定把我所有的开发进入docker集装箱。 我有一个小问题:基本上,我有3个容器: – 应用程序(其中包含django代码) – postgres(其中包含数据库) – networking(这是一个nginx转发请求端口80到8000是端口使用的Django)我的问题是,我不能访问我的网站外的“应用程序”容器,我的nginx日志说: 2014/12/21 22:22:35 [error] 9#0: *9 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.59.3, server: _, request: "GET / HTTP/1.1", upstream: "http://172.17.0.62:8000/", host: "192.168.59.103" 显然,nginx不能转发连接,因为“app”容器(192.168.59.103)不会侦听连接。 但是这不是真的,因为我附加到应用程序容器,我试图做一个curl请求,但: – 如果我curl "localhost:8000" ,它的作品(我得到的django欢迎页面 – 如果我做curl "http://172.17.0.62:8000/"不行的所以,我设法隔离问题并运行”路由“命令,显示我: Destination Gateway Genmask Flags Metric Ref Use Iface default 172.17.42.1 0.0.0.0 UG […]

Docker容器比wlan0更喜欢主机eth0的互联网

如何启动Docker容器,以便在两者都可用时使用主机的eth0而不是wlan? 我希望容器在办公室直接使用我的有线连接来访问networking资源,而不受主机的networking设置的影响,这些设置允许我通过WiFi访问互联网。 主机是Ubuntu 14.04,容器是Ubuntu 14.04。

docker路由没有iptables

我有一个运行命令sudo docker run -p 8002:80 nginx的docker nginx镜像 我想知道的是,路由如何从hostmachine:8002转到端口80上监听的容器。通常有非常明确的iptables,但是如果禁用iptables,它仍然可以工作。 然后我注意到有一个docker-proxy进程侦听每个暴露的端口,我会假设代理/ NAT。 所以我用–userland-proxy=false禁用了userland代理。 这样做之后,我现在只能看到一个进程docker-current ,仍在监听所有暴露的端口。 我只能假设docker-current进程正在执行na​​t,但是这让我想知道为什么userland代理和/或iptables在那里? 有没有一种方法,我可以看到/certificate自己在哪里发生的事情(即打开/closures的东西,不能curl我的nginx容器,然后能够)?

为什么启动Docker容器会更改主机的默认路由?

我用下面的路由表configuration我的主机: user@host:~ $ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface {VPN SERVER IP} 192.168.2.1 255.255.255.255 UGH 0 0 0 wlan0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 所以,没有连接到VPN,我没有连接到互联网: user@host:~ $ ping google.com connect: Network is unreachable 一旦我启动我的docker容器主机的路由表变成: user@host:~ $ […]

转发域到docker集装箱

我想转发请求 (通过域名)从公共IP到docker集装箱 。 我的networking如下所示: 它应该像这样工作: first.com – >“第一”容器,172.17.0.2/16 mail.first.com – >“first-mail”容器,172.17.0.3/16 second.com – >“第二”容器,172.17.0.4/16 但是我只有转发端口的经验。 我想我需要一个条件转发依赖于互联网请求的域名信息 。 这样的路由器的东西: if(request.DomainName == "*.first.com" || request.DomainName == "*.second.com" { forward(request, "10.0.0.10"); } 和“Docker主机”机器类似。 但是我找不到这个转发的例子。 我误解了它应该如何?

有几个相同容器的堆栈:端口已被用作入口端口

我正在尝试实现以下设置: 我有一个中心堆栈包含我的nginx代理的东西。 这个栈声明一个networking(我们称之为nginx_proxy_net ) 接下来,我要为2个wordpress安装设置2个堆栈 ,每个堆栈都是独立的,并且包含自己的wordpress服务和mysql服务。 两个wordpress使用nginx_proxy_netnetworking。 当我尝试启动我的2个堆栈时,会发生以下情况: 第一个WordPress的堆栈启动成功。 到现在为止还挺好 第二个wordpress堆栈拒绝启动,因为端口3306(mysql)&80(wordpress)已经在使用。 错误是: Error response from daemon: rpc error: code = 3 desc = port '80' is already in use by service 'nginx_proxy_nginx-proxy' (n1ncrh8igvew4advk650dwjdr) as an ingress port 我明白,每个导出的端口绑定在路由网格上 ,我也明白,你可以在多个networking上连接你的服务。 所以我试图为每个堆栈创build一个networking,所以在每个堆栈networking上都有一个MySQL和一个Apache。 我对Docker并不是非常有经验,所以也许我会问一些非常愚蠢的事情:是否可以在我的堆栈networking上公开我的端口,而不是在入口? 我怎样才能把我的堆栈设置成独立于其他的呢? 非常感谢,祝你有个愉快的一天 亚历克斯