美文网首页Docker
Docker高级网络功能

Docker高级网络功能

作者: 王勇1024 | 来源:发表于2019-05-25 15:45 被阅读1次

网络架构

Docker启动时会在主机上自动创建一个docker0虚拟网桥,它会在挂载其上的接口之间进行网络转发,如下图所示:

Docker网络

同时,Docker随机分配一个本地未被占用的私有网段中的一个地址给docker0接口。比如典型的172.17.42.1,掩码为255.255.255.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。

当创建一个Docker容器的时候,同时会创建一个veth pair接口(veth pair,是一个成对的端口,所有从这对端口一 端进入的数据包都将从另一端出来,反之也是一样)。

这对veth pair一端放在容器内,名称为eth0,另一端在本地并被挂载到docker0网桥,名称以veth开头(如上图所示)。

通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。如此一来,Docker就在主机和所有容器之间创建了一个虚拟共享网络。

配置参数

下面是Docker网络相关的命令参数。

  • -b BRIDGE or --bridge=BRIDGE:指定容器挂载的网桥;

  • --bip=CIDR:定制docker0的掩码;

  • -H SOCKET ... or --host=SOCKET ...:Docker服务端接收命令的通道;

  • --icc=true|false:是否支持容器之间进行通信;

  • --ip-forward=true|false:是否启用net.ipv4.ip_forward,即打开转发功能;

  • --iptables=true|false:是否允许Docker添加iptables规则;

  • --mtu=BYTES:容器网络中的MTU。

  • --dns=IP_ADDRESS:实验指定的DNS服务器;

  • --dns_search=DOMAIN:指定DNS搜索域;

下面这些参数只能在执行 docker run时使用,因为它们是针对容器特性内容:

  • -h HOSTNAME or --hostname=HOSTNAME:配置容器主机名;
  • --link=CONTAINER_NAME:ALIAS:添加到另一个容器的连接;
  • --net=bridge|none|container:NAME_or_ID|host|user_defined_network:配置容器的桥接模式;
  • -p SPEC or --publish=SPEC:映射容器端口到宿主机;
  • -P or --pubish-all=true|false:映射容器所有端口到宿主机。

网络相关命令

Docker网络相关命令都作为network的子命令出现。

$ docker network COMMAND --help

Usage:  docker network COMMAND

Manage networks

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

1.列出网络
命令格式为:docker network ls [OPTIONS]
支持的参数包括:

  • -f:指定输出过滤器;
  • --no-trunc:不截断输出内容。
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
93462b021a93        bridge              bridge              local
b960b18f0b3e        host                host                local
f92adf7c5957        none                null                local
  1. 创建网络
    命令格式:docker network create [OPTIONS] NETWORK
    支持的参数包括:
  • --aux-address:辅助的IP地址;
  • -d, --driver:网络驱动类型,如bridge或overlay;
  • --gateway:网关地址;
  • --internal:禁止外部对创建网络的访问;
  • --ip-range:分配IP地址范围;
  • --ipam-driver:IP地址管理插件类型;
  • --ipam-opt:IP地址管理插件的选项;
  • --ipv6:支持IPv6地址;
  • --label:为网络添加元标签信息;
  • -o, --opt:网络驱动支持的选项;
  • --subnet:网络地址段。

3.删除网络
命令格式:docker network rm NETWORK [NETWORK ...]

4.接入容器
将一个容器连接到一个已存在的网络上。
命令格式:docker network connect [OPTIONS] NETWORK CONTAINER
支持的参数包括:

  • --alias:为容器添加一个别名,此别名仅在所添加网络可见;
  • --ip:指定IP地址;
  • --ip6:指定IPv6地址;
  • --link:添加链接到另外一个容器;
  • --link-local-ip:为容器添加一个链接地址。
  1. 卸载容器
    将一个连接到网络上的容器从网络上移除。
    命令格式:docker network disconnect [OPTIONS] NETWORK CONTAINER
    支持的参数:
  • -f or --force:强制把容器从网络上移除。

6.查看网络信息
查看已存在网络的具体信息。
命令格式:docker network inspect [OPTIONS] NETWORK [NETWORK ...]
支持的参数:

  • -f or --format:给到一个golang模板字符串,对输出结果进行格式化。

相关文章

  • Docker高级网络功能

    网络架构 Docker启动时会在主机上自动创建一个docker0虚拟网桥,它会在挂载其上的接口之间进行网络转发,如...

  • docker学习——高级网络功能

    1.网络启动与配置参数 (1)跟Docker网络相关的命令参数,其中有些命令选项只有在Docker服务启动的时候才...

  • Networking features in Docker fo

    Docker for Mac的网络功能 Docker for Mac provides several netwo...

  • 04-docker网络

    1.Docker网络类型(插件形式) none:不为容器配置任何网络功能docker run -it --netw...

  • Day81-Docker_网络类型,监控

    Docker网络类型(插件形式) None:不为容器配置任何网络功能,--net=noneContainer:与另...

  • Docker高级篇-网络驱动

    通信场景 本章我们继续讲解docker网络驱动,在学习docker网络驱动之前我们先思考下面几个docker容器之...

  • docker简单使用

    本篇章,简单介绍下docker的使用,Docker项目提供了构建Linux内核功能之上,协同在一起的高级工具。其目...

  • docker网络基础配置

    docker提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务。本节讲解docker的网络功能,包括使...

  • Docker网络类型

    一、Bridge:Docker设计的NAT网络模型 二、None:不为容器配置任何网络功能,--network=n...

  • docker网络配置

    docker网络类型 none:不为容器配置任何网络功能,--net=none container:与另一个运行中...

网友评论

    本文标题:Docker高级网络功能

    本文链接:https://www.haomeiwen.com/subject/sxoazqtx.html