范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

详解Docker你需要知道的Docker进阶知识四

  Docker 网络
  在我们安装  Docker   后,会自动创建三个网络。我们可以使用下面的命令来查看这些网络: [root@VM_0_17_centos ~]# docker network ls NETWORK ID          NAME                DRIVER              SCOPE 54e77f90579f        bridge              bridge              local c9b1125523d9        host                host                local 0d7ae6956393        none                null                local
  如上图所示,三个默认的网络分别为  bridge  , host  , none  。 bridge
  bridge  ,即桥接网络,在安装 docker   后会创建一个桥接网卡,该桥接网卡的名称为 docker0  。可以通过下面的命令来查看 [root@VM_0_17_centos ~]# docker network inspect bridge | grep name             "com.docker.network.bridge.name": "docker0", [root@VM_0_17_centos ~]# ifconfig docker0: flags=4163  mtu 1500         inet 172.18.0.1  netmask 255.255.0.0  broadcast 172.18.255.255         inet6 fe80::42:b2ff:fe56:cd  prefixlen 64  scopeid 0x20         ether 02:42:b2:56:00:cd  txqueuelen 0  (Ethernet)         RX packets 199819  bytes 24756125 (23.6 MiB)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 178712  bytes 184863122 (176.2 MiB)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  在上图中,我们可以查看到对应的值。默认情况下,我们创建的容器都会自动连接到  bridge   网络。其详细信息如下所示: [root@VM_0_17_centos ~]# docker network inspect bridge [     {         "Name": "bridge",         "Id": "54e77f90579f347ba9c4e50801c303aa9bbc87220f4e91551190ef0bfe20fb73",         "Created": "2020-02-28T01:16:37.673981451+08:00",         "Scope": "local",         "Driver": "bridge",         "EnableIPv6": false,         "IPAM": {             "Driver": "default",             "Options": null,             "Config": [                 {                     # 子网                     "Subnet": "172.18.0.0/16",                     "Gateway": "172.18.0.1"                 }             ]         },         "Internal": false,         "Attachable": false,         "Ingress": false,         "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": {}     } ]
  我们可以尝试创建一个容器,该容器会自动连接到  bridge   网络,例如我们创建一个名为 hellodocker001   的容器,创建后,再次查看 bridge   的信息: [root@VM_0_17_centos ~]# docker container run -itd --name hellodocker001 centos /bin/bash ad0872f8e5a7602967715a05bfeaddda003987f4dd44dc015605bd292539620e [root@VM_0_17_centos ~]# docker network inspect bridge [     {         "Name": "bridge",         "Id": "54e77f90579f347ba9c4e50801c303aa9bbc87220f4e91551190ef0bfe20fb73",         "Created": "2020-02-28T01:16:37.673981451+08:00",         "Scope": "local",         "Driver": "bridge",         "EnableIPv6": false,         "IPAM": {             "Driver": "default",             "Options": null,             "Config": [                 {                     "Subnet": "172.18.0.0/16",                     "Gateway": "172.18.0.1"                 }             ]         },         "Internal": false,         "Attachable": false,         "Ingress": false,         "ConfigFrom": {             "Network": ""         },         "ConfigOnly": false,         "Containers": {         # 该容器的网络信息            "a75888f17b9f83741544e2e434be3d6d1feed6431b206767aca6bbe8cd9bb238": {                 "Name": "hellodocker002",                 "EndpointID": "1185979565eb4e40034f5aadb79140be8f0783ffb89981d7d205ed086f57696d",                 "MacAddress": "02:42:ac:12:00:03",                 "IPv4Address": "172.18.0.3/16",                 "IPv6Address": ""             }         },
  这时可以查看到相应的容器的网络信息,该容器在连接到  bridge   网络后,会从子网的地址池中获得一个 IP 地址,即上图中的 172.18.0.2  。
  使用  docker container attach hellodocker002   命令,也可查看相应的地址信息: [root@VM_0_17_centos ~]# docker container attach hellodocker002 [root@a75888f17b9f /]# ifconfig eth0: flags=4163  mtu 1500         inet 172.18.0.3  netmask 255.255.0.0  broadcast 172.18.255.255         ether 02:42:ac:12:00:03  txqueuelen 0  (Ethernet)         RX packets 7  bytes 586 (586.0 B)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 0  bytes 0 (0.0 B)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  lo: flags=73  mtu 65536         inet 127.0.0.1  netmask 255.0.0.0         loop  txqueuelen 1000  (Local Loopback)         RX packets 0  bytes 0 (0.0 B)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 0  bytes 0 (0.0 B)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  并且对于连接到默认的  bridge   之间的容器可以通过 IP 地址互相通信。例如我们启动一个 hellodocker003   的容器,它可以与 hellodocker002   通过 IP 地址进行通信。 [root@VM_0_17_centos ~]# docker container attach hellodocker003 [root@185945b6b294 /]# ifconfig eth0: flags=4163  mtu 1500         inet 172.18.0.2  netmask 255.255.0.0  broadcast 172.18.255.255         ether 02:42:ac:12:00:02  txqueuelen 0  (Ethernet)         RX packets 11749  bytes 35762881 (34.1 MiB)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 11457  bytes 802314 (783.5 KiB)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  lo: flags=73  mtu 65536         inet 127.0.0.1  netmask 255.0.0.0         loop  txqueuelen 1000  (Local Loopback)         RX packets 0  bytes 0 (0.0 B)         RX errors 0  dropped 0  overruns 0  frame 0         TX packets 0  bytes 0 (0.0 B)         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@VM_0_17_centos ~]# docker container attach hellodocker002 [root@a75888f17b9f /]# ping 172.18.0.2 PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data. 64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.080 ms 64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.059 ms 64 bytes from 172.18.0.2: icmp_seq=3 ttl=64 time=0.075 ms 64 bytes from 172.18.0.2: icmp_seq=4 ttl=64 time=0.055 ms  --- 172.18.0.2 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.055/0.067/0.080/0.012 ms
  上述的操作我们通过  ping   命令演示了位于同一 Docker 网络的容器之间网络是连通的。但如果需要从主机外部访问容器内服务,则需要配置端口映射,也就是将容器内的端口映射为主机的端口,然后通过主机 IP + 端口来访问。端口映射通过 iptables   来实现。
  下面的操作演示了 docker 实现端口映射的方式:  首先删除掉上面创建的两个容器。  这时,我们查看  nat   表的转发规则,使用如下命令: docker container ls -q | xargs docker container stop docker container ls -aq | xargs docker container rm
  由于此时并未创建 docker 容器,nat 表中没有什么特殊的规则。接下来,我们使用上一节构建的  web:lastest   镜像创建一个容器 hellodocker001  ,并将本机的端口 10001   映射到容器中的 80   端口上,在浏览器中可以通过 localhost:10001   访问容器 hellodocker001   的 apache   服务,命令如下: [root@VM_0_17_centos ~]# docker run -d -p 10001:80 --name hellodocker001 web:latest 56372378defc0f5964714872002b1d5dd74888c94a847ca77e99f2b72937254c
  docker run   命令的 -p   参数是通过端口映射的方式,将容器的端口发布到主机的端口上。其使用格式为 -p ip:hostPort:containerPort  。并且还可以指定范围,例如 -p10001-10100:1-100  ,代表将容器 1-100   的端口映射到主机上的 10001-10100  端口上,两者一一对应。 创建成功后,我们可以在浏览器中输入  localhost:10001   访问到容器 hellodocker001   的 apache   服务,并查看此时 iptables   中 nat   表和 filter   表的规则,其中分别新增了一条比较重要的内容,如下图所示: [root@VM_0_17_centos ~]# sudo iptables -t nat -nvL Chain PREROUTING (policy ACCEPT 732 packets, 26539 bytes)  pkts bytes target     prot opt in     out     source               destination 1289K   56M DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL  Chain INPUT (policy ACCEPT 732 packets, 26539 bytes)  pkts bytes target     prot opt in     out     source               destination  Chain OUTPUT (policy ACCEPT 398 packets, 24505 bytes)  pkts bytes target     prot opt in     out     source               destination     0     0 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL  Chain POSTROUTING (policy ACCEPT 483 packets, 28925 bytes)  pkts bytes target     prot opt in     out     source               destination  1537 92532 MASQUERADE  all  --  *      !docker0  172.18.0.0/16        0.0.0.0/0                0     0 MASQUERADE  tcp  --  *      *       172.18.0.2           172.18.0.2           tcp dpt:80  Chain DOCKER (2 references)  pkts bytes target     prot opt in     out     source               destination     0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0               85  4420 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:10001 to:172.18.0.2:80[root@VM_0_17_centos ~]# sudo iptables -nvL Chain INPUT (policy ACCEPT 4509 packets, 318K bytes)  pkts bytes target     prot opt in     out     source               destination  Chain FORWARD (policy DROP 0 packets, 0 bytes)  pkts bytes target     prot opt in     out     source               destination  230K  188M DOCKER-USER  all  --  *      *       0.0.0.0/0            0.0.0.0/0             230K  188M DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            0.0.0.0/0             106K  172M ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED  3809  175K DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0             120K   16M ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0                2   168 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            0.0.0.0/0             Chain OUTPUT (policy ACCEPT 5005 packets, 631K bytes)  pkts bytes target     prot opt in     out     source               destination  Chain DOCKER (1 references)  pkts bytes target     prot opt in     out     source               destination    85  4420 ACCEPT     tcp  --  !docker0 docker0  0.0.0.0/0            172.18.0.2           tcp dpt:80  Chain DOCKER-ISOLATION-STAGE-1 (1 references)  pkts bytes target     prot opt in     out     source               destination  120K   16M DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0             230K  188M RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0             Chain DOCKER-ISOLATION-STAGE-2 (1 references)  pkts bytes target     prot opt in     out     source               destination     0     0 DROP       all  --  *      docker0  0.0.0.0/0            0.0.0.0/0             120K   16M RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0             Chain DOCKER-USER (1 references)  pkts bytes target     prot opt in     out     source               destination  404K  279M RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0
  默认的  bridge   网络,每次重启容器,容器的 IP   地址都会发生变化。对于默认的 bridge   网络,不能在启动容器的时候指定 IP,这个只有自定义网络才支持。 旧版的容器互联
  容器间都是通过在  /etc/hosts   文件中添加相应的解析,通过容器名,别名,服务名等来识别需要通信的容器。
  这里,我们启动两个容器,来演示旧的容器互联:  首先启动一个名为  hellodocker001   的容器,使用镜像 busybox  : [root@VM_0_17_centos ~]# docker run -it --rm --name hellodocker001 busybox /bin/sh / # ip addr show 1: lo:  mtu 65536 qdisc noqueue qlen 1000     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever 126: eth0@if127:  mtu 1500 qdisc noqueue     link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff     inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0        valid_lft forever preferred_lft forever / # cat /etc/hosts 127.0.0.1    localhost ::1    localhost ip6-localhost ip6-loopback fe00::0    ip6-localnet ff00::0    ip6-mcastprefix ff02::1    ip6-allnodes ff02::2    ip6-allrouters 172.18.0.2    d9b422546843 / #
  这时打开一个新的终端,启动一个名为  hellodocker002   的容器,并使用 --link   参数与容器 hellodocker001   互联。 [root@VM_0_17_centos ~]# docker run -it --rm --name hellodocker002 --link hellodocker001 busybox /bin/sh / # ping -c 3 hellodocker001 PING hellodocker001 (172.18.0.2): 56 data bytes 64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.101 ms 64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.076 ms 64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.077 ms  --- hellodocker001 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.076/0.084/0.101 ms / # cat /etc/hosts 127.0.0.1    localhost ::1    localhost ip6-localhost ip6-loopback fe00::0    ip6-localnet ff00::0    ip6-mcastprefix ff02::1    ip6-allnodes ff02::2    ip6-allrouters 172.18.0.2    hellodocker001 d9b422546843 172.18.0.3    78b24ce9b0cf / #
  docker run 命令的   --link   参数的格式为 --link:alias  。格式中的 name   为容器名, alias   为别名。即可以通过 alias   访问到该容器。
  如果此时  hellodocker001   容器退出,这时我们启动一个 hellodocker003  ,再次启动一个 hellodocker001  : [root@VM_0_17_centos ~]# docker run -itd --name hellodocker003 --rm busybox /bin/sh d974c8bad86f15f2193a6a3b6e7273724e1b63c04cd27e37a690b18ae4bd655a [root@VM_0_17_centos ~]# docker run -it --name hellodokcer001 --rm busybox /bin/sh / # ip addr show 1: lo:  mtu 65536 qdisc noqueue qlen 1000     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever 134: eth0@if135:  mtu 1500 qdisc noqueue     link/ether 02:42:ac:12:00:04 brd ff:ff:ff:ff:ff:ff     inet 172.18.0.4/16 brd 172.18.255.255 scope global eth0        valid_lft forever preferred_lft forever / #
  按照顺序分配的原则,此时  hellodocker003   的 IP 地址为 192.168.0.4  ,重新创建的容器 hellodocker001   的 IP 地址为 192.168.0.5  。然而容器 hellodocker002   中 /etc/hosts   文件中 hellodocker001   的 IP 地址依旧为 192.168.0.2  :
  容器hellodocker002  / # ping hellodocker001 PING hellodocker001 (172.18.0.2): 56 data bytes 64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.102 ms 64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.078 ms 64 bytes from 172.18.0.2: seq=2 ttl=64 time=0.078 ms 64 bytes from 172.18.0.2: seq=3 ttl=64 time=0.065 ms 64 bytes from 172.18.0.2: seq=4 ttl=64 time=0.077 ms 64 bytes from 172.18.0.2: seq=5 ttl=64 time=0.096 ms 64 bytes from 172.18.0.2: seq=6 ttl=64 time=0.084 ms ^C --- hellodocker001 ping statistics --- 7 packets transmitted, 7 packets received, 0% packet loss round-trip min/avg/max = 0.065/0.082/0.102 ms / #
  如上所示,旧的容器  hellodocker002   通过 --link   连接到 hellodocker001  。而在 hellodocker001   重启后,由于 IP 地址的变化,此时 hellodocker002   并不能正确的访问到 hellodocker001  。
  除了使用  --link   的方式来达到容器间互连,在 docker   中容器间通信更推荐使用自定义网络。 自定义网络
  除了使用默认网络,我们还可以创建自己的  bridge   或 overlay   网络。
  如下所示,我们创建一个名为  network1   的桥接网络,简单命令如下: [root@VM_0_17_centos ~]# docker network create network1 420b3d5758ec0561f1a4a01b137b950e5e77b225a0e4e44f66e1a5cca29b3cbf [root@VM_0_17_centos ~]# docker network ls NETWORK ID          NAME                DRIVER              SCOPE 54e77f90579f        bridge              bridge              local c9b1125523d9        host                host                local 420b3d5758ec        network1            bridge              local 0d7ae6956393        none                null                local
  创建成功后,可以使用  ifconfig   或者 ip addr show   命令查看该桥接网络的网络接口信息,如下所示: [root@VM_0_17_centos ~]# ip addr show 1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1/128 scope host        valid_lft forever preferred_lft forever 2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000     link/ether 52:54:00:97:50:f3 brd ff:ff:ff:ff:ff:ff     inet 172.17.0.17/20 brd 172.17.15.255 scope global eth0        valid_lft forever preferred_lft forever     inet6 fe80::5054:ff:fe97:50f3/64 scope link        valid_lft forever preferred_lft forever 3: docker0:  mtu 1500 qdisc noqueue state UP group default      link/ether 02:42:b2:56:00:cd brd ff:ff:ff:ff:ff:ff     inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0        valid_lft forever preferred_lft forever     inet6 fe80::42:b2ff:fe56:cd/64 scope link        valid_lft forever preferred_lft forever 129: veth9b886cf@if128:  mtu 1500 qdisc noqueue master docker0 state UP group default      link/ether 3e:ba:b6:c2:da:ee brd ff:ff:ff:ff:ff:ff link-netnsid 1     inet6 fe80::3cba:b6ff:fec2:daee/64 scope link        valid_lft forever preferred_lft forever 133: veth9f73fe6@if132:  mtu 1500 qdisc noqueue master docker0 state UP group default      link/ether 4e:17:79:ed:8e:4e brd ff:ff:ff:ff:ff:ff link-netnsid 0     inet6 fe80::4c17:79ff:feed:8e4e/64 scope link        valid_lft forever preferred_lft forever 135: veth6639e4a@if134:  mtu 1500 qdisc noqueue master docker0 state UP group default      link/ether 7e:01:c9:32:05:5a brd ff:ff:ff:ff:ff:ff link-netnsid 2     inet6 fe80::7c01:c9ff:fe32:55a/64 scope link        valid_lft forever preferred_lft forever 136: br-420b3d5758ec:  mtu 1500 qdisc noqueue state DOWN group default      link/ether 02:42:1f:5b:ac:62 brd ff:ff:ff:ff:ff:ff     inet 172.19.0.1/16 brd 172.19.255.255 scope global br-420b3d5758ec        valid_lft forever preferred_lft forever
  而对于该网络的详细信息可以通过  docker network inspect network1   命令来查看,如下图所示: [root@VM_0_17_centos ~]# docker network inspect network1 [     {         "Name": "network1",         "Id": "420b3d5758ec0561f1a4a01b137b950e5e77b225a0e4e44f66e1a5cca29b3cbf",         "Created": "2020-03-11T23:07:37.340111748+08:00",         "Scope": "local",         "Driver": "bridge",         "EnableIPv6": false,         "IPAM": {             "Driver": "default",             "Options": {},             "Config": [                 {                     "Subnet": "172.19.0.0/16",                     "Gateway": "172.19.0.1"                 }             ]         },         "Internal": false,         "Attachable": false,         "Ingress": false,         "ConfigFrom": {             "Network": ""         },         "ConfigOnly": false,         "Containers": {},         "Options": {},         "Labels": {}     } ]
  其相应的网络接口名称和子网都是由 docker 随机生成,当然,我们也可以手动指定:
  此时,我们可以运行一个容器  hellodocker001  ,指定其网络为 network1  ,使用 --network network1  : [root@VM_0_17_centos ~]# docker network create -d bridge --subnet=192.168.16.0/24 --gateway=192.168.16.1 network1 0278cb5b4135544391cce12c0cb7e7191d4b25ca5a5902b5c6a72585c43b9f93 [root@VM_0_17_centos ~]# docker run -it --name hellodocker001 --network network1 --rm busybox /bin/sh / # ifconfig eth0      Link encap:Ethernet  HWaddr 02:42:C0:A8:10:02             # ip地址从指定子网中获取           inet addr:192.168.16.2  Bcast:192.168.16.255  Mask:255.255.255.0           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:16 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:1312 (1.2 KiB)  TX bytes:0 (0.0 B)  lo        Link encap:Local Loopback             inet addr:127.0.0.1  Mask:255.0.0.0           UP LOOPBACK RUNNING  MTU:65536  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  / #
  使用  exit   退出该容器使其自动删除,这时我们再次创建该容器,但是不指定其 --network  : [root@VM_0_17_centos ~]# docker run -it --name hellodocker001 --rm busybox /bin/sh / # ifconfig eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:03             inet addr:172.18.0.3  Bcast:172.18.255.255  Mask:255.255.0.0           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:6 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:516 (516.0 B)  TX bytes:0 (0.0 B)  lo        Link encap:Local Loopback             inet addr:127.0.0.1  Mask:255.0.0.0           UP LOOPBACK RUNNING  MTU:65536  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  / #
  此时,该容器连接到默认的  bridge   网络,这时,可以新打开一个终端,在其中运行如下命令,将 hellodocker001   连接到 network1   网络中: [root@VM_0_17_centos ~]# docker network connect network1 hellodocker001
  这时再次在容器  hellodocker001   中使用 ifconfig   命令 / # ifconfig eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:03             inet addr:172.18.0.3  Bcast:172.18.255.255  Mask:255.255.0.0           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:8 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:656 (656.0 B)  TX bytes:0 (0.0 B)           # eth1连接到network1 eth1      Link encap:Ethernet  HWaddr 02:42:C0:A8:10:02           inet addr:192.168.16.2  Bcast:192.168.16.255  Mask:255.255.255.0           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:8 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:656 (656.0 B)  TX bytes:0 (0.0 B)  lo        Link encap:Local Loopback             inet addr:127.0.0.1  Mask:255.0.0.0           UP LOOPBACK RUNNING  MTU:65536  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  / #
  如上图中所示,出现了一个  eth1   接口,此时, eth0   连接到默认的 bridge   网络, eth1   连接到 network1   网络。
  对于自定义的网络来说,docker 嵌入的  DNS   服务支持连接到该网络的容器名的解析。这意味着连接到同一个网络的容器都可以通过容器名去 ping   另一个容器。
  如下所示,启动两个容器,连接到  network1  : [root@VM_0_17_centos ~]# docker run -itd --name hellodocker_2 --network network1 --rm busybox /bin/sh b238d82ec8f35b7bac7ef4cdb116c10f577799b4005d7f28531ec701b8324ed7[root@VM_0_17_centos ~]# docker run -it --name hellodocker_3 --network network1 --rm busybox /bin/sh / # ping hellodocker_2 PING hellodocker_2 (192.168.16.4): 56 data bytes 64 bytes from 192.168.16.4: seq=0 ttl=64 time=0.134 ms 64 bytes from 192.168.16.4: seq=1 ttl=64 time=0.077 ms 64 bytes from 192.168.16.4: seq=2 ttl=64 time=0.079 ms 64 bytes from 192.168.16.4: seq=3 ttl=64 time=0.095 ms 64 bytes from 192.168.16.4: seq=4 ttl=64 time=0.085 ms 64 bytes from 192.168.16.4: seq=5 ttl=64 time=0.099 ms  --- hellodocker_2 ping statistics --- 6 packets transmitted, 6 packets received, 0% packet loss round-trip min/avg/max = 0.077/0.094/0.134 ms / #
  启动之后,由于上述的两个容器都是连接到  network1   网络,所以可以通过容器名 ping   通:
  除此之外,在用户自定义的网络中,是可以通过  --ip   指定 IP 地址的,而在默认的 bridge   网络不能指定 IP 地址: [root@VM_0_17_centos ~]# docker run -it --network network1 --ip 192.168.16.100 --rm busybox /bin/sh / # # 连接到默认的 bridge 网络,下面的命令运行失败 [root@VM_0_17_centos ~]# docker run -it --ip 192.168.0.100 --rm busybox /bin/shhost和none
  host   网络,容器可以直接访问主机上的网络。
  例如,我们启动一个容器,指定网络为  host  : [root@VM_0_17_centos ~]# docker run -it --network host --rm busybox /bin/sh / # ifconfig br-0278cb5b4135 Link encap:Ethernet  HWaddr 02:42:F1:AB:34:44             inet addr:192.168.16.1  Bcast:192.168.16.255  Mask:255.255.255.0           inet6 addr: fe80::42:f1ff:feab:3444/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:1 errors:0 dropped:0 overruns:0 frame:0           TX packets:8 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:28 (28.0 B)  TX bytes:656 (656.0 B)  docker0   Link encap:Ethernet  HWaddr 02:42:B2:56:00:CD           inet addr:172.18.0.1  Bcast:172.18.255.255  Mask:255.255.0.0           inet6 addr: fe80::42:b2ff:fe56:cd/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:221013 errors:0 dropped:0 overruns:0 frame:0           TX packets:200086 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:0            RX bytes:25973448 (24.7 MiB)  TX bytes:256263147 (244.3 MiB)  eth0      Link encap:Ethernet  HWaddr 52:54:00:97:50:F3           inet addr:172.17.0.17  Bcast:172.17.15.255  Mask:255.255.240.0           inet6 addr: fe80::5054:ff:fe97:50f3/64 Scope:Link           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:31408016 errors:0 dropped:0 overruns:0 frame:0           TX packets:31205584 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:4912191549 (4.5 GiB)  TX bytes:4606313984 (4.2 GiB)
  none   网络,容器中不提供其它网络接口。 [root@VM_0_17_centos ~]# docker run -it --network none --rm busybox /bin/sh / # ifconfig lo        Link encap:Local Loopback             inet addr:127.0.0.1  Mask:255.0.0.0           UP LOOPBACK RUNNING  MTU:65536  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000            RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  / #

国产CPU国产操作系统首批纯国产台式机电脑上市根据龙芯中科官微报道显示,搭载国产操作系统国产芯片,核心组件实现100国产化的宝德自强龙芯台式机PT620L3正式上市开售。不过从目前各大渠道来看,该台式机应该主要面对的是政企单位被Intel和AMD断供后,俄罗斯厂商推出新款主板,或将搭载中国CPU俄乌冲突以后,欧美日韩等国家和地区,疯狂的制裁俄罗斯,在科技领域更是如此,例如Intel和AMD也早早的宣布断供俄罗斯。大家都知道,CPU作为电脑等硬件设备的核心零部件,很难替代,云南将建设5个自动驾驶试点示范路段乐居财经讯王敏5月25日,近日,云南省工业和信息化厅云南省交通运输厅等四部门联合印发关于十四五推进云南省车路协同自动驾驶试点示范建设的指导意见。指导意见提出,将车路协同纳入云南省智巨星财富比尔盖茨们的能源行业创新一些世界上最著名的亿万富翁长期以来一直参与传统和创新的能源项目,但他们在多大程度上影响了该行业的看法?例如,当埃隆马斯克宣布特斯拉大规模购买比特币或批评数字货币时,人们会倾听。那么通信行业迎来业绩回暖立讯精密(SZ002475)天孚通信(SZ300394)广和通(SZ300638)宝信软件(SH600845)通信行业整体业绩增速回升,景气度持续改善。需求提升带动上市公司营收稳步湖北鼓励汽车消费,报废旧车并购买新能源汽车补贴8000元据湖北省政府网站,湖北省人民政府办公厅日前印发加快消费恢复提振若干措施的通知。通知提出,鼓励汽车消费,开展湖北消费汽车焕新活动。2022年6月至12月,实施汽车以旧换新专项行动,对索尼CEOPSN月活跃用户达1亿收入达到140亿美元索尼集团首席执行官吉田宪一郎在最近的企业战略会议上透露了一些有趣的数字。PlayStationNetwork拥有超过1亿月活跃用户,销售额总计超过140亿美元,自2017年以来增长我科学家实现水波单向传播海洋是人类活动重要场所,如果能灵活控制水波传播方向,减少海浪对相关设备的侵袭,将极大便利人类活动,对海洋环境保护也有积极意义。近日,厦门大学陈焕阳教授课题组借鉴人工表面等离激元的理7月上市,小米12Ultlra最新消息,徕卡镜头加持成最大亮点小米手机好像已经一段时间没有新机发布了,除了红米Note11T系列在预热之外,小米旗舰新机也一直没有消息。米粉应该最期待的就是小米12Ultra,其实从小米11Ultra开始大幅度为什么有的泡泡是无色的,有的是彩色的答大家肯定都吹过泡泡,而肯定也有细心的小伙伴发现了类似的问题,为什么每个人吹出来的泡泡颜色不一样?甚至有些没有颜色呢其实从光学的角度理解这个问题,原因就是光的干涉,如果再详细点说是传EA积极寻求卖身曾和迪士尼苹果亚马逊等谈判游戏行业现已进入了一个合并时代,大型发行商动视暴雪,B社,开发商Bungie等都被收购,那么作为世界上排名一直靠前的发行商EA呢?在一个人人有价的时代,关于EA的传闻倒是出奇地少。
回味经典魅族小屏机MEIZUPro6S大屏手机横行的如今,回味昔日小屏的美好。一部经典手机,机油可还记得,来自珠海小厂魅族MEIZUPro6S。前些天去了魅族MEIZU售后,从原来的闹市区的体验大店,到目前在一个偏僻地200元内M。2NVMe协议大容量固态错过悔一年想为电脑升级,固态硬盘那显然是必买物件,俗话说价格便宜量又足,对于固态硬盘选购来说,读取速度要够快,容量要够大,价格要够低,本着这个原则笔者精挑细选了如今市场中价格在200元内,并骁龙778G处理器是什么水平?有哪些亮点和不足呢?此文为你解答在移动端芯片的市场上,高通骁龙联发科天玑与华为麒麟三大芯片一直是近些年最具代表性的,不过华为麒麟芯片目前受限于代工问题无法再继续量产,使得高通在移动端芯片市场的地位更加稳固。但是,慢慢说计网HTTP小Q什么是HTTP协议?慢慢HTTP是一个属于应用层的面向对象的协议,由于其简便,快捷的方式,适用于分布式超媒体信息系统。其特点如下支持客户服务器模式简单快速客户向服务器请求服务时军工元宇宙主题投资报告佳都科技600728截至目前公司在数字孪生技术研发方面已申请了16项发明专利,其中5项取得专利授权或授权通知,获得11项软件著作权,包括三维实景复制引擎软件AR三维实景融合技术平台元宇宙新宠,20爆战法花1900元体验头号玩家自改名Meta之后,Facebook就在元宇宙上运作不断。12月9日,Meta宣布,公司旗下的VR世界HorizonWorlds正式向美国和加拿大的18岁以36氪专访李一男起起伏伏的人生,不是我愿意的新造车正缠斗于月销数字,甚至排行表上的定语都成为竞技场时,李一男以反内卷的面孔出现了。大家都说新造车最后就剩下5家,你怎么看?我们没出车,没资格说这个话,我不想去说,我也不在乎。头企业非法建电站供比特币挖矿云南省多部门执法惩治节电约20亿千瓦时掌上春城讯今年以来,为打击比特币挖矿行为,切实规范全省发供用电秩序,云南省能源局组织州市电力行政主管部门和电网企业开展专项联合执法,坚决拆除比特币等虚拟货币挖矿矿机厂房及供电设施。3米6的距离放多大的电视好?这个问题估计没有人能比我更权威了,因为我家的客厅就是3米6的宽度,我们目前正在用的也正是65寸的电视机,一点都不会觉得大。这是我家的户型图,正好3米6吧。下面这张图是刚才坐在沙发上马斯克喊话贝佐斯别太把自己当回事,多花点时间在蓝色起源,少花点时间泡热水澡特斯拉(975。99,17。48,1。82)CEO埃隆马斯克在周三一次采访中谈到老对手贝佐斯时表示,这位亿万富翁确实太把自己当回事了。马斯克和贝佐斯是地球上最富有的两个人,但两人之n95口罩多久换一次,一天一个成本好高,怎么换比较合适?我以下所说的都是基于目前口罩属于战备紧缺物资,第一是贵第二是少的前提下,只能节衣缩食出此下策,也算是非常时期非常办法。什么是N95口罩?简单来说,N95有两层意思,N是不耐油(no