docker学习——高级网络功能

1.网络启动与配置参数

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

        -b BRIDGE | --bridge=BRIDGE:指定容器挂载的网桥

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

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

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

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

        --iptables=true|false:禁止docker添加iptables规则

        --mtu=BYTES:容器网络中的MTV

(2)下面2个命令选项即可以在启动服务时指定,也可以在docker容器启动时指定

        --dns=IP_ADDRESS ...:使用指定的DNS服务器

        --dns-search=DOMAIN...:指定DNS搜索域

(3)最后这些选项只能在docker run执行时使用

        -h HOSTNAME|--hostname=HOSTNAME:配置容器主机名

        --link=CONTAINER_NAME:ALIAS:添加到另一个容器连接

        --net=bridge|none|container:NAME_OR_ID|host user_defined_network:配置容器的桥接模式

        -p SPEC|--public=SPEC:映射容器端口到宿主机

        --net=bridge:默认配置

        --net=none:不进行网络配置

        --net=container:NAME_OR_ID:新创建的容器共享指定的已存在容器的网络

        --net=host:容器网络配置与主机保持一致

        --net=user_defined_network:用户自行用network相关命令创建一个网络

2.配置容器DNS和主机名

(1)相关配置文件

/etc/resolv.conf,/etc/hostname和/etc/hosts

(2)容器内修改配置文件

这些修改时临时的,只在运行的容器中保留,容器终止和重启后并不会被保存下来

(3)通过参数指定

指定主机名:-h HOSTNAME|--hostname=HOSTNAME

记录其他容器主机名:--link=CONTAINER_NAME:ALIAS

指定DNS服务器:--dns=IP_ADDRESS

指定DNS搜索域:--dns-search=DOMAIN

3.容器访问控制

(1)容器访问外部网络

在宿主机linux系统中,检查转发是否打开

sudo sysctl net.ipv4.ip_forward

如果为0,说明没有开启转发,则需手动打开

sudo sysctl -w net.ipv4.ip_forward=1

也可以在启动docker服务设定--ip-forward=true

(2)容器之间的访问

容器间相互访问,需要两方面的支持:网络拓扑是否已经连通;本地系统的防火墙软件iptables是否允许访问通过

《1》访问所有端口

可以配置--ice=true|false参数控制默认策略

可以在配置文件中配置DOCKER_OPTS=--ice=fales来默认禁止容器间的相互访问

《2》访问指定端口

在通过-ice=false禁止容期间相互访问后,仍可以通过--link=CONTAINER_NAME:ALIAS来允许访问指定容器的开放端口

4.映射容器端口到宿主机主机的实现

容器允许外部访问,可以在docker run 时用-p或-P来启用

你可能感兴趣的:(docker学习——高级网络功能)