docker的网络模式和网络访问原理
更新:HHH   时间:2023-1-7


一.网络模式

  1. --net=bridge 默认
    2.--net=host
    docker run -it busybox 默认运行 生成独立网络命令空间
    docker run -it --net=host busybox --net=host 与宿主机一同使用网络命令空间,其他隔离
    在容器内使用端口相当于占用宿主机的端口;
    3.--net=none
    Docker run -it --net=none 网络独立,但每配置任何地址
    4.--net=container:name

    docker exec -it bs sh 运行一般容器

    netstat -nltp
    docker run -itd --name nginx05 --net=container:bs nginx

    netstat -nltp

    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
    具备同样的网络信息,容器除外,其他都是隔离;
    5.自定义网络
    与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信

    docker network create bs-test 创建网络bs-test

    docker run -it --name bs4 --net bs-test busybox
    docker run -it --name bs3 --net bs-test busybox
    然后互ping可以通信;主机名也可以通信; link通信

二.容器网络访问原理


Docker 宿主机与容器之间通信用的iptables的snat和dnat
从容器数据到主机的数据通过docker0网桥配置iptable snat到主机网卡。
从主机网卡到容器数据是通过docker0网桥配置iptables Dnat到容器网卡。

返回云计算教程...