docker入門(三)

docker容器IP「暴露」到外網(宿主機外)

首先將docker容器IP固定

Docker自身的4種網絡工做方式,簡略說明下:
host模式,使用--net=host指定。docker

container模式,使用--net=container:NAME_or_ID指定。centos

none模式,使用--net=none指定。網絡

bridge模式,使用--net=bridge指定,默認設置。code

能夠經過命令docker network ls查看。具體細節自行查閱官方文檔。ip

由於docker的這四種網絡都禁止用戶爲容器指定固定ip,因此須要本身建立網絡。路由

docker network create --subnet=172.172.0.0/24 docker-br0

執行上述建立語句,再次執行docker network ls,docker network列表中多了咱們剛建立的自定義網絡,ip段能夠本身定義,/24 是子網掩碼。開發

有了自定義網卡,咱們就能夠爲新啓動的容器指定固定ip了。文檔

docker run -itd --net=docker-br0 --ip 172.172.0.101 --name init busybox 

docker exec -it init /bin/sh

進入容器後執行虛擬機

ifconfig

分配了咱們指定的172.172.0.101。it

暴露ip給外網

舉個實際場景。

個人開發環境是mac,在mac上安裝了centos虛擬機,而後在這臺centos上安裝了docker,並啓動了剛纔的docker容器。

docker容器內是能夠ping同mac的IP,可是mac是沒法ping通docker容器的。

因此咱們須要將全部訪問容器ip段(172.172.0.0/24)的鏈接都交由虛擬機(centos)進行路由。

執行如下命令

ip route add 172.172.0.0/24 via 10.1.10.95 dev en4

10.1.10.95是虛擬機centos的ip地址。en4是mac上的網卡(能夠經過ifconfig查看)。

mac上沒有ip這個命令,須要單獨安裝:

brew install iproute2mac

查看剛添加好的路由

ip route

若是要刪除

ip route del 172.172.0.0/24

好了,如今能夠ping同剛建立的容器了

相信看到這裏,應該明白怎麼將容器IP「暴露」出去了。

相關文章
相關標籤/搜索