Docker容器與宿主機(jī)相互訪問更方便的方法
近期公司在給客戶安裝部署項(xiàng)目時(shí),由于客戶電腦處于無任何網(wǎng)絡(luò)下,因此需要宿主機(jī)與容器之間可以互相訪問;但是,由于容器的特性,localhost和127.0.0.1在容器中都是指向容器內(nèi),而不是宿主機(jī),因此需要調(diào)整。
通過我大量搜索和實(shí)踐,發(fā)現(xiàn)網(wǎng)上教的什么自定義網(wǎng)絡(luò)和修改容器啟動(dòng)指定net網(wǎng)絡(luò)都不太好用,最后通過實(shí)踐發(fā)現(xiàn)了更方便的方法。
這里用win10測試,家庭版、專業(yè)版都適用(Linux本身有網(wǎng)卡,可不使用docker的虛擬網(wǎng)卡,不過使用docker的虛擬網(wǎng)卡ip也是好使的)。
首先啟動(dòng)你的docker,然后Win + R ,輸入cmd回車,在命令行輸入ipconfig,查看ip

從圖中可看見,192.168.99.1就是docker的虛擬網(wǎng)卡ip,使用Docker desktop啟動(dòng)的docker就是如圖的適配器名稱,使用Docker toolbox部署的docker,網(wǎng)卡適配器名稱是VirtualBox。
接著使用ping命令來ping這個(gè)docker虛擬網(wǎng)卡地址
ping 192.168.99.1
訪問成功效果:

接著,進(jìn)入docker容器內(nèi)ping這個(gè)網(wǎng)卡ip地址
#進(jìn)入容器 docker exec -it <容器ID> /bin/bash #ping網(wǎng)卡ip地址 ping 192.168.99.1 #若未安裝ping命令,使用以下命令進(jìn)行下載 apt-get update apt-get install -y inetutils-ping 或 apt-get install iputils-ping
ping成功效果:

由此可發(fā)現(xiàn),宿主機(jī)與容器都可以ping通192.168.99.1這個(gè)ip地址,那么我們就可以使用這個(gè)ip地址來進(jìn)行宿主機(jī)和容器直接的訪問啦。
作者踩的坑:我自己在度娘里遨游的時(shí)候,找到了兩種方法,一個(gè)是建立一個(gè)容器網(wǎng)絡(luò)network,將容器放入這個(gè)容器網(wǎng)絡(luò)中,這種方式只能實(shí)現(xiàn)容器與容器直接的快速交互, 若用docker虛擬網(wǎng)卡ip其實(shí)也可以互相訪問,沒必要建立容器網(wǎng)絡(luò)。
二是將容器暴露在宿主機(jī)上,創(chuàng)建容器時(shí)增加--net=host,但是這種啟動(dòng)方式存在缺陷,就是端口不能進(jìn)行映射了,即-p 8080:80 這個(gè)命令不能使用了,這樣很容易端口沖突,導(dǎo)致容器無法訪問;若進(jìn)行生產(chǎn)環(huán)境部署時(shí),十分不建議使用,當(dāng)端口沖突時(shí),十分不易察覺。
總結(jié)
到此這篇關(guān)于Docker容器與宿主機(jī)相互訪問更方便的方法的文章就介紹到這了,更多相關(guān)Docker容器與宿主機(jī)相互訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker使用nodejs鏡像構(gòu)建express服務(wù)的方法
這篇文章主要介紹了Docker使用nodejs鏡像構(gòu)建express服務(wù),主要包括nodejs容器的啟動(dòng),安裝nodejs第三方依賴模塊及啟動(dòng)nodejs服務(wù)的相關(guān)操作,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
PIP安裝docker-compose超時(shí)問題解決方案
這篇文章主要介紹了PIP安裝docker-compose超時(shí)問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Docker核心組件之聯(lián)合文件系統(tǒng)詳解
這篇文章主要為大家介紹了Docker核心組件之聯(lián)合文件系統(tǒng)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04

