Docker 完整基础 (续) (二)

博文涉及内容一览表:

 

1 Docker概览
2 Docker版本安装与介绍(略)
3

镜像

4 容器
5 镜像与容器
6 网络管理
7 数据卷
8 仓库
9 Dockerfile
10 Docker Compose

第六章 docker核心技术--网络管理

为什么需要docker网络管理

容器的网络默认与宿主机、与其他容器都是相互隔离。
容器中可以运行一些网络应用(如nginx、web应用、数据库等),如果要让外部也可以访问这些容器内运行的网络应用,那么就需要配置网络来实现。
有可能有的需求下,容器不想让它的网络与宿主机、与其他容器隔离。
有可能有的需求下,容器根本不需要网络。
有可能有的需求下,容器需要更高的定制化网络(如定制特殊的集群网络、定制容器间的局域网)。
有可能有的需求下, 容器数量特别多,体量很大的一系列容器的网络管理如何
……

因此容器的网络管理是非常重要的

------------------
容器网络管理:
-不设置隔离   => 性能最高
自带5种网络驱动模式
-可以手动安装别的模式

 

docker网络默认5种驱动模式

Docker有五种网络驱动模式
bridge network 模式(网桥):默认的网络模式。类似虚拟机的nat模式
host network 模式(主机):容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络
None network 模式:容器禁用所有网络。
Overlay network 模式(覆盖网络): 利用VXLAN实现的bridge模式
Macvlan network 模式:容器具备Mac地址,使其显示为网络上的物理设备

查看网络 docker network ls

作用:
	查看已经建立的网络对象
命令格式:
	docker network ls [OPTIONS]
命令参数(OPTIONS):
	-f, --filter filter   		过滤条件(如 'driver=bridge’)
	    --format string   	格式化打印结果
	    --no-trunc        	不缩略显示
	-q, --quiet          	 	只显示网络对象的ID
注意:
	默认情况下,docker安装完成后,会自动创建bridge、host、none三种网络驱动
[root@izuf6csxy0jrgs3azvia67z ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
6d052b504ac7        bridge              bridge              local
a468c0a23faf        host                host                local
47d7fe0d3f46        none                null                local
[root@izuf6csxy0jrgs3azvia67z ~]# docker network ls -f 'driver=host'
NETWORK ID          NAME                DRIVER              SCOPE
a468c0a23faf        host                host                local

 

创建网络 docker network

作用:
	创建新的网络对象
命令格式:
	docker network create [OPTIONS] NETWORK
命令参数(OPTIONS):
	-d, --driver string        		指定网络的驱动(默认 "bridge")
	    --subnet strings       		指定子网网段(如192.168.0.0/16、172.88.0.0/24)
	    --ip-range strings     		执行容器的IP范围,格式同subnet参数
	    --gateway strings      		子网的IPv4 or IPv6网关,如(192.168.0.1)
注意:
	host和none模式网络只能存在一个
	docker自带的overlay 网络创建依赖于docker swarm(集群负载均衡)服务
	192.168.0.0/16 等于 192.168.0.0~192.168.255.255    192.168.8.0/24
	172.88.0.0/24 等于 172.88.0.0~172.88.0.255

 

Create a network

Options:
      --attachable           Enable manual container attachment
      --aux-address map      Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
      --config-from string   The network from which copying the configuration
      --config-only          Create a configuration only network
  -d, --driver string        Driver to manage the Network (default "bridge")
      --gateway strings      IPv4 or IPv6 Gateway for the master subnet
      --ingress              Create swarm routing-mesh network
      --internal             Restrict external access to the network
      --ip-range strings     Allocate container ip from a sub-range
      --ipam-driver string   IP Address Management Driver (default "default")
      --ipam-opt map         Set IPAM driver specific options (default map[])
      --ipv6                 Enable IPv6 networking
      --label list           Set metadata on a network
  -o, --opt map              Set driver specific options (default map[])
      --scope string         Control the network's scope
      --subnet strings       Subnet in CIDR format that represents a network segment
[root@izuf6csxy0jrgs3azvia67z ~]# docker network create -d bridge my-bridge
204abef6d8250b2e3d264ff00ca7844a34fb525c9f4bc0d6b609cd5658eb32b0
[root@izuf6csxy0jrgs3azvia67z ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
6d052b504ac7        bridge              bridge              local
a468c0a23faf        host                host                local
204abef6d825        my-bridge           bridge              local
47d7fe0d3f46        none                null                local

# docker默认的是 bridge
[root@izuf6csxy0jrgs3azvia67z ~]# docker network create -d host my-bridge
Error response from daemon: network with name my-bridge already exists
[root@izuf6csxy0jrgs3azvia67z ~]# docker network create -d host my-bridge2
Error response from daemon: only one instance of "host" network is allowed

#依赖集群,需要先启动 swarm
[root@izuf6csxy0jrgs3azvia67z ~]# docker network create -d overlay my-bridge2
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

# host 和 null 只能存在一个
[root@izuf6csxy0jrgs3azvia67z ~]# docker network create -d null my-bridge2
Error response from daemon: only one instance of "null" network is allowe

 

网络删除 docker network rm

作用:
	删除一个或多个网络
命令格式:
	docker network rm NETWORK [NETWORK...]
命令参数(OPTIONS):
	无
[root@izuf6csxy0jrgs3azvia67z ~]# docker network rm 204a
204a
[root@izuf6csxy0jrgs3azvia67z ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
6d052b504ac7        bridge              bridge              local
a468c0a23faf        host                host                local
47d7fe0d3f46        none                null                local

 

查看网络详细信息 docker network inspect

作用:
	查看一个或多个网络的详细信息
命令格式:
	docker network inspect [OPTIONS] NETWORK [NETWORK...]
      或者 docker inspect [OPTIONS] NETWORK [NETWORK...]
命令参数(OPTIONS):
	-f, --format string   	根据format输出结果
 [root@izuf6csxy0jrgs3azvia67z ~]# docker network inspect -h
 Flag shorthand -h has been deprecated, please use --help
 ​
 Usage:  docker network inspect [OPTIONS] NETWORK [NETWORK...]
 ​
 Display detailed information on one or more networks
 ​
 Options:
   -f, --format string   Format the output using the given Go template
   -v, --verbose         Verbose output for diagnostics
 [root@izuf6csxy0jrgs3azvia67z ~]# docker inspect 6d05
 [
     {
         "Name": "bridge",
         "Id": "6d052b504ac75a7f072529b0439f8f3b3d685a68334955bea3929515df71f639",
         "Created": "2019-03-16T17:01:50.101348476+08:00",
         "Scope": "local",
         "Driver": "bridge",
         "EnableIPv6": false,
         "IPAM": {
             "Driver": "default",
             "Options": null,
             "Config": [
                 {
                     "Subnet": "172.17.0.0/16",
                     "Gateway": "172.17.0.1"
                 }
             ]
         },
         "Internal": false,
         "Attachable": false,
         "Ingress": false,
         "ConfigFrom": {
             "Network": ""
         },
         "ConfigOnly": false,
         "Containers": {},
         "Options": {
             "com.docker.network.bridge.default_bridge": "true",
             "com.docker.network.bridge.enable_icc": "true",
             "com.docker.network.bridge.enable_ip_masquerade": "true",
             "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
             "com.docker.network.bridge.name": "docker0",
             "com.docker.network.driver.mtu": "1500"
         },
         "Labels": {}
     }
 ]
 [root@izuf6csxy0jrgs3azvia67z ~]# docker inspect -f "{
  {json IPAM.Config.Gateway}}" 6d05
 Template parsing error: template: :1: function "IPAM" not defined
 # 下面的Gateway不是一个对象    ---> 存疑
 [root@izuf6csxy0jrgs3azvia67z ~]# docker inspect -f "{
  {json .IPAM.Config.Gateway}}" 6d05
 Template parsing error: template: :1:12: executing "" at <.IPAM.Config.Gateway>: can't evaluate field Gateway in type interface {}
 [root@izuf6csxy0jrgs3azvia67z ~]# docker inspect -f "{
  {json .IPAM.Config}}" 6d05
 [{"Subnet":"172.17.0.0/16","Gateway":"172.17.0.1"}]

 

使用网络 docker run --network

docker 的网络使用是基于 容器 的 , 所以使用的是 docker run 加 --network 选项的方式


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值