所以我有一個Nginx運行在一個docker容器,我有一個mysql運行在localhost,我想連接到我的Nginx內的MySql。 MySql在localhost上運行,並且不將端口暴露給外部世界,因此其綁定在localhost上,而不是綁定在機器的ip地址上。
有沒有辦法連接到這個MySql或任何其他程序在localhost從這個docker容器?
docker run –net ="bridge"(默認)
默認情況下,Docker創建一個名為docker0的網橋。 Docker主機和Docker容器在該網橋上都有一個IP地址。
使用ip addr show docker0 能看到相關ip
在這個模式下,docker與主機的網絡是不互通的,docker 及docker下的容器之間個地址相同 (同ip段)
外網訪問只能通過端口映射
如果docker nginx需要連本機mysql , 只能將mysql的3306端口打開,通過外網去連接
docker run –net ="host" //主機模式
這樣的容器將與docker主機共享網絡堆棧,從容器的角度來看,localhost(或127.0.0.1)將引用docker主機。
請注意,在docker容器中打開的任何端口都將在docker主機上打開。而這不需要-p
or -P
docker run
option。
http://www.voidcn.com/article/p-uvkusivz-bsg.html