docker內(nèi)的容器如何與宿主機(jī)共享IP的方法
問(wèn)題
有個(gè)項(xiàng)目里面需要將一些服務(wù)打包到docker鏡像中,打包完成后,發(fā)現(xiàn)有些服務(wù)有問(wèn)題,主要集中在一些端側(cè)設(shè)備接入用的服務(wù),主要是工業(yè)相機(jī)。相機(jī)掃描不到。
原因
當(dāng)Docker進(jìn)程啟動(dòng)時(shí),會(huì)在主機(jī)上創(chuàng)建一個(gè)名為docker0的虛擬網(wǎng)橋,此主機(jī)上啟動(dòng)的Docker容器會(huì)連接到這個(gè)虛擬網(wǎng)橋上。虛擬網(wǎng)橋的工作方式和物理交換機(jī)類似,這樣主機(jī)上的所有容器就通過(guò)交換機(jī)連在了一個(gè)二層網(wǎng)絡(luò)中。從docker0子網(wǎng)中分配一個(gè)IP給容器使用,并設(shè)置docker0的IP地址為容器的默認(rèn)網(wǎng)關(guān)。這樣容器就在宿主機(jī)建立的一個(gè)虛擬vlan中,或者叫虛擬局域網(wǎng)中。
而很多設(shè)備的發(fā)現(xiàn)和掃描服務(wù)都是運(yùn)行在局域網(wǎng)中
比如攝像頭的ONVIF協(xié)議,相機(jī)的genicam協(xié)議等。
這就導(dǎo)致了運(yùn)行在docker中的設(shè)備發(fā)現(xiàn)服務(wù),無(wú)法發(fā)現(xiàn)設(shè)備,無(wú)法被設(shè)備訪問(wèn)到。
解決
docker中的容器有四種網(wǎng)絡(luò)方式,默認(rèn)是bridge的方式。這種就是虛擬vlan了,容器可以訪問(wèn)外面,也可以映射端口出去。另外一種是host方式,這種方式和宿主機(jī)用同一個(gè)IP,滿足了需要,可以解決這個(gè)問(wèn)題。
[root@master ~]# docker run -tid --net=bridge --name testhost ubuntu1604 [root@master ~]# docker exec -ti testhost /bin/bash [root@master py_interface]#
host模式下的容器,進(jìn)入后顯示為主機(jī)的名稱而不是一串id,比如
[root@efc2b497dbd6 py_interface]#
進(jìn)入容器后,ifconfig一下能看到IP和宿主機(jī)是一樣的。
到此這篇關(guān)于docker內(nèi)的容器如何與宿主機(jī)共享IP的文章就介紹到這了,更多相關(guān)docker容器與宿主機(jī)共享IP內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文詳解如何修改Docker的默認(rèn)存儲(chǔ)路徑
這篇文章主要介紹了關(guān)于如何修改Docker的默認(rèn)存儲(chǔ)路徑的相關(guān)資料,默認(rèn)安裝的情況下,會(huì)使用 /var/lib/docker/ 目錄作為存儲(chǔ)目錄,用以存放拉取的鏡像和創(chuàng)建的容器等,這個(gè)路徑是系統(tǒng)存儲(chǔ)目錄,一般空間會(huì)比較小,需要的朋友可以參考下2023-08-08docker中run、start和create命令的區(qū)別
對(duì)于 Docker 初學(xué)者來(lái)說(shuō),docker start、docker run 和 docker create 等術(shù)語(yǔ)可能會(huì)令人困惑,本文就來(lái)介紹一下docker中run、start和create命令的區(qū)別,感興趣的可以了解一下2023-11-11idea集合docker實(shí)現(xiàn)鏡像打包一鍵部署
這篇文章主要介紹了idea集合docker實(shí)現(xiàn)鏡像打包一鍵部署2021-02-02