在0.0.0.0而不是127.0.0.1上运行sourcegraph docker镜像

时间:2018-01-04 17:27:16

标签: docker sourcegraph

我正在尝试在远程计算机上运行sourcegraph服务。运行sourcegraph的指令以

的形式给出

https://about.sourcegraph.com/docs/server

docker run \
 --publish 7080:7080 --rm \
 --volume /tmp/sourcegraph/config:/etc/sourcegraph \
 --volume /tmp/sourcegraph/data:/var/opt/sourcegraph \
 sourcegraph/server:2.3.11

这会在127.0.0.1处运行sourcegraph我希望在0.0.0.0运行,以便我可以从远程计算机访问该服务。

尝试这个不起作用。

docker run --publish 0.0.0.0:7080:7080 ...

它说,它正在运行服务

Sourcegraph is now running at http://localhost:7080

有什么建议吗?这可能是 sourcegraph的问题吗?

1 个答案:

答案 0 :(得分:0)

--publish 7080:7080

该选项导致docker侦听所有主机接口并将流量从主机端口7080转发到容器的端口7080.容器必须侦听其网络命名空间内的所有接口才能使其工作(docker无法与loopback接口通信在容器的网络名称空间内。)

Sourcegraph is now running at http://localhost:7080

这实际上是来自您的应用程序的误导性消息(这不是来自docker本身)。使用netshoot测试此映像表明容器正在侦听所有接口:

$ docker ps
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                    PORTS               NAMES
687f9749d99c        sourcegraph/server:2.3.11        "/sbin/tini -- /usr/…"   43 minutes ago      Up 43 minutes                                 keen_torvalds
...

$ docker run -it --rm --net container:687f9749d99c nicolaka/netshoot /bin/sh
/ # netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:5005          0.0.0.0:*               LISTEN      
tcp        0      0 127.0.0.1:3700          0.0.0.0:*               LISTEN      
tcp        0      0 :::7080                 :::*                    LISTEN      
tcp        0      0 :::3178                 :::*                    LISTEN      
tcp        0      0 :::3179                 :::*                    LISTEN      
tcp        0      0 :::6379                 :::*                    LISTEN      
tcp        0      0 :::6060                 :::*                    LISTEN      
tcp        0      0 :::3180                 :::*                    LISTEN      
tcp        0      0 :::3181                 :::*                    LISTEN      
tcp        0      0 :::3090                 :::*                    LISTEN 

注意:::7080行显示容器正在所有接口上侦听此端口。只要您的网络允许,您就可以通过主机IP端口7080到达您的容器。