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 则在运行容器时将容器内的端口映射到主机上,从而允许主机上的其他服务或用户与容器应用程序通信。
相关推荐
评论 抢沙发