本篇內(nèi)容主要講解“怎么使用docker中host和none”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么使用docker中host和none”吧!
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),港閘企業(yè)網(wǎng)站建設(shè),港閘品牌網(wǎng)站建設(shè),網(wǎng)站定制,港閘網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,港閘網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
首先介紹none類型的Network。
網(wǎng)絡(luò)模式為 none,即不為 Docker 容器構(gòu)造任何網(wǎng)絡(luò)環(huán)境。一旦Docker 容器采用了none 網(wǎng)絡(luò)模式,那么容器內(nèi)部就只能使用loopback網(wǎng)絡(luò)設(shè)備,不會(huì)再有其他的網(wǎng)絡(luò)資源。Docker Container的none網(wǎng)絡(luò)模式意味著不給該容器創(chuàng)建任何網(wǎng)絡(luò)環(huán)境,容器只能使用127.0.0.1的本機(jī)網(wǎng)絡(luò)。
首先看一下我們的網(wǎng)絡(luò):
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
創(chuàng)建一個(gè)none類型的容器:
docker run -it --name test1 --network none vincent/ubuntu-base /bin/bash
查看none網(wǎng)絡(luò)的詳細(xì)信息:
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為空。
進(jìn)入到容器中查看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)
我們發(fā)現(xiàn)只有一個(gè)lo網(wǎng)卡。沒(méi)有其他的網(wǎng)卡。意味著test1容器所在的namespace是一個(gè)孤立的Network namespace。除了使用docker exec -it test1 /bin/bash這種方式訪問(wèn)容器外,沒(méi)有任何方式可以訪問(wèn)容器了。
當(dāng)安全性要求比較高的時(shí)候,存儲(chǔ)密碼等工具可以用這種方式實(shí)現(xiàn)。
Host 模式并沒(méi)有為容器創(chuàng)建一個(gè)隔離的網(wǎng)絡(luò)環(huán)境。而之所以稱之為host模式,是因?yàn)樵撃J较碌?Docker 容器會(huì)和 host 宿主機(jī)共享同一個(gè)網(wǎng)絡(luò) namespace,故 Docker Container可以和宿主機(jī)一樣,使用宿主機(jī)的eth0,實(shí)現(xiàn)和外界的通信。換言之,Docker Container的 IP 地址即為宿主機(jī) eth0 的 IP 地址。其特點(diǎn)包括:
這種模式下的容器沒(méi)有隔離的 network namespace
容器的 IP 地址同 Docker host 的 IP 地址
需要注意容器中服務(wù)的端口號(hào)不能與 Docker host 上已經(jīng)使用的端口號(hào)相沖突
host 模式能夠和其它模式共存
將上面的test1容器停止,并刪除容器。
創(chuàng)建host Network容器:
docker run -it --name test1 --network host vincent/ubuntu-base /bin/bash
查看host網(wǎng)絡(luò)信息:
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同樣沒(méi)有ip地址和mac地址。
進(jìn)入到容器中查看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)
發(fā)現(xiàn)他的網(wǎng)卡與我們的宿主機(jī)上是很相似的。
通過(guò)host方式創(chuàng)建的容器,沒(méi)有獨(dú)立的Network namespace,跟我們的主機(jī)的Network namespace共享。
使用這種方式會(huì)出現(xiàn)ip沖突和端口沖突
到此,相信大家對(duì)“怎么使用docker中host和none”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!