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“暴露”出去了。

相关文章
相关标签/搜索