Docker网络
一、网络类型
linux利用net namespace来隔离网络。Docker容器默认情况下会分配一个独立的network namespace,也就是网络类型中的bridge模式,另外一种模式是host模式,如果容器启动时指定使用host模式,那么这个容器不会获得一个独立的network namespace,它会和主机使用同一个,这时候容器不会虚拟出自己的网卡,配置自己的ip,而是会使用宿主机上的ip和端口。最后一种网络类型是none,这种情况docker容器不会和外界通信。
二、端口映射
Docker可以指定容器内的某个端口和宿主主机上的其中一个端口做映射,当访问主机这个端口的时候实际上是访问容器内被映射的端口。
那么现在就开始设置,访问容器中的nginx吧。
输入docker run --help 查看命令参数
发现-p 参数后面加上端口号就能让docker容器端口映射到主机上。
docker端口映射参数输入docker run -d -p 8080:80 命令,这个命令是把主机的8080端口映射到容器的80端口。
运行nginx在浏览器中访问8080端口,这时候发现已经可以访问到nginx了。
访问nginx那么这个时候,我们再试试docker run -d -P,这个命令是把所有的端口都建立映射。
docker开放所有端口输入docker ps命令,看容器情况,发现docker用了一个32768端口映射到容器的80端口。
docker容器这时候再用8080端口去访问容器,发现已经访问不了。
访问nginx改成32768端口,就能成功访问,所以可以得知,-P参数是用宿主主机的随机一个端口去映射容器的端口。
网友评论