• 一文解读Docker 网络Network


    目录

    基本介绍

    四种网络模式

    常用命令 


    基本介绍

    Docker网络是Docker容器之间和容器与外部网络之间的通信和连接的一种机制。在Docker中,每个容器都可以有自己的网络栈,包括网络接口、IP地址和网络配置。Docker网络提供了一种灵活且可定制的方式,使得容器之间可以相互通信,并与主机或其他网络资源进行交互。

    在docker中,重启后ip是会变的;docker默认采用bridge连接,启动容器的时候会按照顺序来获取对应ip地址,这就导致容器每次重启后ip都会发生变化。

    也就是说容器间使用ip地址来进行通信的话,一旦有容器重启,重启的容器将不再能被访问到。 Docker 网络就能够解决这个问题。

    Docker网络作用:容器之间的互联以及端口映射容器IP变动的时候可以通过服务名直接网络通信而不受影响

    四种网络模式

    网络模式简介
    Bridge(默认)此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
    Host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
    Container创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
    None该模式关闭了容器的网络功能,与宿主机、与其他容器都不连通的.

     在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式:

    • bridge模式:使用 --net=bridge 指定,默认设置
    • host模式:使用 --net=host 指定。
    • none模式:使用 --net=none 指定。
    • container模式:使用 --net=container:NAME_or_ID 指定。

    Bridge模式

    Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

    Container 模式

    新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。在创建容器时通过参数 --net container:已运行的容器名称|ID 或者 --network container:已运行的容器名称|ID 指定。

     Host 模式

    直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。使用host 网络模式需要在创建容器时通过参数 --net host 或者 --network host 指定,使用了host网络模式就不需要使用-p指定端口号,通过-p设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。

    Docker 安装完成时,一般会自动创建三个网络,查看命令:

    docker network ls
    
    1. NETWORK ID NAME DRIVER SCOPE
    2. 50527f813731 bridge bridge local
    3. d40bdb2f0342 host host local
    4. 7a7b8938f822 none null local

    常用命令 

    命令作用
    docker network connect将容器连接到网络
    docker network create  创建网络
    docker network disconnect断开容器与网络的连接
    docker network inspect显示一个或多个网络上的详细信息
    docker network ls列举所有网络
    docker network prune删除所有未使用的网络
    docker network rm删除一个或多个网络

    1、创建网络 test-network
    docker network create test-network

    2、将php容器或其他容器加入到test-network网络
    docker network connect test-network php

    3、 查看网络
    docker network ls

    4、 断开和移除网络
    移除网络之前需要断开所有连接到网络的容器:docker network disconnet test-network php
    移除网络:docker network rm test-network

    5、 查看网络内部信息
    docker network inspect test-network

  • 相关阅读:
    TCP实战:即时通信-端口转发
    ipv6地址概述——配置ipv6
    idea一些debug技巧
    2022新版图文详解IDEA整合SSM框架(附源码)
    m4s转mp3——B站缓存视频提取音频
    基于JAVA图像AI风格转换系统(Springboot框架+AI人工智能) 开题报告
    Linux系统编程(会话和进程)
    sklearn快速入门教程:标准化
    Uniapp 跳转回上一页面并刷新页面数据
    面试官:有一个 List 对象集合,如何优雅地返回给前端?我懵了。
  • 原文地址:https://blog.csdn.net/m0_62436868/article/details/134355813