首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程访问容器

远程访问容器
EN

Stack Overflow用户
提问于 2016-11-20 20:36:36
回答 1查看 271关注 0票数 0

我有一个远程服务器--局域网外,带有公共IP。我想要创建一个简单的启动脚本,它运行我的容器并与外界共享它的端口。

我有以下脚本:

代码语言:javascript
复制
#!/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。

代码语言:javascript
复制
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        -    

因此,我无法使用来自其他主机的浏览器进行连接,如下所示:

代码语言:javascript
复制
[IPv4_OF_SERVER]:8088

服务器运行Ubuntu14.04.5LTS。

该脚本基于https://stackoverflow.com/a/22050818/902691

但是我也尝试过另一种解决方案--运行后服务器上的端口都关闭了。

编辑:根据@Felix修改端口后的

代码语言:javascript
复制
$ 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
EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40709096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档