关于虚拟机使用docker踩的坑

这篇具有很好参考价值的文章主要介绍了关于虚拟机使用docker踩的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Win与docker容器网络不通

在家码代码,已读不回的求职环境,本来就闹心,结果放个水回来电脑莫名其妙重启了(虚拟机没挂起),虚拟机重启,docker容器可以正常启动,但发现IDEA启动项目失败,各种连接不通。

——烦

使用下面命令尝试:

ping IP
telent/telnet IP port
虚拟机  IP:192.169.0.111 
测试容器ES  IP:172.19.0.2    PORT:9200

Win <=≠=> docker
Windows可以ping通192.169.0.111 ,但访问192.169.0.111:9200不通
CentOs <===> docker
虚拟机telnet 172.19.0.2 9200可以,且容器直接互通

问题出在192.169.0.111(宿主机) =≠=> 172.19.0.2(docker容器)

连夜狂补了一下docker和Linux网络

1 docker容器网络

我们在使用docker创建容器,不指定networks,默认使用的是docker0网卡,网桥为bridge。

通过

docker network create mydevnet

或者 docker-compose 中定义

version: '2.2'
services:
  elasticsearch:
    image: elasticsearch:7.17.7
    container_name: elasticsearch
    networks:
      - mydevnet
    ... 
networks:
    mydevnet:
        external: true 
# 注意这里,也有可能出问题

创建的自定义网桥,网桥默认bridge。查看命令

docker network ls
docker network inspect mydevnet

查看自定义mydevnet

[
    {
        "Name": "mydevnet",
        ...
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        ...
        "Containers": {
        	"*********id********": {
                "Name": "elasticsearch",
                "EndpointID": "******id********",
                "MacAddress": "*:*:ac:*:*:*",
                "IPv4Address": "172.19.0.2/16",
                "IPv6Address": ""
            }
            ...
        }
]

! ! 注意这里网关以及IP

2 网络路由

网卡之间或容器之间,再或容器和外界之间,如果想互通,使用的是路由表。路由表就是串联不同网络的关键。如果路由表清空,那么路由表管理的网络之间就无法通信了。主机都有一个本地路由表,所以宿主机通过这个路由表可以处理宿主机上的多个网卡之间的流量的转发。从路由转发角度看,宿主机还是一个路由器。(引自docker容器网络不通的深度大分析)

route -n

命令查看路由表

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 ens33
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-123456789
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

到这里我发现问题了,我的路由表因为电脑重启可能的未知原因,导致172.19.0.0的目的网络已经没有了。所以无论怎么尝试重装容器还是重启docker都没有用。

——解决

1 重新建立关联

docker network disconnect mydevnet elasticsearch
docker network connect newnet elasticsearch

建新子网,重新关联容器,重启容器

2 修改路由表

理论应该是可以修改,但因为route change 命令不懂,尝试了一下,并没有成功,有成功的同学记得踢一下。

另外在这期间各种试错后,执行 systemctl restart network 重置虚拟机网络之后,虚拟机连不到外网了,这里是根据解决ContOS7 开启桥接模式后无法联网 解决的

——意外状况

解决完问题,挂起虚拟机,查找上述为什么路由表自定义网卡没有的原因,结果再次打开虚拟机容器又连不上,route -n 之后,发现路由表除了docker0网卡之外,自定义的 br- 开头的全都不在了,查了半天,发现有两种解决办法:

1 修改NetworkManager(待)

# 
vim /etc/NetworkManager/NetworkManager.conf
# 添加
[keyfile]
unmanaged-devices=interface-name:docker*;interface-name:veth*;interface-name:br-*;interface-name:vmnet*;interface-name:vboxnet*
# 重启NetworkManager
systemctl restart NetworkManager

这种是参考Can’t connect to docker after resuming VM的,试了一下确实管用,网上还有说是直接把NetworkManager服务给关了,但还是疑惑,总觉得还会出问题或者出现其他的问题,所以决定重置docker网络。

2 重置docker0 网络

#停止docker服务
systemctl stop docker
#删除docker0
ip link set dev docker0 down
brctl delbr docker0
#重启docker服务
systmectl start docker

# kill进程
pkill docker 
# 清除iptables nat表规则
iptables -t nat -F 
ifconfig docker0 down 
## 删除docker0 网卡
brctl delbr docker0
docker -d 
systemctl restart docker

重置之后,一切都好了,连之前消失的 br- 也都出现了。。。

一 切 都 好 了。。。

关于一些命令

# 服务器当前的内存使用情况
free -h

# Docker容器占用的存储空间
docker system df

# 看到正在使用的容器或镜像数量
docker system df -v

#清理不再使用的镜像、容器和数据卷,达到释放空间的效果(正式服慎用),其中-a是清理所有未使用到的资源,–volumes是可以清除未使用到的数据卷
docker system prune -a --volumes

#批量启动全部容器
docker start $(docker ps -a | awk '{ print $1 }' | tail -n +2)
#批量启动 如 redis_ms-redis-**集群
docker start $(docker ps -aq --filter "name=redis_ms-redis")

因为是自己开发环境,防火墙是关闭的,后期需要了解firewall管理下的docker的防火墙规则理解。文章来源地址https://www.toymoban.com/news/detail-853657.html

到了这里,关于关于虚拟机使用docker踩的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 新手最容易踩的坑

    在学习 Python 的过程中,新手往往会遇到一些常见的陷阱,这些陷阱可能会导致代码错误或者不符合预期。本文将介绍一些 Python 新手最容易踩到的坑,并提供一些解决方案,帮助读者避免这些陷阱。 Python 使用缩进来表示代码块,而不是像其他编程语言那样使用大括号。因此

    2024年04月12日
    浏览(78)
  • 集成tinyMCE编辑器以及踩的坑

    一、tinyMCE编辑器没有实时更新 场景是这样的,在form表单中引用Tinymce富文本编辑组件,在多次重新打开不同form表单时,form携带的数据没有实时更新到Tinymce内,总是显示上一个的form的数据 原因:Tinymce只渲染了一次,所以造成数据有点问题。所以解决的方法就是利用 v-if 的方

    2024年02月21日
    浏览(44)
  • Element-ui踩的坑-“CSS样式”

    目录 配置环境 错误方向 解决  总结 pc端 node  16.14.0  npm  8.3.1  vue  @vue/cli 5.0.8 在使用element-ui时,发现有时候可以在控制台利用内置的类来改变节点元素样式,但是当数据一多就无法利用了(即,无效利用),并且,在无效后在其上添加会发现,添加的样式处于所需要绑定

    2024年02月08日
    浏览(38)
  • git中容易踩的坑的“--recursive“选项

    在git的repo中,可能会有子项目的代码,也就是\\\"git中的git\\\" –recursive是递归的意思,不仅会git clone当前项目中的代码,也会clone项目中子项目的代码。 我们有时在git clone的时候漏掉 --recursive选项,导致编译无法通过。比如:LookingGlass项目中 如果没有加 --recursive选项,那么代码库

    2024年02月14日
    浏览(34)
  • Android studio连接mysql(能踩的坑都踩了)

    1.都看到这儿了,听我一句劝,mysql版本是8.xxx的就可以卸载重装5.xxx的了(不要侥幸) 2.Android studio用mysql-connector-java用8.xxx的不行,一直报错,原因未知,目前没有教程解决这个问题。所以只能降低mysql的版本。 安装MySQL:安装教程 1.建议就按照这个教程走,方便后面使用改数

    2023年04月09日
    浏览(64)
  • UIAutomator2安装及连接手机,我踩的坑都在这儿了

    大家搜索网络教程,都会看到差不多的安装步骤: 1、本人使用的python3.11 2、OPPO手机 3、安装UIAutomator2: 在命令行中输入:pip install --pre uiautomator2 4、安装配置adb 安装window上(其他的自行百度): https://dl.google.com/android/repository/platform-tools-latest-windows.zip 配置环境变量:    

    2024年02月07日
    浏览(51)
  • 关于WSL以及docker连接adb的坑

    WSL可以连接到adb,需要和主机保持一致的adb型号。 主机是windows以及macOS的docker没法直接连接到adb设备,只有主机为Linux才可以。其他平台只能通过TCP网络协议。 关于WSL连接adb设备 windows安装adb工具(安装可以去官网下载最新的工具包)后,在搜索栏里,搜索命令行工具,然后

    2024年02月13日
    浏览(43)
  • 【AI】Langchain-Chatchat搭建本地知识库-未完,先记录踩的坑

    事先说一下,我本地的显卡4070只有12G显存,无法运行本地知识库,我把自己折腾的过程和遇到的坑先记录一下吧,后续如果有算力的话就再跑一遍试试。后续来了:【AI】使用阿里云免费服务器搭建Langchain-Chatchat本地知识库 Langchain-Chatchat曾用名Langchain-ChatGLM,是智谱AI的本地

    2024年02月04日
    浏览(53)
  • 封装window10-21H1踩的坑,无法分析或处理pass[specialize]应答文件

    最近在研究封装镜像,无奈公司不给用win11,只能封装win10 2022年全新Windows11系统封装图文教程(一)定制母盘 - 小鱼儿yr系统 (yrxitong.com) 坑1,封装好出现无法分析或处理pass[specialize]应答文件 解决办法:快照到封装前的系统,按照下面操作设置 1.进入封装前的母盘系统,运行

    2024年02月05日
    浏览(57)
  • 记录ubuntu启动卡在logo界面有鼠标进不了桌面的经历,以及安装ubuntu踩的坑

    我之前安装过很多次ubuntu,不管是虚拟机(4-5次),还是双系统(3-4次),每次都是我自己搞崩的。就是我和之前一样开始安装搜狗输入法,之前没出过问题。然后就是这次安装完,我感觉和之前不一样,就是之前不知道为什么安装完会有pinyin,双拼,五笔,和搜狗有没有关系

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包