2014-12-26 67 views
2

我有一個名爲後端的Docker容器,它暴露了一個端口8200,並在它內部的gunicorn後面運行了一個django服務器。這是我的Dockerfile:即使我可以ping它,也不能捲曲Docker中的鏈接容器

FROM debian:wheezy 

RUN rm /bin/sh && \ 
    ln -s /bin/bash /bin/sh && \ 
    apt-get -y update && \ 
    apt-get install -y -q \ 
        curl \ 
        procps \ 
        python=2.7.3-4+deb7u1 \ 
        git \ 
        python-pip=1.1-3 \ 
        python-dev \ 
        libpq-dev && \ 
    rm -rf /var/lib/{apt,dpkg,cache,log} 

RUN pip install virtualenv && \ 
    virtualenv mockingbird && \ 
    /bin/bash -c "source mockingbird/bin/activate" 

ADD ./requirements.txt /mockingbird/backend/requirements.txt 
RUN /mockingbird/bin/pip install -r /mockingbird/backend/requirements.txt 

ADD ./src /mockingbird/backend/src 

CMD ["/mockingbird/bin/gunicorn", "--workers", "8", "--pythonpath", "/mockingbird/backend/src/", "--bind", "localhost:8200", "backend.wsgi"] 

我跑這個容器像這樣:

[email protected]:~$ sudo docker run --name backend --env-file /mockingbird/apps/backend/env/dev -d --restart always --expose 8200 mockingbird/backend 

我知道Django的服務器並通過執行以下操作,並得到響應響應的正確端口:

[email protected]:~$ sudo docker exec -it backend /bin/bash 
[email protected]:/# curl localhost:8200 

然後我開始一個新的容器連接到後端如下:

sudo docker run -it --link backend:backend debian:wheezy /bin/bash 

但是當我嘗試捲曲的後端,這是行不通的:

[email protected]:/# apt-get update && apt-get install curl 
[email protected]:/# curl backend:8200 
curl: (7) couldn't connect to host 

我,不過,能ping後端:

[email protected]:/# ping backend 
PING backend (172.17.0.41): 48 data bytes 
56 bytes from 172.17.0.41: icmp_seq=0 ttl=64 time=0.116 ms 
56 bytes from 172.17.0.41: icmp_seq=1 ttl=64 time=0.081 ms 

任何人都知道什麼事我可以嘗試調試爲什麼我無法連接到在我的鏈接的Docker容器中運行的服務?有沒有什麼我在這裏失蹤可以捲起後端:8200從鏈接的容器?

回答

3

這可能是一個問題:"--bind", "localhost:8200"作爲連接backend主機名將不被接受。您可能想要將其更改爲"0.0.0.0:8200"":8200",具體取決於支持的符號。

+0

謝謝,這樣做! –

+0

@Mykola Gurov:我在docker-compose中面臨同樣的問題,儘管我已經公開了所需的端口。 – user208859

+0

我也在同一條船上。你能找到解決方案嗎? – Bryce

相關問題