我有一个远程服务器--局域网外,带有公共IP。我想要创建一个简单的启动脚本,它运行我的容器并与外界共享它的端口。
我有以下脚本:
#!/bin/bash
# 8088 should be open host port
docker run -d -v /home/user/nb/:/root -p 8889:8088 kaggle/python jupyter-notebook --no-browser --port=8889
sudo iptables -t nat -A PREROUTING -i em1 -p tcp --dport 8088 -j REDIRECT --to-port 8088但是,在执行脚本后,服务器上没有打开端口8088。
tcp 0 0 10.0.3.1:53 0.0.0.0:* LISTEN 0 17333 -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 13560 -
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1000 9643 -
tcp6 0 0 fa81::3a6e:7afe:fe6b:52 :::* LISTEN 114 17345 -
tcp6 0 0 :::22 :::* LISTEN 0 13562 -
tcp6 0 0 :::8889 :::* LISTEN 0 17509 -
tcp6 0 0 ::1:6010 :::* LISTEN 1000 9642 - 因此,我无法使用来自其他主机的浏览器进行连接,如下所示:
[IPv4_OF_SERVER]:8088服务器运行Ubuntu14.04.5LTS。
该脚本基于https://stackoverflow.com/a/22050818/902691
但是我也尝试过另一种解决方案--运行后服务器上的端口都关闭了。
编辑:根据@Felix修改端口后的:
$ netstat -anlet
tcp 0 0 10.0.3.1:53 0.0.0.0:* LISTEN 0 15758
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 15404
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 1000 14823
tcp6 0 0 fa81::3a6e:7afe:fe6b:52 :::* LISTEN 114 13312
tcp6 0 0 :::22 :::* LISTEN 0 15406
tcp6 0 0 :::8088 :::* LISTEN 0 9985
tcp6 0 0 ::1:6010 :::* LISTEN 1000 14822
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c83ab3fb45c kaggle/python:latest "/usr/bin/tini -- ju 42 seconds ago Up 41 seconds 0.0.0.0:8088->8088/tcp angry_thompson发布于 2016-11-20 20:46:03
您使用以下部分定义了可由公共域访问的端口8889:-p 8889:8088
如果希望通过端口8088访问容器,请将起始命令更改为:-p 8088:8088
正如我所看到的,编辑,因为您的IPv6地址绑定到该端口。要确保IPv4也能工作,可以使用-p IP:8088:8088或-p 0.0.0.0:8088:8088
https://stackoverflow.com/questions/40709096
复制相似问题