最近使用docker進(jìn)行開發(fā)時(shí),出現(xiàn)了一個(gè)啟動(dòng)報(bào)錯(cuò)ip的問題。在啟動(dòng)容器時(shí),出現(xiàn)了以下信息:
Error response from daemon: driver failed programming external connectivity on endpoint container_name (container_id): Error starting userland proxy: listen tcp 0.0.0.0:port: bind: address already in use.
經(jīng)過查看發(fā)現(xiàn),這個(gè)問題是由于已經(jīng)被占用的端口號(hào)導(dǎo)致的。因?yàn)閐ocker默認(rèn)使用的端口是容器內(nèi)部的端口,但是我們需要通過宿主機(jī)來訪問容器內(nèi)部的服務(wù)。所以需要將容器內(nèi)的端口映射到宿主機(jī)上。
解決這個(gè)問題的方式很簡單,只需要在啟動(dòng)容器時(shí)指定對應(yīng)的映射即可。使用以下命令:
docker run -d -p host_port:container_port image_name
其中,host_port
表示宿主機(jī)上的端口號(hào),container_port
表示容器內(nèi)部的端口號(hào),image_name
表示docker鏡像的名稱。
如果還是遇到了報(bào)錯(cuò)信息,可以使用以下命令查看端口的占用情況:
sudo netstat -tunpl | grep host_port
其中,host_port
表示需要查看的端口號(hào)。
總的來說,docker啟動(dòng)報(bào)錯(cuò)ip的問題比較常見,但是解決起來也比較簡單。只需要在啟動(dòng)容器時(shí)正確指定映射的端口即可。