在docker中,expose是标记信息的意思,是一种文档表述方式;expose能够在dockerfile中让开发者可以更快读懂Image开放了哪些服务,不能直接打开端口,方便运维人员在使用容器时,知道要打开哪些端口,如果没有expose端口, Container之间服务也是可以互相访问的。
本教程操作环境:linux7.3系统、docker19.03版、Dell G3电脑。
docker中expose是啥意思
Dockerfile 里面的 expose,是标记信息,不能直接打开端口,方便运维人员在使用容器时,知道要打开哪些端口。使用时 docker run -itd -P xxx:xxx ,大写 -P,会映射在Dockerfile文件中使用EXPOSE定义的端口,不需要手动 -p : 这种形式。
EXPOSE只是一种文档表述方式,在dockerfile中让开发者可以更快读懂Image开放了哪些服务,没有实际作用意义。如果没有EXPOSE端口, Container之间服务也是可以互相访问的。
Docker里面expose和publish(run -p)的区别
这里主要记录的是我最近使用docker发现的一个小小的疑惑。总结起来就是:
docker里,命令行启动时候docker run -p暴露接口和dockerfile里expose一个接口之间有什么区别和联系。
具体的描述如下:
比如我先在Dockerfile里Expose一个8080的端口
EXPOSE 8080
然后我build这个image以备后期使用
docker build -t myimage - Dockerfile
接下来就是使用docker run启动这个image的一个container实例,并且publish一个端口
docker container run -d -p 8080 myimage
这里就出现了一个我所说的一个疑问,既然我已经在Dockerfile里声明了Expose端口8080,为什么,我还需要publish这个端口(-p)呢。这两者有什么区别和联系,我是否能够直接
docker container run -d myimage
呢,这种情况下,是否还有端口暴露出来呢?
经过测试,(测试过程被省略,感兴趣的朋友可以自行去测试下,其实这两者之间是有着本质的区别的,同时也有着一定程度的关联
我这边列出这这四种组合
A, 既没有在Dockerfile里Expose,也没有run -p
B, 只在Dockerfile里Expose了这个端口
C,同时在Dockerfile里Expose,又run -p
D, 只有run -p
1------针对情况A,启动在这个container里的服务既不能被host主机和外网访问,也不能被link的container访问,只能在此容器内部使用
2--------针对情况B,启动在这个container里的服务不能被docker外部世界(host和其他主机)访问,但是可以通过container
link,被其他link的container访问到
3--------针对情况C,启动的这个cotnainer既可以被docker外部世界访问,也可以被link的container访问
4---------针对情况D,其实docker做了特殊的隐式转换,等价于情况C,既可以被外部世界访问,也可以被link的container访问到(真对这种情况,原因是docker认为,既然你都要把port
open到外部世界了,等价于其他的container肯定也能访问,所以docker做了自动的Expose
推荐学习:《docker视频教程》
以上是docker中expose是啥意思的详细内容。更多信息请关注PHP中文网其他相关文章!

在Linux上使用Docker的最佳实践包括:1.使用dockerrun命令创建和运行容器,2.利用DockerCompose管理多容器应用,3.定期清理未使用的镜像和容器,4.采用多阶段构建优化镜像大小,5.限制容器资源使用提升安全性,6.遵循Dockerfile最佳实践提高可读性和维护性。这些实践能帮助用户高效使用Docker,避免常见问题并优化容器化应用。

在Linux上使用Docker可以提高开发和部署效率。1.安装Docker:使用脚本在Ubuntu上安装Docker。2.验证安装:运行sudodockerrunhello-world。3.基本用法:创建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。4.高级用法:创建自定义镜像,使用Dockerfile构建并运行。5.优化与最佳实践:使用多阶段构建和DockerCompose,遵循编写Dockerfile的最佳实践。

Docker监控的核心在于收集和分析容器的运行数据,主要包括CPU使用率、内存使用、网络流量和磁盘I/O等指标。通过使用Prometheus、Grafana和cAdvisor等工具,可以实现对容器的全面监控和性能优化。

DockerSwarm可用于构建可扩展和高可用性的容器集群。1)初始化Swarm集群使用dockerswarminit。2)加入Swarm集群使用dockerswarmjoin--token:。3)创建服务使用dockerservicecreate--namemy-nginx--replicas3nginx。4)部署复杂服务使用dockerstackdeploy-cdocker-compose.ymlmyapp。

如何利用Docker和Kubernetes进行企业应用的容器编排?通过以下步骤实现:创建Docker镜像并推送到DockerHub。在Kubernetes中创建Deployment和Service以部署应用。使用Ingress管理外部访问。应用性能优化和最佳实践,如多阶段构建和资源限制。

Docker常见问题可以通过以下步骤诊断和解决:1.查看容器状态和日志,2.检查网络配置,3.确保卷挂载正确。通过这些方法,可以快速定位并修复Docker中的问题,提升系统稳定性和性能。

Docker是DevOps工程师必备的技能。1.Docker是开源的容器化平台,通过将应用程序及其依赖打包到容器中,实现隔离和可移植性。2.Docker的工作原理包括命名空间、控制组和联合文件系统。3.基本用法包括创建、运行和管理容器。4.高级用法包括使用DockerCompose管理多容器应用。5.常见错误有容器无法启动、端口映射问题和数据持久化问题,调试技巧包括查看日志、进入容器和查看详细信息。6.性能优化和最佳实践包括镜像优化、资源限制、网络优化和使用Dockerfile的最佳实践。

Docker安全强化的方法包括:1.使用--cap-drop参数限制Linux能力,2.创建只读容器,3.设置SELinux标签。这些策略通过减少漏洞暴露面和限制攻击者能力来保护容器安全。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6
视觉化网页开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),