[英]Docker is not correctly binding ports on windows
我開始將項目移至docker容器,以便能夠開發更多內容,而又不必過多依賴我使用的OS。
這是我運行容器的方式:
docker run -d -v "$(pwd)/app:/app" -v "/c/Users/Geoffrey/Projects/go:/go" --name "server" --link mysql:mysql -p 127.0.0.1:3000:3000 my/server:latest
很快,我的程序執行一個入口點,啟動我的go應用程序,監聽端口3000。
這是與此容器關聯的Dockerfile:
##
## Author: Geoffrey Bauduin <bauduin.geo@gmail.com>
##
## Use Ubuntu 14.04
FROM ubuntu:trusty
MAINTAINER Geoffrey Bauduin <bauduin.geo@gmail.com>
ENV DEBIAN_FRONTEND noninteractive
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/02apt-speedup
RUN echo "Acquire::http {No-Cache=True;};" > /etc/apt/apt.conf.d/no-cache
RUN echo $'#!/bin/sh\nexit 101' > /usr/sbin/policy-rc.d
RUN chmod +x /usr/sbin/policy-rc.d
## Installing gcc for go
RUN apt-get update && apt-get install -y --no-install-recommends \
g++ \
gcc \
libc6-dev \
make \
wget \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
ENV GOLANG_VERSION 1.5.3
ENV GOLANG_DOWNLOAD_URL http://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
RUN wget "$GOLANG_DOWNLOAD_URL" \
&& tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz \
&& rm go1.5.3.linux-amd64.tar.gz
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
EXPOSE 3000
當我從Windows主機瀏覽http://localhost:3000
,Chrome返回ERR_CONNECTION_REFUSED
,相同的內容是127.0.0.1
,我的網絡地址(從ipconfig
返回),甚至容器地址( docker inspect server | grep IPAddress
)都顯示了同樣的錯誤信息。 但是,當我在容器中執行/bin/bash
並執行curl localhost:3000
,我可以看到服務器實際上正在預期的端口上運行。
有什么我想念的嗎? 就像為什么Docker為什么在不顯示任何錯誤消息的情況下無法在我的機器上綁定任何東西?
任何幫助將非常感激!
您應將-p 127.0.0.1:3000:3000
更改為-p 3000:3000
或使用-P
代替它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.