Docker之网络

今天我们来谈一谈docker的网络结构, 不知各位看官在使用docker的时候有没有想过为什么docker 容器在启动之后我们就可以下载安装需要的应用了呢?今天我们就来一起谈谈这个秘密。

docker共有四种网络结构,分别是closed containers, bridged containers , joined containers, open containers
在这里插入图片描述
从左到右容器的隔离性越来越低,相对而言安全性也就越来越差。下边我们分别来瞅瞅每个网络设置的作用。

  • 封闭式容器
    封闭式容器,所有的容器并不能和外部通信,只能访问127.0.0.1。这意味着三件事情:

    1. 在容器内的应用程序能够连接到loopback网卡,绑定的ip是127.0.0.1
    2. 容器外部不能访问该网卡
    3. 容器内的应用不能访问外部网络,此时下载是不起作用的

    使用场景
    要求最高的网络隔离级别,容器内应用并无访问网络需要时可以考虑使用

    怎么设置docker容器为封闭容器呢?

      docker run --rm  --net none alpine:latest ip addr
    
  • 桥接容器

    容器创建后默认使用的网络模式,容器创建之后有loopback 网卡之外,还拥有另外一个私有网卡。通过该网卡容器可以和宿主机进行通信。使用下面的命令我们可以看到容器的所有网口:
    docker run --rm --net bridge alpine:latest ip addr
    在这里插入图片描述
    在这里我们讲扩展介绍一些选项来丰富我们的功能

  • –hostname
    docker run --rm --hostname barker alpine:latest nslookup barker
    这个标识允许我们为容器设置一个主机名称,作用和在windows中配置host差不多

  • –dns
    这个标识允许我们设置dns
    docker run --rm --dns 8.8.8.8 alipine:latest nslookup docker.com

  • -p

    默认情况下容器不允许宿主机直接访问容器,-p 可以帮我们打破约束,此时容器会创建一个端口映射,将容器的端口映射到宿主机的网络中

    • docker run -p 3333 【将该端口随机映射到宿主机端口】
    • docker run -p 3333:3333 【将端口映射到宿主机相同端口】

猜你喜欢

转载自blog.csdn.net/u014454462/article/details/87983640