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来启用