远程访问容器

问题描述:

我有一个远程服务器 - 局域网外部,使用公共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 

服务器运行的Ubuntu 14.04.5 LTS。

的脚本是基于 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 

您定义的端口8889是用这部分内容公共领域到达: -p 8889:8088

如果你想能够通过端口8088访问容器,而不是将起始命令更改为:-p 8088:8088

正如我所看到的,比你的IPv6地址绑定到该端口。为了确保IPv4工作正常,您可以使用 -p IP:8088:8088-p 0.0.0.0:8088:8088

+0

我改变了它,但netstat仍然没有看到LISTEN 8088端口。 – user902691

+0

你可以发布'docker ps'的结果和新的netstat结果吗? – Felix

+0

命令'docker ps' CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8c83ab3fb45c kaggle/python:latest“/ usr/bin/tini - ju 42秒前上传41秒0.0.0.0:8088->8088/tcp angry_thompson 休息太长了评论我把它作为编辑后添加。 – user902691