前言

截止至文章发表时,DockerDesktop的最新版本为v4.11.1。本文以该版本为准。

Docker在windows运行在Hyper-v的虚拟机中或者wsl windows子系统中。

原因说明

网上大部分的操作都无法解决远程访问的问题

比如,在DockerDesktop的settings中勾选Expose daemon on tcp://localhost:2375 without TLS,也只是开启localhost/127.0.0.1端口2375的监听。这个是无法实现开启远程访问的

再比如说,在上一步基础上,在Docker Engine添加。这里确实是可以监听任何ip的2375端口。按理来说是可行的,实际上却无法是实现远程访问的!

"hosts": ["tcp://0.0.0.0:2375"]

原因:别忘了文章前说的,windows环境下的Docker是运行在Hyper-v的虚拟机中或者是wsl windows子系统中,这些虚拟机和宿主机是NAT方式连接的,宿主机的物理网络和虚拟机网是不在同一子网中。

因此在上面两步的基础上,还需要解决虚拟机和宿主机网络不在同一子网的问题。

解决方案

多方寻找,在IBM的某个产品文档里找到了一个方式,解决虚拟机与宿主机不在同一子网上时通过宿主机ip访问docker守护进程

IBM DocumentationIBM Documentation.https://www.ibm.com/docs/en/addi/6.1.0?topic=prerequisites-configuring-docker-engine-listen-tcp-socket

重点看截图红框框,对于使用DockerDesktop,需要在宿主机设置代理监听本地127.0.0.1:2375。

因此,正确步骤就是

1、在DockerDesktop的settings中勾选Expose daemon on tcp://localhost:2375 without TLS,点击“Apply & Restart”,重启DockerDesktop

2、在CMD(管理员模式)中执行命令

#替换 <your_IP>为 docker 主机的公共 IP 地址
netsh interface portproxy add v4tov4 listenport=2375 listenaddress=<your_IP> connectaddress=127.0.0.1 connectport=2375

就可以正确开放远程2375端口了

宿主机使用本机ip可以访问,但其他机器访问宿主机ip不通,则需要在windows防火墙开放端口

防火墙配置中,入站和出站都需要开放2375端口


补充

1、解决方案第2步设置代理无效或者windows重启后失效,需要检查IP Help服务正常运行,重启该服务即可。建议将其设为自动启动。

2、解决方案第2步除了使用netsh命令添加代理,也可以在宿主机上使用nginx转发127.0.0.1:2375

# nginx配置文件nginx.conf添加如下配置
stream {server {listen 2375;proxy_pass 127.0.0.1:2375;}
}

如何使用nginx转发,可以参考我的另一篇文章

使用nginx进行端口转发_源林氏的博客-CSDN博客_nginx 端口转发# 编译nginx的时候要添加stream模块 ./configure –with-stream# 这个模块实现了网络层和传输层的的转发、代理、负载均衡等stream { # stream与http配置同级 server { listen 13306; proxy_pass 192.168.8.168:3306; # 有了这个server配置,你就可以通过跳板机ip+13306端口访问内网的mysql库了 } server { ......https://blog.csdn.net/ET1131429439/article/details/116045306

【Docker】windows环境下的docker如何开放远程2375端口相关推荐

  1. ubuntu mysql 多端口_ubuntu 16.04下mysql5.7.17开放远程3306端口

    开启MySQL的远程访问权限 默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限. 主流的有两种方法,改表法和授权法. 相对而言, ...

  2. Windows环境下使用Docker安装MySQL

    环境: win10, Docker Desktop 1. 查看仓库可用MySQL版本  docker search mysql 2. 拉取mysql镜像 // 拉取最新版本 docker pull m ...

  3. windows环境下进入docker虚拟机的方式

    今天在docker的简易应用栈搭建的过程中,遇到一个问题,就是查看一个容器的存储卷挂在本地,发现进不去,原因是:我的环境docker是装在win10上的一个虚拟机上,我直接在power shell的命 ...

  4. ubuntu mysql 修改 端口_在Ubuntu/Linux环境下使用MySQL:开放/修改3306端口、开放访问权限...

    操作系统:Ubuntu 17.04 64位 MySQL版本:MySQL 5.7 一.查看3306端口是否开放 netstat -an|grep 3306 如果看到下图这样的,说明端口并未打开: 二.修 ...

  5. 【网址收藏】win10环境下安装Docker、Windows安装docker

    一.进入Docker官网 首先先到Docker官网下载最新官方Docker for Windows:Docker下载 在官网内可以查看到Docker的开发文档. 根据官网提示,Windows环境下下载 ...

  6. Windows环境下,如何在Docker里运行SAP UI5应用

    本文面向的读者是对Docker技术有一些基本概念,但因为没有测试环境,所以没有动手操作过的朋友们. 最近Jerry因为要做一个新的SAP云产品开发,得搭各种开发环境,其中之一就是Docker. Jer ...

  7. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  8. Windows家庭版下基于Docker的hadoop、Spark集群搭建

    Windows家庭版下基于Docker的hadoop.Spark集群搭建 目录 Windows家庭版下基于Docker的hadoop.Spark集群搭建 1.实验目的 2.实验平台 3.实验内容和要求 ...

  9. 超级详细:公网环境下登录 Docker 仓库: Docker Hub 或 国内阿里镜像仓库!超级解惑!(推送镜像到docker hub 或 国内阿里云镜像仓库)

    文章目录 前言: 1.登录 Docker Hub : ①.注册 或 登录 Docker Hub: ②.创建储存库: ③.开始上传镜像: ④.下载镜像: 2.使用 国内阿里云 镜像仓库: ①.开通 容器 ...

最新文章

  1. docker容器互联
  2. Ajax处理函数模板
  3. Azure DevOps 中 Dapr项目自动部署流程实践
  4. 使用 ConfigMap 挂载配置文件
  5. 使用Junit测试名称
  6. 《dp补卡——343. 整数拆分、96. 不同的二叉搜索树》
  7. 我在Google用AI研究基因,入门从吴恩达的课程开始
  8. 2021年河南省高考成绩啥时候查询,2021年河南高考成绩什么时候出来,今天几点钟出成绩可以查询...
  9. android模糊搜索文件,模糊搜索_八门神器教程|安卓八门神器怎么用图文教程__单机攻略_跑跑车单机游戏网...
  10. FPGA-Verilog实例----线性反馈移位寄存器(LFSR)
  11. cocos2dx3.0关于实现椭圆运动
  12. JavaScript-162:表格隔行变色
  13. TCP的四次挥手为什么需要2MSL ?
  14. JVM学习笔记(13) 垃圾回收-相关概念
  15. 网页版红警的资源加载的实现
  16. 年月日时间和64位时间的使用及相互转换
  17. 拼多多商家如何运营好店铺?商家如何一键打单?
  18. 详解SSD可靠性影响因素、原理和解决方法
  19. slam初学(一)——Kdevelop的安装及汉化
  20. mysql的一些介绍

热门文章

  1. PropertyDescriptor 获取属性名称“aProp“ 为“AProp“问题分析
  2. 搜狗输入法打不出汉字解决方案
  3. Python中的文件处理
  4. plt 在屏幕的固定位置显示图像
  5. 第一代计算机的cpu是什么型号,电脑CPU一般有几种型号?
  6. 有哪些好用的视频剪辑工具?这五种编辑方法很好用
  7. ASP用替换函数给文章内容所有图片加上alt属性内容
  8. 【BX学习之支付流程】收银机的支付流程手记
  9. 腾讯位置服务地图选点组件使用示例
  10. 移动云mas-sdk方式发送短信