容器自动化:Docker网络模式

云计算专题之容器自动化



五,网络管理5.1 容器网络模式

  • Docker支持五种网络模式
    • bridge
      • 默认网络,Docker启动后默认创建一个docker0网桥,默认创建的容器也是添加到这个网桥中
    • host
      • 容器不会获得一个独立的network namespace,而是与宿主机共用一个
    • none
      • 获取独立的network namespace,但不为容器进行任何网络配置
    • container
      • 与指定的容器使用同一个network namespace,网卡配置也都是相同的
    • 自定义
      • 自定义网桥,默认与brdge网络一样

5.1.1 bridge网络类型

 
  1. #安装bridge管理工具
  2. [root@docker ~]# yum -y install bridge-utils
  3. #查看网桥状态
  4. [root@docker ~]# brctl show
  5. bridge name bridge id STP enabled interfaces
  6. br-576fa4020bee 8000.02420d792f02 no veth1a320f6 #网桥br-57绑定了两个虚拟网卡
  7. veth40f19a1
  8. br0 8000.000c291f17c8 no ens32
  9. docker0 8000.024222b4956e no veth1a4e09b #网桥docker0绑定了一个虚拟网卡
  10. vethb74cd44
  11. [root@docker ~]# docker network ls
  12. NETWORK ID NAME DRIVER SCOPE
  13. ee629711235f bridge bridge local #两个网桥类型的网络
  14. eb35904fea23 host host local
  15. 576fa4020bee lnmp bridge local #两个网桥类型的网络
  16. a51fee157db8 none null local
  17. #查看容器进程
  18. [root@docker ~]# docker ps
  19. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  20. 708d32343d71 centos "/bin/bash" 44 minutes ago Up 44 minutes test03
  21. 80efc6165b12 centos "/bin/bash" 47 minutes ago Up 47 minutes test02
  22. fb5c81fa9396 richarvey/nginx-php-fpm "docker-php-entrypoi…" 2 hours ago Up 2 hours 443/tcp, 9000/tcp, 0.0.0.0:8001->80/tcp, :::8001->80/tcp lnmp-np
  23. fb8723233240 mysql:5.6 "docker-entrypoint.s…" 2 hours ago Up 2 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp lnmp-mysql
  24. 6a2a1da76923 nginx:latest "/docker-entrypoint.…" 2 hours ago Up 2 hours 0.0.0.0:8890->80/tcp, :::8890->80/tcp ng-01
  25. 5bc0c919250b nginx:latest "/docker-entrypoint.…" 3 hours ago Up 3 hours 0.0.0.0:8888->80/tcp, :::8888->80/tcp ng-test
  26. [root@docker ~]# docker inspect lnmp-mysql | grep -A 15 "Network"
  27. "Networks": {
  28. "lnmp": { #网络类型lnmp
  29. "IPAMConfig": null,
  30. "Links": null,
  31. "Aliases": [
  32. "fb8723233240"
  33. ],
  34. "NetworkID": "576fa4020bee150eb08ede7c068873a84e92966b67e66375f4a03924db198b2c",
  35. "EndpointID": "c8971cfaeebad8bc1ce797bd1794f5a29791bdfebc5db351d74d61781c146352",
  36. "Gateway": "172.18.0.1", #网关172.18.0.1,这就是网桥br-576fa4020bee
  37. "IPAddress": "172.18.0.2", #容器IP172.18.0.2
  38. "IPPrefixLen": 16,
  39. "IPv6Gateway": "",
  40. "GlobalIPv6Address": "",
  41. "GlobalIPv6PrefixLen": 0,
  42. "MacAddress": "02:42:ac:12:00:02",
  43. "DriverOpts": null
  44. }
  45. }
  46. }
  47. }
  48. ]
  49. [root@docker ~]# docker inspect lnmp-np | grep -A 15 "Network"
  50. "Networks": {
  51. "lnmp": {
  52. "IPAMConfig": null,
  53. "Links": null,
  54. "Aliases": [
  55. "fb5c81fa9396"
  56. ],
  57. "NetworkID": "576fa4020bee150eb08ede7c068873a84e92966b67e66375f4a03924db198b2c",
  58. "EndpointID": "c7c5b22a136497415505566732a8b620a27744062cacb4980067952c4896cf8b",
  59. "Gateway": "172.18.0.1", #网关172.18.0.1,这就是网桥br-576fa4020bee
  60. "IPAddress": "172.18.0.3", #容器IP172.18.0.2
  61. "IPPrefixLen": 16,
  62. "IPv6Gateway": "",
  63. "GlobalIPv6Address": "",
  64. "GlobalIPv6PrefixLen": 0,
  65. "MacAddress": "02:42:ac:12:00:03",
  66. "DriverOpts": null
  67. }
  68. }
  69. }
  70. }
  71. ]
  72. [root@docker ~]# docker inspect ng-test | grep -A 15 "Network"
  73. "Networks": {
  74. "bridge": {
  75. "IPAMConfig": null,
  76. "Links": null,
  77. "Aliases": null,
  78. "NetworkID": "ee629711235f22194c1276eaa2a65df7fcd180defb60231643e59ba2c1b83dea",
  79. "EndpointID": "841e8c6b7a504787314a314981dcb2f48e5b00219ef50b5e2312199d6d30f49e",
  80. "Gateway": "172.17.0.1", #网关172.17.0.1,这就是网桥docker0
  81. "IPAddress": "172.17.0.2", #容器IP172.17.0.2
  82. "IPPrefixLen": 16,
  83. "IPv6Gateway": "",
  84. "GlobalIPv6Address": "",
  85. "GlobalIPv6PrefixLen": 0,
  86. "MacAddress": "02:42:ac:11:00:02",
  87. "DriverOpts": null
  88. }
  89. }
  90. }
  91. }
  92. ]

5.1.2 host网络类型

 
  1. #启动一个host容器
  2. [root@docker ~]# docker run -itd --name test01 --network host centos /bin/bash
  3. [root@docker ~]# docker attach test 01
  4. "docker attach" requires exactly 1 argument.
  5. See 'docker attach --help'.
  6. Usage: docker attach [OPTIONS] CONTAINER
  7. Attach local standard input, output, and error streams to a running container
  8. [root@docker ~]# docker attach test01
  9. [root@docker /]# ip a #这就是网络类型为host的容器,IP地址和docker宿主机完全一样
  10. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  11. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  12. inet 127.0.0.1/8 scope host lo
  13. valid_lft forever preferred_lft forever
  14. inet6 ::1/128 scope host
  15. valid_lft forever preferred_lft forever
  16. 2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  17. link/ether 00:0c:29:1f:17:c8 brd ff:ff:ff:ff:ff:ff
  18. inet 192.168.100.111/24 brd 192.168.100.255 scope global ens32
  19. valid_lft forever preferred_lft forever
  20. inet6 fe80::20c:29ff:fe1f:17c8/64 scope link
  21. valid_lft forever preferred_lft forever
  22. 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
  23. link/ether 02:42:22:b4:95:6e brd ff:ff:ff:ff:ff:ff
  24. inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
  25. valid_lft forever preferred_lft forever
  26. inet6 fe80::42:22ff:feb4:956e/64 scope link
  27. valid_lft forever preferred_lft forever
  28. 5: vethb74cd44@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
  29. link/ether d6:89:d3:b9:21:67 brd ff:ff:ff:ff:ff:ff link-netnsid 0
  30. inet6 fe80::d489:d3ff:feb9:2167/64 scope link
  31. valid_lft forever preferred_lft forever
  32. 7: veth1a4e09b@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
  33. link/ether 92:03:61:3e:72:44 brd ff:ff:ff:ff:ff:ff link-netnsid 1
  34. inet6 fe80::9003:61ff:fe3e:7244/64 scope link
  35. valid_lft forever preferred_lft forever
  36. 8: br-576fa4020bee: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
  37. link/ether 02:42:0d:79:2f:02 brd ff:ff:ff:ff:ff:ff
  38. inet 172.18.0.1/16 brd 172.18.255.255 scope global br-576fa4020bee
  39. valid_lft forever preferred_lft forever
  40. inet6 fe80::42:dff:fe79:2f02/64 scope link
  41. valid_lft forever preferred_lft forever
  42. 10: veth40f19a1@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-576fa4020bee state UP group default
  43. link/ether 66:90:3e:b8:5c:4e brd ff:ff:ff:ff:ff:ff link-netnsid 2
  44. inet6 fe80::6490:3eff:feb8:5c4e/64 scope link
  45. valid_lft forever preferred_lft forever
  46. 12: veth1a320f6@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-576fa4020bee state UP group default
  47. link/ether 2a:7b:20:34:e1:10 brd ff:ff:ff:ff:ff:ff link-netnsid 3
  48. inet6 fe80::287b:20ff:fe34:e110/64 scope link
  49. valid_lft forever preferred_lft forever
  50. [root@docker /]# ping www.baidu.com
  51. PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
  52. 64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=128 time=15.2 ms
  53. 64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=128 time=14.1 ms
  54. ^C

5.1.3 none网络类型(用于建立与宿主机的桥接模式)

 
  1. [root@docker ~]# docker run -itd --name test02 --network none centos
  2. [root@docker ~]# docker exec test02 hostname -I

查询后,什么ip都没有,none类型是暂时不给容器指定网卡的。

5.1.4 container网络类型

指定新容器使用指定容器的网卡

 
  1. #启动一个容器,网络类型container,使用lnmp-np容器的网卡
  2. [root@docker ~]# docker run -itd --name test03 --network container:lnmp-np centos /bin/bash
  3. WARNING: IPv4 forwarding is disabled. Networking will not work.
  4. 708d32343d718228b797e67dd1efbc1fa53f04843d76d885d6c6b3d58f8851b0
  5. [root@docker ~]# docker exec test03 hostname -I #test03没有网络设置,但ip地址和lnmp-np容器完全一样
  6. 172.18.0.3
  7. [root@docker ~]# docker exec lnmp-np ip a
  8. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
  9. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  10. inet 127.0.0.1/8 scope host lo
  11. valid_lft forever preferred_lft forever
  12. 11: eth0@if12: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
  13. link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
  14. inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0
  15. valid_lft forever preferred_lft forever

[root@docker ~]# cd /etc/sysconfig/network-scripts/
[root@docker network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=43bc2d66-2c7e-429f-9175-17a6ca6f3cad
DEVICE=ens32
ONBOOT=yes
IPV6_PRIVACY=no
IPADDR=192.168.100.111
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=114.114.114.114
DNS2=8.8.8.8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值