docker 端口映射 有点蒙圈 谁给解释一下
ringa_lee
容器间互相访问需在容器创建时使用--link参数,并且最好被连接的容器已经命名过。
docker run --name mysql .......docker run --name php --link mysql .......docker run --name nginx --link php .......
docker run --name mysql .......
docker run --name php --link mysql .......
docker run --name nginx --link php .......
以这种方式启动时,只需要在程序内使用对应的容器名即可访问相应的服务。例如 fastcgi_pass php:9000;
fastcgi_pass php:9000;
如果是对外暴露端口,需要通过-p或者-P参数,最好使用-p。docker run --name nginx -p 80:80 -p 443:443 .......这样浏览器就能访问到这台服务器提供的Web服务了。
docker run --name nginx -p 80:80 -p 443:443 .......
端口映射:就是选择一个你本机的端口映射到你的容器的一个端口,这样若有请求来到,访问你本机的那个被映射的端口,这个时候就会将请求转发到容器的那个端口,依靠容器里的服务来处理请求。
为什么要有端口映射?你的本机IP是个公网ip,例如1.2.3.4;但是本机的容器的ip是个虚拟ip,例如172.17.0.2。外界是没法直接访问你的容器的服务的,这个时候就通过访问本机的端口来达到使用容器中服务的目的。
不知道所谓的“蒙圈”具体是指什么。简单的说类似于NAT的原理,如果需要宿主机网络能够访问到容器提供的服务,需要将容器的端口暴露在宿主机网络中。常用语法是在运行"都docker run"时带上参数"-p host_port:container_port"。
容器间互相访问需在容器创建时使用--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服务了。
端口映射:
就是选择一个你本机的端口映射到你的容器的一个端口,这样若有请求来到,访问你本机的那个被映射的端口,这个时候就会将请求转发到容器的那个端口,依靠容器里的服务来处理请求。
为什么要有端口映射?
你的本机IP是个公网ip,例如1.2.3.4;但是本机的容器的ip是个虚拟ip,例如172.17.0.2。外界是没法直接访问你的容器的服务的,这个时候就通过访问本机的端口来达到使用容器中服务的目的。
不知道所谓的“蒙圈”具体是指什么。
简单的说类似于NAT的原理,如果需要宿主机网络能够访问到容器提供的服务,需要将容器的端口暴露在宿主机网络中。
常用语法是在运行"都docker run"时带上参数"-p host_port:container_port"。