docker容器网络

1.我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:

· host模式,使用--net=host指定

· container模式,使用--net=container:NAME_or_ID指定

· none模式,使用--net=none指定

· bridge模式,使用--net=bridge指定,默认设置

  • 封闭容器        ---none
  • brigde桥接     ---虚拟桥
  • 联盟式容器         ---容器之间共享network虚拟桥
  • 享有宿主机网络  ---物理桥

Network container Archetypes:

 

2. 创建不同的容器网络

host模式:

  # docker run --name t3 -it --rm --network=host busybox:latest

none模式:

  # docker run --name t3 -it --rm --network=none busybox:latest

bridge模式(默认 即为bridge模式):

  # docker run --name t1 -it --rm --network=bridge busybox:latest

  或者

  # docker run --name t1 -it --rm busybox:latest

container模式:

  # docker run --name t1 -it --rm --network=bridge busybox:latest

  # docker run --name t2 -it --rm --network=container:t1 busybox:latest

 

3. 创建虚拟网卡并配置实现不同namespace通信

[root@maple-master ~]# ip netns help
# 创建r1 r2 namespace
# ip netns add r1  
# ip netns add r2

# 在r1namespace中执行命令
# ip netns exec r1 xxx

# ip link help     #可以link 移动创建好的虚拟网卡到某个namespace
# 创建 虚拟网卡对veth1.1 veth1.2
# ip link add name veth1.1 type veth peer name veth1.2

# 查看网卡
# ip link show
7: veth1.2@veth1.1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 56:1b:a3:68:0b:ae brd ff:ff:ff:ff:ff:ff
8: veth1.1@veth1.2: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

#  将创建好的一个虚拟网卡移动到一个namespace中来通信
# ip link set dev veth1.2 netns r2
# ip netns exec r2 ifconfig -a

# 激活宿主机和r2中的虚拟网卡
# ifconfig veth1.1 10.1.0.1/24 up
# ip netns exec r2 ifconfig veth1.2 10.1.0.2/24 up

# 宿主机上测试ping
# ping 10.1.0.2
  • 同样的我们可以把veth1.1 移动到r1中来实现两个namespace的通信

 

4. docker run 命令扩展

# docker run --help

# docker run --name t1 -it --rm --network=bridge --hostname=maple6 --dns=8.8.8.8 --dns-search=ilinux.io busybox:latest

 

posted @ 2019-04-28 22:29  阿拉米苏  阅读(184)  评论(0编辑  收藏  举报