在运行容器时,将dockerfile中的端口与映射端口进行EXPOSE有什么区别?
我知道我可以在dockerfile中EXPOSE一个端口(例如8888)。 有了这个dockerfile我可以build立一个图像,然后运行docker run --name container1 -p 8888:8888 image
。 通过这种方法,我可以访问容器中的端口8888。
第二种方法,我没有从dockerfile EXPOSE任何端口。 有了这个dockerfile我可以构buildimage2,然后运行docker docker run --name container2 -p 8888:8888 image2
。
我想问他们之间有什么区别?
我发现一些奇怪的东西
在container1
我运行jupyter notebook --port 8888
。 我可以从运行容器( localhost:8888
)的主机和同一本地networking中的计算机( hostip:8888
)访问port 8888
在container2
我运行jupyter notebook --port 8888
。 我可以从运行容器( localhost:8888
)的主机访问port 8888
,但是我无法通过hostip:8888
从同一本地networking中的计算机访问port 8888
。