本篇内容主要讲解“怎么使用docker中host和none”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用docker中host和none”吧!
创新互联是一家集网站建设,港闸企业网站建设,港闸品牌网站建设,网站定制,港闸网站建设报价,网络营销,网络优化,港闸网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
none Network
首先介绍none类型的Network。
网络模式为 none,即不为 Docker 容器构造任何网络环境。一旦Docker 容器采用了none 网络模式,那么容器内部就只能使用loopback网络设备,不会再有其他的网络资源。Docker Container的none网络模式意味着不给该容器创建任何网络环境,容器只能使用127.0.0.1的本机网络。
首先看一下我们的网络:
duandingyang@duandingyangdeMacBook-Pro ~/docker/ubuntu-16.04 docker network ls NETWORK ID NAME DRIVER SCOPE 6862ec731e70 bridge bridge local 27b794790b92 host host local c0ccd5a52bf1 none null local
创建一个none类型的容器:
docker run -it --name test1 --network none vincent/ubuntu-base /bin/bash
查看none网络的详细信息:
docker network inspect none [ { "Name": "none", "Id": "c0ccd5a52bf1a09e45ca879e9a2dd32d6987b7d43bd01e0924af501510af4c26", "Created": "2019-06-29T08:14:06.043680652Z", "Scope": "local", "Driver": "null", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "9a7ce6d97102fb8d820d4a649a4d5844e6490e64416267da2dc255ebd4c7688c": { "Name": "test1", "EndpointID": "8914a0bd63984e018cc4ce9f629e964941030a63277df13fc78175954bededfc", "MacAddress": "", "IPv4Address": "", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ]
可以看到test1容器的ip为空。
进入到容器中查看ifconfig:
root@9a7ce6d97102:/usr# 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:1 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
我们发现只有一个lo网卡。没有其他的网卡。意味着test1容器所在的namespace是一个孤立的Network namespace。除了使用docker exec -it test1 /bin/bash这种方式访问容器外,没有任何方式可以访问容器了。
那么这种容器存在的意义是什么呢?
当安全性要求比较高的时候,存储密码等工具可以用这种方式实现。
host Network
Host 模式并没有为容器创建一个隔离的网络环境。而之所以称之为host模式,是因为该模式下的 Docker 容器会和 host 宿主机共享同一个网络 namespace,故 Docker Container可以和宿主机一样,使用宿主机的eth0,实现和外界的通信。换言之,Docker Container的 IP 地址即为宿主机 eth0 的 IP 地址。其特点包括:
这种模式下的容器没有隔离的 network namespace
容器的 IP 地址同 Docker host 的 IP 地址
需要注意容器中服务的端口号不能与 Docker host 上已经使用的端口号相冲突
host 模式能够和其它模式共存
将上面的test1容器停止,并删除容器。
创建host Network容器:
docker run -it --name test1 --network host vincent/ubuntu-base /bin/bash
查看host网络信息:
docker network inspect host [ { "Name": "host", "Id": "27b794790b9286a90285386b1ddd4d1703668e1b57b9e0dd47261c86de52452b", "Created": "2019-06-29T08:14:06.08051536Z", "Scope": "local", "Driver": "host", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [] }, "Internal": false, "Attachable": false, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "c56f09a40a89293affb4120ac698c1add5796d871683c1ded162b44bd2f5a7ba": { "Name": "test1", "EndpointID": "969c508af1d2448c4b1028f80ee0b4aca2fa7856a2c3c92f4def251781bf6488", "MacAddress": "", "IPv4Address": "", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ]
可以看到test1同样没有ip地址和mac地址。
进入到容器中查看ifconfig:
root@linuxkit-025000000001:/usr# ifconfig docker0 Link encap:Ethernet HWaddr 02:42:27:c4:e8:bd inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0 inet6 addr: fe80::42:27ff:fec4:e8bd/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:108020 errors:0 dropped:0 overruns:0 frame:0 TX packets:260692 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4347447 (4.3 MB) TX bytes:381499475 (381.4 MB) eth0 Link encap:Ethernet HWaddr 02:50:00:00:00:01 inet addr:192.168.65.3 Bcast:192.168.65.255 Mask:255.255.255.0 inet6 addr: fe80::50:ff:fe00:1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:261768 errors:0 dropped:0 overruns:0 frame:0 TX packets:109131 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:381626776 (381.6 MB) TX bytes:5951813 (5.9 MB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:140 (140.0 B) TX bytes:140 (140.0 B)
发现他的网卡与我们的宿主机上是很相似的。
通过host方式创建的容器,没有独立的Network namespace,跟我们的主机的Network namespace共享。
使用这种方式会出现ip冲突和端口冲突
到此,相信大家对“怎么使用docker中host和none”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
标题名称:怎么使用docker中host和none
本文网址:http://scyingshan.cn/article/gphhjj.html