Connection refused by Docker container

时光毁灭记忆、已成空白 提交于 2019-12-12 03:04:39

问题


I've struggled with this for quite some time.

I have a Django application and I'm trying to package it into containers.

The problem is that when I publish to a certain port (8001) the host refuses my connection.

$ docker-machine ip default
192.168.99.100

When I try to curl or reach by browser 192.168.99.100:8001, the connection is refused.

C:\Users\meow>curl 192.168.99.100:8001
curl: (7) Failed to connect to 192.168.99.100 port 8001: Connection refused

First remark: I'm using Docker Toolbox.

Let's start from the docker-compose.yml file.

version: '2'
services:
  db:
    build: ./MongoDocker
    image: ockidocky_mongo
  web:
    build: ./DjangoDocker
    image: ockidocky
    #volumes: .:/srv
    ports: 
    - 8001:8000
    links: 
    - db

Second remark: This file orginally gave me some trouble about permission building from scratch. To fix this, I built the images separately.

docker build -t ockidocky .
docker build -t ockidocky_mongo .

Here's the dockerfile for Mongo:

# Based on this tutorial. https://devops.profitbricks.com/tutorials/creating-a-mongodb-docker-container-with-an-attached-storage-volume/
# Removed some sudo here and there because they are useless in Docker for Windows

# Set the base image to use to Ubuntu
FROM ubuntu:latest
# Set the file mantainer
MAINTAINER meow

RUN apt-key adv --keyserver  hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 && \
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/mongodb.list && \
apt-get update && apt-get install -y mongodb-org


VOLUME ["/data/db"]
WORKDIR /data

EXPOSE 27017
#Edited with --smallfiles (Check this issue https://github.com/dockerfile/mongodb/issues/9)
CMD ["mongod", "--smallfiles"]

Dockerfile for Django is based on this other tutorial.

I won't include the code, but it works.

It's important to say that the last row is:

ENTRYPOINT ["/docker-entrypoint.sh"]

I changed the docker-entrypoint.sh to run without Gunicorn.

echo Start Apache server.
python manage.py runserver

At this point docker ps tells me that everything is up:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ddfdb20c2d7c        ockidocky             "/docker-entrypoint.s"   9 minutes ago       Up 9 minutes        0.0.0.0:8001->8000/tcp   ockidocky_web_1
2e2c2e7a5563        ockidocky_mongo       "mongod --smallfiles"    2 hours ago         Up 9 minutes        27017/tcp                ockidocky_db_1

When I run a docker inspect ockidocky and about ports, it displays:

"Ports": {
                "8000/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8001"
                    }
                ]
            },

Is this dependant on mounting volumes?

It is one of the things I really can't figure out and gives me a lot of errors with Docker Toolbox.

As far as I can see everything worked fine during the build, and as far as I know the connection that was refused shouldn't depend on that.

EDIT: After connectinc to the container and listing the processes with ps -aux, this is what I see:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.7  3.0 218232 31340 ?        Ssl  20:15   0:01 python manage.p
root         9 13.1  4.9 360788 50132 ?        Sl   20:15   0:26 /usr/bin/python
root        15  0.0  0.2  18024  2596 ?        Ss   20:15   0:00 /bin/bash
root        20  0.1  0.3  18216  3336 ?        Ss   20:17   0:00 /bin/bash
root        33  0.0  0.2  34424  2884 ?        R+   20:18   0:00 ps -aux

P.s. Feel free to suggest how I can make this project easier for myself.


回答1:


I solved the issue. I don't know why I had to specify the door on this line of docker-entrypoint.sh:

python manage.py runserver 0.0.0.0:8000

Now docker logs ockidocky_web_1 shows the usual django output messages.

If someone could give a proper explanation, I would be happy to edit and upvote.



来源:https://stackoverflow.com/questions/40849000/connection-refused-by-docker-container

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!