docker网络模式

docker的网络

Docker支持五种网络模式

  1. bridge
    默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中;IP地址段是172.17.0.1/16
    host 容器不会获得一个独立的network namespace,而是与宿主机共用一个。 3)none 获取独立的network
    namespace,但不为容器进行任何网络配置。 container 与指定的容器使用同一个network
    namespace,网卡配置也都是相同的。 自定义 自定义网桥,默认与bridge网络一样。
    #其中bridge(桥接模式)、host、none这三中网络为比较常用的。
[root@localhost ~]# iptables  -t nat  -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  anywhere            !loopback/8           ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  172.17.0.0/16        anywhere            

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere     

#其中可以看到docker的默认网络模式

1、查看docker中的默认网络

[root@localhost ~]# docker network  ls
NETWORK ID          NAME                DRIVER              SCOPE
924f97138097        bridge              bridge              local
c2e11b4773fd        host                host                local
b74eb4469d12        none                null                local

2、创建一个新的docker网络

docker network  create  -d 网络类型  test

3、使用网络创建一个容器、

docker run  -itd --network  test  --name  network 镜像名

pipework进行IP指定

git clone https://github.com/jpetazzo/pipework.git 
cp pipework/pipework /usr/local/bin/ 
docker run -itd --net=none --name test01 centos:7 
pipework br0 test01 192.168.1.88/24@192.168.1.1
#192.168.1.88为IP、/24指定子网掩码、192.168.1.1指定网关

docker中配置dns进行通信

-h	HOSTNAME或者--hostname=HOSTNAME设定容器的主机名,它会被写到容器内的	/etc/hostname和/etc/hosts。但它在容器外部看不到,既不会在docker	ps显示,也不会在其他的容器的/etc/hosts看到。--dns=IP_ADDRESS添加	DNS	服务器到容器的/et/resolv.conf中,让容器用这个服务器来 解析所有不在/etc/hosts中的主机名。
--dns-search=DOMAIN设定容器的搜索域,当设定搜索域为.example.com时,在搜索一个名为host的主机时,DNS不仅搜索host,还会搜索host.example.com

docker高级网络配置

docker在安装过后启动时,就会创建一个名为docker0的网卡,这块网卡就向一个交换机,它会在挂载到它的网口之间进行转发。

docker网络常用参数

 -b	BRIDGE或--bridge=BRIDGE		
 指定容器挂载的网桥	
--bip=CIDR
定制docker0的掩码	
-H	SOCKET...或--host=SOCKET...		
Docker服务端接收命令的通道	
--icc=true|false		
是否支持容器之间进行通信	
--ip-forward=true|false		
请看下文容器之间的通信	
--iptables=true|false	
是否允许Docker添加iptables规则	
--mtu=BYTES容器网络中的MTU
下面2个命令选项既可以在启动服务时指定,也可以在启动容器时指定。在Docker服务启动 的时候指定则会成为默认值,后面执行docker	run时可以覆盖设置的默认值。
--dns=IP_ADDRESS...		
使用指定的DNS服务器	
--dns-search=DOMAIN...
指定DNS搜索域
最后这些选项只有在docker	run执行时使用,因为它是针对容器的特性内容。	
-h	HOSTNAME或--hostname=HOSTNAME
 配置容器主机名	
--link=CONTAINER_NAME:ALIAS
添加到另一个容器的连接	
--net=bridge|none|container:NAME_or_ID|host	
配置容器的桥接模式	
-p	SPEC或--publish=SPEC	
映射容器端口到宿主主机	
-P	or	--publish-all=true|false		
映射容器所有端口到宿主主机

1、容器要想访问外部网络就需要开启linux内核转发功能。
[root@localhost ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
想要长期开启就要写入sysctl.conf这个文件中
如果docker服务在启动时就指定了--ip-forward=true,网络转发功能就会自动打开。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值