wsl虚拟机中的dockers容器访问不了物理主机

news/2024/11/23 23:23:40/

1 首先保证wsl虚拟机能够访问宿主机IP地址,wsl虚拟机通过vEthernet (WSL)的地址访问,着意味着容器也要通过此IP地址访问物理主机。

2 遇到的问题:wsl虚拟机中安装了docker,用在用到docker容器内的开发环境,但是虚拟机对宿主机的多个ip地址都无法ping通。

3 在防火墙,杀毒软件等卸载安装更新情况下会让之前的设置失效,突然无法访问宿主机,

查看宿主机ip地址,可能有多个ip地址虚拟机wsl专用 vEthernet (WSL):ok的ip地址

设置防火墙允许ip地址访问

以管理员身份运行cmd或Windows PowerShell,输入

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

进入wsl,ping vEthernet (WSL)对应的ip地址通过。

4 最大问题:docker容器内部始终无法访问外部的主机应用,为了访问,额外添加了容器端口和虚拟机端口映射,在容器中安装ping和telnet测试,发现容器能ping通主机ip,但连接应用程序端口出现问题,连接被关闭,这种使用容器连接虚拟机映射的端口本来就是错误的想法,因为虚拟机的端口容器可以直接访问但是无应用就报连接被关闭问题。

为了容器连接宿主机,一直在找原因,最开始想的是防火墙,但是我设置了出栈和进栈规则,就去找其他原因,走了不少弯路,头都大了。甚至放弃物理主机应用使用同一环境下的docker环境,想一想我愚蠢的尝试,还真离谱,起初是在虚拟机层上安装iptables来将容器端口和虚拟机端口来做映射这样即便我容器中没有对虚拟机做映射也能将数据转发到容器或者将容器数据转发到虚拟机这样多希望虚拟机它是一个智能机还能帮我转发到宿主机,这离谱的想法是我想多了,想的像物理机访问虚拟机一样将数据代理到容器,因为有端口映射,事实,虚拟机不会也不能帮容器做事情,最终还是回到物理机的ip上,能通过ip访问,为什么走代理,但问题IP也不能用,除去容器访问虚拟机,虚拟机代理访问物理机的愚蠢想法,现在要做的只有放弃物理机的应用,或者解决容器和物理机的连通问题,很突然想到用过的其他容器也好像访问过物理机的应用,在容器能ping物理机的情况下更加确定是防火墙的问题,在卸载了不好用的电脑管家之后,换了微软管家发现系统一直在更新,优化了不少安装选项,端口管制严格,电脑也轻便了不少,就是不让你随便访问数据,确定了连通信没问题就解决防火墙问题。

5 设置了防火墙的出栈进栈为什么没起作用,这也导致之前走弯路的原因,另外一个是想访问虚拟机间接访问主机,要知道映射端口是直接可访问,到无程序所以报连接成功但有关闭,这还以为是应用程序拒绝了ip的访问,

6 解决尝试,关闭电脑防火墙,公网和私网,进入容器 telnet ip 端口 发现访问成功,现在在用虚拟机ip访问加映射端口,如下同样拒绝。

7 现在可以访问了,但是安装吗?肯定不安装,因为网络上很容器知道用户的常用ip

端口,如果每防火墙那自己的电脑会处在高压负荷中,性能也会大大下降,所以还是打开防火墙,继续安全使用,而且主要阻止容器访问的应用的是公用网络,解决它就没问题。

8 如果ping不同主机ip就设置防火墙,类型任何协议,ip地址加上主机的IP或者任何ip地址而不仅仅tcp。


http://www.ppmy.cn/news/1549395.html

相关文章

uni-app 认识条件编译,了解多端部署

一. 前言 在使用 uni-app 进行跨平台开发的过程中,经常会遇到需要针对不同平台或不同环境进行条件编译的情况。条件编译是一种在编译过程中根据指定条件选择不同代码路径的技术,可以帮助我们在不同平台或环境下编写不同的代码,以适应不同的平…

Spring Boot 教程之六:Spring Boot - 架构

Spring Boot - 架构 Spring Boot建立在核心Spring框架之上。它是 Spring 框架的简化和自动化版本。Spring Boot 遵循分层架构,其中每一层都与其他层(按层次顺序位于上方或下方)进行通信。Spring Boot 文档为 Spring Boot 框架提供了以下定义。…

Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系

一.什么是Spring?它解决了什么问题? 1.1什么是Spring? Spring,一般指代的是Spring Framework 它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码…

经验笔记:git checkout 与 git switch

Git Checkout 与 Git Switch 引言 在使用 Git 进行版本控制时,git checkout 和 git switch 是两个常用的命令,用于分支管理和文件恢复。虽然它们有一些相似之处,但各自的功能和使用场景有所不同。本文将详细介绍这两个命令的用法、区别和实…

中国【食品检测实验室自动化】程度相对欧美等发达国家相对落后,并且技术层面存在明显的代差,未来有比较大的发展空间

摘要 根据 HengCe 研究团队调研统计,2023年全球食品检测实验室自动化市场销售额达到了 亿元,预计2030年将达到 亿元,年复合增长率(CAGR)为 %(2024-2030)。中国市场在过去几年变化较快&#xff…

Flink学习连载文档第一篇--Flink集群的安装

Flink支持多种安装模式。 local(本地)——本地模式 standalone——独立模式,Flink自带集群,开发测试环境使用 standaloneHA—独立集群高可用模式,Flink自带集群,开发测试环境使用 yarn——计算资源统一…

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…

ubuntu20.04中编译安装gcc 9.2.0

ubuntu20.04中编译安装gcc 9.2.0,步骤如下&#xff1a; #install compile dependence libraries 1&#xff1a;$ sudo apt install libgmp-dev libisl-dev libmpc-dev libmpfr-dev # install gcc 9.2.0 # download source code 2&#xff1a;$ wget http://ftp.gnu.org/gn…