简单的网站建设模板,如何用手机制作app课件,wp wordpress,嘉行传媒window安装DockerDesktop无法使用host网络模式解决方案
1. 现象
最近用windows安装DockerDeskTop发现使用windows版的docker启动nginx的时候无法使用host模式#xff0c;启动fastdfs镜像#xff08;本质上来说是nginx#xff09;时#xff0c;指定host网络是#xff0c;…window安装DockerDesktop无法使用host网络模式解决方案
1. 现象
最近用windows安装DockerDeskTop发现使用windows版的docker启动nginx的时候无法使用host模式启动fastdfs镜像本质上来说是nginx时指定host网络是无法访问到nginx页面。查阅资料后发现windows安装的docker不支持host共享宿主机网络的这种方式。因此要想做到容器与容器之间互相访问共享网络固定ip的话就要采用别的方式。
docker run -d --restartalways --privilegedtrue --nethost --namefastdfs -e IP172.0.0.1 -e WEB_PORT80 -v D:/docker/Data:/var/local/fdfs -v D:/docker/Html:/usr/local/nginx/html registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs这里我把IP改成自己的宿主机ip本意上想使用host模式使容器公用宿主机的所有端口这样可以fastdfs就能完美运行了但是在windows中这样启动后容器反而无法访问windows根本没有开启80端口。linux使用此命令可以正常启动。经过反复实验终于找到了解决方案且看下文。
2. Docker网络模式
这里我们先简单了解下Docker共有四种网络模式
1、host模式使用“–nethost”指定
2、container模式用“–netcontainer:NAME_or_ID”指定
3、none模式用“–netnone”指定
4、bridge模式
3. 解决方案
为什么要使用-host模式呢无非就是docker对于每个容器都有自己的生成的一份ip而容器与容器之间是默认网络隔离的我们想要容器之间直接能访问除了使用-host指定共享宿主机网络外还有三个方法可以实现这种效果。
1. 给容器打上域名
docker run --name testcontainer --hostname myhostname testimage给容器绑定上域名后我们就可以在另一个容器中直接通过域名访问这个容器了
2. 使用Docker内置的链接 --link
单向的建立A容器访问B容器
docker run -d -p 80:80 --link node-app:node-app --name nginx-proxy nginx-proxy3. 使用自定义网桥推荐 创建网桥 docker network create --driverbridge --subnet172.25.0.0/16 mybridge启动容器的同时绑定网桥同时设置固定ip docker run -d --restartalways --network mybridge --ip172.25.0.4 --privilegedtrue --namefastdfs -e IP172.25.0.4 -e WEB_PORT80 -p 80:80 -p 22122:22122 -v D:/docker/Data:/var/local/fdfs -v D:/docker/Html:/usr/local/nginx/html registry.cn-beijing.aliyuncs.com/tianzuo/fastdfs 启动另一个服务
docker run -d -p 27001:7001 --networkmybridge --ip172.25.0.2 --name ma-test
base-server 使用网桥的好处就是容器之间是共享网络的双向的比–link的方式要灵活而且容器内ip可以指定号更加可控