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

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

接著,進(jìn)入docker容器內(nèi)ping這個網(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這個ip地址,那么我們就可以使用這個ip地址來進(jìn)行宿主機(jī)和容器直接的訪問啦。
作者踩的坑:我自己在度娘里遨游的時候,找到了兩種方法,一個是建立一個容器網(wǎng)絡(luò)network,將容器放入這個容器網(wǎng)絡(luò)中,這種方式只能實現(xiàn)容器與容器直接的快速交互, 若用docker虛擬網(wǎng)卡ip其實也可以互相訪問,沒必要建立容器網(wǎng)絡(luò)。
二是將容器暴露在宿主機(jī)上,創(chuàng)建容器時增加--net=host,但是這種啟動方式存在缺陷,就是端口不能進(jìn)行映射了,即-p 8080:80 這個命令不能使用了,這樣很容易端口沖突,導(dǎo)致容器無法訪問;若進(jìn)行生產(chǎn)環(huán)境部署時,十分不建議使用,當(dāng)端口沖突時,十分不易察覺。
總結(jié)
到此這篇關(guān)于Docker容器與宿主機(jī)相互訪問更方便的方法的文章就介紹到這了,更多相關(guān)Docker容器與宿主機(jī)相互訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker容器訪問宿主機(jī)host設(shè)置的域名方式
- 宿主機(jī)無法訪問docker容器中nginx服務(wù)的問題解決
- docker容器無法訪問外網(wǎng),但是宿主機(jī)卻可以的問題
- Docker容器如何訪問宿主機(jī)的Mysql數(shù)據(jù)庫
- docker從容器中訪問到宿主機(jī)3種方法
- Docker如何訪問到宿主機(jī)MYSQL的實現(xiàn)方法
- docker內(nèi)服務(wù)訪問宿主機(jī)服務(wù)的實現(xiàn)
- docker容器訪問宿主機(jī)的MySQL操作
- Docker內(nèi)如何訪問本機(jī)(宿主機(jī))的具體方法
- docker無法通過宿主機(jī)IP訪問容器內(nèi)服務(wù)的問題解決
相關(guān)文章
關(guān)于Jenkins + Docker + ASP.NET Core自動化部署的問題(避免踩坑)
這篇文章主要介紹了關(guān)于Jenkins + Docker + ASP.NET Core自動化部署的問題,本文給大家?guī)砹薲ocker安裝方法及一些注意事項,內(nèi)容有點小長,希望朋友們耐心看完,一定有收獲2021-05-05
Docker容器導(dǎo)致磁盤空間不足無法訪問的解決方法
本文主要介紹了Docker容器導(dǎo)致磁盤空間不足無法訪問的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
docker中的volume和bind?mount區(qū)別講解
這篇文章主要介紹了docker的volume和bind?mount區(qū)別,介紹了volume?相對于bind?mount的優(yōu)點及volume操作,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
Docker?安裝Redis?無法使用配置文件設(shè)置密碼問題及解決方法
最近開發(fā)需要使用各種組件,如果都到開發(fā)機(jī)上安裝,會占用電腦資源較多,所以使用docker容器來安裝這些組件,這篇文章主要介紹了Docker安裝Redis無法使用配置文件設(shè)置密碼問題,需要的朋友可以參考下2023-08-08

