docker网络模式

1.单节点通信网络模式:

1.bridge网络

  • 在网络方面,桥接网络是在网段之间转发流量的链路层设备。
  • 桥可以是在主机内核中运行的硬件设备或软件设备。不同网桥网络上的容器无法直接相互通信。桥接网络适用于在同一Docker守护程序主机上运行的容器。在多docker daemon中网络通信选用 overlay network.

docker bridge网络特性:

  1. 用户定义的网桥可在容器之间提供自动DNS解析。由docker
    daemon维护的dns服务器,每个容器中域名解析namespace为127.0.0.11
  2. 默认桥接网络上的容器只能通过IP地址互相访问
  3. 用户定义的桥可提供更好的隔离。
  4. 容器可以随时随地从用户定义的网络连接和分离。
docker network create --driver bridge my_bridge
docker run -d --name nginx --network my_bridge nginx
docker run -d --name centos --network my_bridge centos sleep 50000
docker-compose:
version: "3"
services:
  nginx:
    container_name: nginx
    image: nginx
    networks:
      my-bridge:
  centos:
    container_name: centos
    image: centos
    networks:
      my-bridge:
    entrypoint: ["sleep","5000"]
networks:
  my-bridge:
    driver: bridge
  • 将某容器移除某网络
docker network connect/disconnect my_bridge containId

2.host网络

  • 与宿主机共享同一个网络空间,host模式网络对于优化性能以及在容器需要处理大量端口的情况下很有用,因为它不需要网络地址转换(NAT)
docker run -d --network host --name nginx nginx
docker-compose:
version: "3"
services:
  nginx:
    container_name: nginx
    network_mode: host
    image: nginx

3.none网络

  • 如果要完全禁用容器上的网络堆栈,可以–network none在启动容器时使用该标志。
docker run -d --network none --name busybox busybox sleep 50000
docker-compose:
version: "3"
services:
  bosybox:
    container_name: busybox
    network_mode: none
    image: busybox
    entrypoint: ["sleep","50000"]

4.container网络

  • 新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
docker run -d  --name nginx nginx
docker run -d --network container:nginx --name centos centos sleep 5000
version: "3"
services:
  nginx:
    container_name: nginx
    image: nginx
  centos:
    container_name: centos
    network_mode: container:nginx
    image: centos
    depends_on:
      - nginx
    entrypoint: ["sleep","50000"]

nat 模式端口映射 Published ports

docker网络模式_第1张图片

docker run -d -p 80:80/tcp --name nginx nginx
docker-compose:
version: "3"
services:
  nginx:
    container_name: nginx
    image: nginx
    ports:
    - 80:80/tcp

docker 网络模型图:

docker网络模式_第2张图片

2.多节点主机通信网络模式:

overlay网络

  • 可以跨主机通信,支持容器明直接访问通信

overlay网络创建的条件:

docker daemon开启swarm模式,集群模式下将会暴露的端口,以及作用 用于群集管理通信的TCP端口2377
TCP和UDP端口7946,用于节点之间的通信 UDP端口4789,用于覆盖网络流量

开启集群模式的命令:

docker swarm init 

docker swarm join

overlay网络流量加密

 --opt encrypted 参数
 docker network create --opt encrypted --driver overlay --attachable my-attachable-multi-host-network

macvlan网络

可以跨主机通信,不支持容器名直接访问通信,只能ip通信

flannel,consul等其他第三提供的网络插件

你可能感兴趣的:(容器,微服务架构)