我正在尝试在远程计算机上运行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的问题吗?
答案 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到达您的容器。