Docker: listening in container, not answering outside

I have a docker container built with “EXPOSE 8000” among its instructions. I started the process like this:

sudo docker run -t -i -P imagename

The process in the container is listening on 8000.

  • Got errors with ONBUILD options (Docker toolbox in Windows)
  • Turning cassandra inter-node encryption on causes “Unable to gossip with any seeds” exception
  • docker exec. What if there is no shell process?
  • How to resize docker container's cpu-share value dynamiclly?
  • Importing .so file made with Cython results in ImportError: … undefined symbol
  • docker how to commit but exclude directory from image
  • # netstat -a
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State      
    tcp        0      0 localhost:8000          *:*                     LISTEN     
    Active UNIX domain sockets (servers and established)
    Proto RefCnt Flags       Type       State         I-Node   Path
    # 
    

    On the host (i.e., outside the container), I see that port 49164 is bound to container port 8000:

    [S-22]jeff@siegfried:~ $ sudo docker ps 
    CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                     NAMES
    0b0e333c6ec9        lkz:latest                 "/bin/bash"         About an hour ago   Up 6 minutes        0.0.0.0:49164->8000/tcp   lkxyz__2015-01-18_202737   
    [S-22]jeff@siegfried:~ $ 
    

    Inded, docker inspect says (among other things)

    "NetworkSettings": {
        "Bridge": "docker0",
        "Gateway": "172.17.42.1",
        "IPAddress": "172.17.0.16",
        "IPPrefixLen": 16,
        "PortMapping": null,
        "Ports": {
            "8000/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "49164"
                }
            ]
        }
    },
    

    And yet, I can’t talk to the container. Outside,

    [S-22]jeff@siegfried:~ $ telnet localhost 49164
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    Connection closed by foreign host.
    1,[S-22] jeff@siegfried:~ $ 
    

    while inside,

    # telnet localhost 8000
    Trying ::1...
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    GET /
    
    [18/Jan/2015 23:00:59] "GET /" 200 4066
    <!DOCTYPE html>
    <html>
    <head>
    ...
    

    I would expect the telnet to 49164 on the outside to return html as it does on the inside.

    Any suggestions?

  • docker restart,exit command, reboot the host machine
  • how force deleting docker image affects existing containers using it
  • Accessing MySQL Database on Host Machine from within Dockers Container
  • How to publish Visual Studio ASP.NET 5 projects to Docker Hub?
  • BOM error, input not detected error
  • copy a single file to docker image
  • One Solution collect form web for “Docker: listening in container, not answering outside”

    You probably want to have the service you’re running in the container to listen on 0.0.0.0 rather than 127.0.0.1

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.