首页  >  问答  >  正文

docker 端口映射 有点蒙圈 谁给解释一下

docker 端口映射 有点蒙圈 谁给解释一下

ringa_leeringa_lee2706 天前2914

全部回复(3)我来回复

  • 淡淡烟草味

    淡淡烟草味2017-04-25 09:03:39

    容器间互相访问需在容器创建时使用--link参数,并且最好被连接的容器已经命名过。

    docker run --name mysql .......
    docker run --name php --link mysql .......
    docker run --name nginx --link php .......

    以这种方式启动时,只需要在程序内使用对应的容器名即可访问相应的服务。
    例如 fastcgi_pass php:9000;

    如果是对外暴露端口,需要通过-p或者-P参数,最好使用-p。
    docker run --name nginx -p 80:80 -p 443:443 .......
    这样浏览器就能访问到这台服务器提供的Web服务了。

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-25 09:03:39

    端口映射:
    就是选择一个你本机的端口映射到你的容器的一个端口,这样若有请求来到,访问你本机的那个被映射的端口,这个时候就会将请求转发到容器的那个端口,依靠容器里的服务来处理请求。

    为什么要有端口映射?
    你的本机IP是个公网ip,例如1.2.3.4;但是本机的容器的ip是个虚拟ip,例如172.17.0.2。外界是没法直接访问你的容器的服务的,这个时候就通过访问本机的端口来达到使用容器中服务的目的。

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-25 09:03:39

    不知道所谓的“蒙圈”具体是指什么。
    简单的说类似于NAT的原理,如果需要宿主机网络能够访问到容器提供的服务,需要将容器的端口暴露在宿主机网络中。
    常用语法是在运行"都docker run"时带上参数"-p host_port:container_port"。

    回复
    0
  • 取消回复