zoukankan      html  css  js  c++  java
  • 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端口可以访问

  • 相关阅读:
    pip list报警告DEPRECATION
    JMeter使用ServerAgent监控阿里云服务器连接不上处理方法
    mysql:查询排名
    jmeter教程(二十):性能测试执行及结果分析
    jmeter(二十一)jmeter常用插件介绍
    Jmeter第三方插件Jmeter Plugins
    jmeter 03Jmeter常用插件——梯度加压、响应时间、TPS
    Jenkins 定时任务触发时间表达式 与 cron表达式详解(两者相似但有差异)
    前端语言之JavaScript
    前端语言之CSS样式
  • 原文地址:https://www.cnblogs.com/ExMan/p/13084129.html
Copyright © 2011-2022 走看看