dockerfile——EXPOSE和端口映射参数-p、-P总结

EXPOSE:功能为暴漏容器运行时的监听端口给外部,但是EXPOSE并不会使容器访问主机的端口,如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上 -P参数。
-P:大写P为自动映射,会将EXPOSE暴露出来的端口随机映射到宿主机的端口上,如果没有暴露端口,就不会有映射。
-p:小写p为手动映射,需要自己指定宿主机的端口和容器的端口,形式为:
-p 宿主机端口:容器端口

总结:

(1)无论有没有暴露端口、自动映射或者手动映射,宿主机都可以通过容器ip+80(随nginx监听端口改变而改变)端口访问服务;
(2)要通过宿主机ip+端口的方式访问服务,宿主机的端口必须与容器端口有映射关系;
(3)如果没有暴露端口,-P自动映射不会映射任何端口,-p可以指定宿主机端口和容器端口形成映射。

过程如下:

环境:使用dockerfile制作nginx镜像进行试验
情况一:暴露端口80,不使用映射
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述分别使用宿主机ip地址+80端口、容器ip地址+80端口尝试访问nginx,结果如下:
在这里插入图片描述
宿主机ip地址+80端口无法访问
容器ip地址+80端口可以访问

情况二:暴露端口80,使用自动映射-P
在这里插入图片描述
在这里插入图片描述
分别使用宿主机ip地址+自动映射的32778端口、容器ip地址+80端口尝试访问nginx,结果如下:
在这里插入图片描述
在这里插入图片描述
宿主机ip地址+自动映射的32778端口可以访问
容器ip地址+80端口可以访问

情况三:暴露端口80,使用手动映射-p
在这里插入图片描述
在这里插入图片描述
分别使用宿主机ip地址+手动映射的8081端口、容器ip地址+80端口尝试访问nginx,结果如下:
在这里插入图片描述
在这里插入图片描述
宿主机ip地址+手动映射的8081端口可以访问
容器ip地址+80端口可以访问

情况四:不暴露端口,不使用映射
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分别使用宿主机ip地址+80端口、容器ip地址+80端口尝试访问nginx,结果如下:
在这里插入图片描述
宿主机ip地址+80端口无法访问
容器ip地址+80端口可以访问

情况五:不暴露端口,使用自动映射-P
在这里插入图片描述
在这里插入图片描述
分别使用宿主机ip地址+80端口(无自动映射端口,因此用80)、容器ip地址+80端口尝试访问nginx,结果如下:
在这里插入图片描述
宿主机ip地址+80端口无法访问
容器ip地址+80端口可以访问

情况六:不暴露端口,使用手动映射-p
在这里插入图片描述
在这里插入图片描述
分别使用宿主机ip地址+手动映射的8082端口、容器ip地址+80端口尝试访问nginx,结果如下:
在这里插入图片描述
在这里插入图片描述
宿主机ip地址+手动映射的8082端口可以访问
容器ip地址+80端口可以访问

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Docker是一个强大的应用容器化平台,它可以实现将一个应用及其依赖的组件打包成一个可移植的Docker容器,然后在不同的平台上运行该容器。Dockerfile是一种用于建立Docker镜像的脚本语言,通过指定各种命令和参数,来构建符合要求的Docker镜像。其中,Expose命令就是Dockerfile中一个用于指定容器开放/映射端口的命令。 在Dockerfile中使用Expose命令可以指定容器需要公开/映射端口号,具体命令格式如下: Expose <port> 其中,<port>代表需要映射端口号,可以同时指定多个端口,例如Exopse 80 443。 使用Expose命令后,Docker会在容器的元数据中添加一个开放/映射端口的信息,表示该容器需要暴露给外部的应用使用的端口,但实际上这些端口并没有直接暴露给外部应用。要使外部应用可以访问Docker容器内部的端口,还需要进一步进行端口映射。在启动Docker容器时,可以使用-p-P参数来将容器内部的端口映射到宿主机上,例如: docker run -p 80:80 -p 443:443 myimage 其中,-p参数后面指定的格式为<host port>:<container port>,可以将容器内部的端口映射到宿主机的指定端口上。如果不指定宿主机的端口号,则Docker会自动分配一个可用的端口号进行映射总结来说,Expose命令是用于指定Docker容器需要开放/映射端口,而映射端口则是在启动Docker容器时通过-p-P参数实现的。这样可以让外部应用访问Docker容器内部的应用程序,从而实现应用程序的可移植性和高度可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值