我知道我可以在dockerfile中显示一个端口(例如8888)。使用此dockerfile,我可以构建一个图像,然后运行docker run --name container1 -p 8888:8888 image
。通过这种方法,我可以访问容器中的端口8888。
第二种方式我没有从dockerfile中扩展任何端口。使用这个dockerfile,我可以构建image2,然后运行docker run --name container2 -p 8888:8888 image2
。
我想问一下他们之间的区别是什么?
我找到了一些奇怪的东西。在container1
我运行jupyter notebook --port 8888
。我可以从运行容器(port 8888
)的主机和同一本地网络中的计算机(localhost:8888
)访问hostip:8888
在container2
我运行jupyter notebook --port 8888
。我可以从运行容器的主机port 8888
)访问localhost:8888
,但我无法通过port 8888
从同一本地网络中的计算机访问hostip:8888
。< / p>