2016-03-07 16 views
2

我想运行詹金斯泊坞窗集装箱港,但证明,我在Ubuntu 15.10中运行的netcat的服务器容器的问题:无法连接到一个应用程序正在侦听

Docker version 1.6.2, build 7c8fca2 

这里是我的Dockerfile:

FROM ubuntu 
CMD while true; do echo 'HTTP/1.1 200 OK\r\n\r\nHello world' | nc -l 8080; done 

当主机上运行,​​这只有一行将返回HTTP 200个响应。

现在,在容器上。然后docker build -t mydoc .。冉docker run -it --expose 8080 -p 8080:8080 mydoc。在另一个终端,试图卷曲它:curl -D - -o - http://127.0.0.1:8080

它只是块没有响应。

一些可能相关的信息:

>docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS     NAMES 
1acc13bb3384  mydoc:latest  "/bin/sh -c 'while t 48 seconds ago  Up 47 seconds  0.0.0.0:8080->8080/tcp goofy_darwin   

>netstat -ant | grep 8080 
tcp  0  1 10.0.2.15:34512   172.17.0.25:8080  SYN_SENT 
tcp  0  0 127.0.0.1:33276   127.0.0.1:8080   ESTABLISHED 
tcp6  0  0 :::8080     :::*     LISTEN  
tcp6  78  0 127.0.0.1:8080   127.0.0.1:33276   ESTABLISHED 

注意SYN_SENT。这是尽可能的。

回答

0

Linux的服务状态显示为:

● docker.service - Docker Application Container Engine 
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) 
    Active: active (running) since Mon 2016-03-07 13:39:44 CST; 2min 24s ago 
    Docs: http://docs.docker.com 
Main PID: 672 (docker) 
    Memory: 11.2M 
     CPU: 62ms 
    CGroup: /system.slice/docker.service 
      └─672 /usr/bin/docker -d -H fd:// 

这个固定的问题:

service docker restart 

我不知道为什么。现在,服务响应:

>curl -D - http://127.0.0.1:8080 
HTTP/1.1 200 OK 

Hello world 

此外,选择--expose 8080没有必要为此工作。

编辑:

得到1.6.2工作之后,我升级到1.10.2,并没有看到这个问题呢。我怀疑主机启动时存在某种竞争条件,但无法肯定地说。也许码头服务脚本需要一个Required-Start: $network什么的。

相关问题