window安装DockerDesktop无法使用host网络模式解决方案

window安装DockerDesktop无法使用host网络模式解决方案

1. 现象

最近用windows安装DockerDeskTop发现使用windows版的docker启动nginx的时候无法使用host模式,启动fastdfs镜像(本质上来说是nginx)时,指定host网络是,无法访问到nginx页面。查阅资料后发现windows安装的docker不支持host共享宿主机网络的这种方式。因此要想做到容器与容器之间互相访问共享网络固定ip的话就要采用别的方式。

docker run -d --restart=always --privileged=true --net=host --name=fastdfs -e IP=172.0.0.1 -e WEB_PORT=80 -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模式,使用“–net=host”指定;

2、container模式,用“–net=container:NAME_or_ID”指定;

3、none模式,用“–net=none”指定;

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-proxy

3. 使用自定义网桥(推荐)

  1. 创建网桥

    docker network create --driver=bridge --subnet=172.25.0.0/16 mybridge
    
  2. 启动容器的同时绑定网桥同时设置固定ip

    docker run -d --restart=always --network mybridge --ip=172.25.0.4 --privileged=true --name=fastdfs -e IP=172.25.0.4 -e WEB_PORT=80 -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 --network=mybridge --ip=172.25.0.2 --name ma-test
base-server

​ 使用网桥的好处就是容器之间是共享网络的,双向的,比–link的方式要灵活,而且容器内ip可以指定号,更加可控

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RedEric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值