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.

  • Link nodejs app to Rethinkdb from another container
  • nginx gunicorn flask packed inside docker compose with redis server. getting exit status on flask part of docker compose
  • Docker Not Linking Containers
  • Elastic Beanstalk with Docker and Persistent Storage
  • proxypass to phpmyadmin container but got error 502 and Connection refused
  • Getting NettyTcpClient connection error with Spring WebSocket with amqp broker (rabbitmq) while running in docker
  • # 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 Mysql container root password [mysqld listens port 0]
  • Client cannot connect (https) to WebSocket server through nginx reverse proxy
  • WordPress docker compose won't start mysql
  • Copy file to a Docker container before starting it
  • Docker volume on external hard drive
  • docker: certificate signed by unknown authority even though proxy and --insecure-registry set
  • 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.