Dockerfile暴露端口的冷知识

0:前言

首先我们说为什么我会出这一期文章,其实这个问题是我在面试的时候遇到的一个面试官问我的问题,当时原问题是

面试官:你知道Dockerfile除了EXPOSE暴露端口之外,还有别的方法么?
我:说实话,我除了EXPOSE之外还真没有了解过其他的方法,但是您既然这么说了,肯定是有别的方法的(我真的没用过别的方法)
面试官:看来对Docker了解的也不是特别深啊。
我:是吧,我的确没有用过其他的方法。
......

就这么一套面试就下去了,反正结果肯定是没通过,所以就有了现在这篇文章

1:使用EXPOSE暴露端口

示意:指定容器应用程序监听的端口。EXPOSE 并不会将容器端口绑定到主机端口,只是向用户声明哪些端口应该与 Docker 容器中的应用程序通信。EXPOSE 命令定义在 Dockerfile 中,它可以帮助其他开发人员或用户理解该容器的功能。
FROM nginx:latest

ADD ./kuberunner.tar.gz /usr/share/nginx/html/
EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

2:使用CMD -p暴露端口

示意:在运行容器时将容器端口绑定到主机端口。CMD -p 命令是在运行容器时指定的,并在容器启动时将容器端口绑定到主机端口,允许主机上的其他服务或用户与容器中的应用程序通信。
FROM nginx:latest

ADD ./kuberunner.tar.gz /usr/share/nginx/html/

CMD ["nginx", "-g", "daemon off;", "-p", "81:80"]

3:总结

因此,EXPOSE 和 CMD -p 的主要区别在于作用时间不同。EXPOSE 主要有一定的注释作用,以告诉其他用户或开发人员容器应用程序监听了哪些端口,而 CMD -p 则在运行容器时将容器内的端口映射到主机上,从而允许主机上的其他服务或用户与容器应用程序通信。
------本页内容已结束,喜欢请分享------

© 版权声明
THE END
喜欢就支持一下吧
点赞3
分享
评论 抢沙发
Gitlayzer的头像-运维开发故事

昵称

取消
昵称表情代码图片