下列的镜子教程在 dockerhub 上,我设法在远程 Linux 服务上运行 docker web 应用程序。这里的host是远程ubuntu服务器,可以通过浏览器地址“http://localhost:8888/index.html”访问。以同样的方式,我使用以下命令构建了容器。
docker run -it --rm -p 8888:8888 --shm-size=512M mathworks/matlab:r2022b -browser
但是,问题是该应用程序只能从主机上的浏览器访问,而不能从我的本地计算机或同一局域网上的不同计算机的浏览器访问。我很难通过搜索网络并尝试通过指定以下 URL 地址来访问它来找到解决方案,但没有任何效果。
"http://localhost:8888/index.html"
"http://<linux_ip_id>:8888/index.html"
"http://<windows_ip_id>:8888/index.html"
"http://<container_ip_id>:8888/index.html"
另外,我从其他来源我需要设置主机和本地计算机之间的网络方法进行桥接,其解决方案是 VM VirtualBox Manager 设置。但我的情况不同,主机是远程独立的 ubuntu 服务器。 docker容器默认作为桥与主机通信,但是我尝试通过使用指定的网络连接构建docker容器来运行docker容器,--network=host
上面的访问地址仍然不起作用!
注:我的本地电脑是windows 10系统,与远程Linux系统在同一个局域网内,即可以正常ping通服务器IP地址,也可以通过ssh连接。
答案1
我也有过类似的情况。 Docker 运行在 Linux 服务器虚拟机上。尝试从其他网络中的其他计算机远程访问 docker 容器。解决方案是修改linux服务器上的iptables:
iptables -I DOCKER-USER -i ensXX -s 0.0.0.0/0 -j ACCEPT
该命令允许从任何网络进行连接。 ensXX - 是我的 Linux 服务器网络接口(参见 ifconfig)。
执行此命令后,我能够远程连接到 docker 容器。
有关 docker 和 iptables 的更多信息:https://docs.docker.com/network/iptables/
答案2
幸运的是,我能够使用ssh
命令解决我的问题。在本地windows系统上使用的参考命令ssh
如下。
ssh -L 8888:<remote_linux_ip>:8888 <my_name>@<remote_linux_ip>