Docker高级网络功能

栏目: 编程工具 · 发布时间: 4年前

内容简介:Docker启动时会在主机上自动创建一个同时,Docker随机分配一个本地未被占用的私有网段中的一个地址给当创建一个Docker容器的时候,同时会创建一个

网络架构

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

Docker高级网络功能

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
-d, --driver
--gateway
--internal
--ip-range
--ipam-driver
--ipam-opt
--ipv6
--label
-o, --opt
--subnet

3.删除网络

命令格式:docker network rm NETWORK [NETWORK ...]

4.接入容器

将一个容器连接到一个已存在的网络上。

命令格式:docker network connect [OPTIONS] NETWORK CONTAINER

支持的参数包括:

--alias
--ip
--ip6
--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模板字符串,对输出结果进行格式化。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Code

Code

Charles Petzold / Microsoft Press / 2000-10-21 / USD 29.99

Paperback Edition What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of ......一起来看看 《Code》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具