• 如何创建默认的docker0网桥


    背景

    重启docker服务之后,发现并没有创建默认的docker0网桥,所以导致端口无法映射,容器内IP为127.0.0.1。重启服务后,仍然没有docker0网桥的出现。

     

    分析

    docker0网桥是docker默认创建的虚拟网桥。但是有时候会发现,docker0并没有被创建出来。如果我们使用默认的桥接网络来创建容器,此时就没有网桥可用。

     

    如果容器没有连接到网桥上,那就无法与宿主机通信,容器就沦为单机模式了。在单机模式下,容器就只有本地回环地址。

     

    默认情况下,安装了docker服务的环境里,使用下面命令可以查看docker的网络列表:

    docker network ls

    查看结果:

    a419b3ade28447269765572fdce28494.png

     

    从上到下分别是默认的桥接网络、宿主机模式网络和无。如果没有网桥,我们创建的容器的网络就是none,也就只有127.0.0.1的IP。

     

    一般正常安装docker服务且没有手动做过处理的,不会出现不自动创建docker0网桥的情况。docker0网桥是docker服务启动时自动创建的。

     

    但是可能出现环境里被人动过docker配置文件,或者安装包有问题,导致在某些环境里无法自动创建网桥。那这样就会导致容器的网络创建是个问题。

     

    我们使用自定义网络可以解决没有网桥可用的问题。

    下面是创建自定义网络的命令:

    docker network create mynetwork

    我们在使用自定义网络创建容器:

    docker run -itd --net=mynetwork --restart=always --name=mydemo centos7.6  /bin/bash

    这样可以解决没有默认docker0网桥的问题。

     

    然而,自定义创建的网桥,是我们自己用命令创建的。当重新系统或者其他情况,可能导致自定义网络丢失了,重启容器就出现这样的报错:

    Error response from daemon: network 2ec4cb5d7b07dd3af1405b0b66630ab7089b78ca2230ac9d50cf2de8e79c5101 not found

    Error: failed to start containers: mycontainer111

    如果此时你再创建一下自定义网络,指定名称mynetwork,也无法启动容器了。因为新创建的网络的ID和原先的不一样呀。

    通过命令查看容器的网络ID:

    docker inspect {容器名或容器ID} | grep NetworkID

    可以看到容器绑定的网络ID和刚创建的不一样,所以容器还是无法启动。此时只能修改容器的配置文件,手动将绑定的网络ID改为新创建的网络ID,再启动容器即可。具体的操作请参考:《Docker 动态修改容器端口映射的方法》。

     

    所以最好的办法就是使用默认的docker0,这样就不绑定特定的网络。默认的docker0只要创建了,就可以自动绑定。

     

    下面来说说如果docker0默认网桥没有创建的处理办法。

    docker服务的配置文件为/etc/docker/daemon.json,是一个json字符串。在这个文件中,我们加入:

    {"bip": "172.17.0.1/16"}

    再重启docker服务即可生效。这样docker就自动创建了docker0网卡。这样也再也不用担心自定义网桥丢失的问题。

     

    总结

    一般情况下,docker服务会自动创建docker0网桥,这样我们创建的容器默认就是桥接网络,用的就是docker0网桥。但是一些环境里可能出现docker服务异常或者配置不对,导致docker0网桥不能自动创建。这就需要我们手动修改配置来让docker自动创建docker0网桥了。

     


    原文地址: http://www.yu7s.com/article/20240422182118064.html

  • 相关阅读:
    Mysql进阶优化篇01——四万字详解数据库性能分析工具(深入、全面、详细,收藏备用)
    如何用 Docker 安装运行 mysql?
    GD32F10x的输出模式
    云原生之K8s的亲和、反亲和、污点与容忍
    小程序域名可以使用免费的SSL证书吗?
    多模态论文阅读之BLIP
    【PCL自学:PCLPlotter】PCLPlotter绘制数据分析图
    --max-old-space-size=8192报错
    网络规划.1.扩展.IP地址规划
    深入React源码揭开渲染更新流程的面纱
  • 原文地址:https://blog.csdn.net/m0_61230499/article/details/138144555