docker是开发者的有力工具,使用docker可以很简单方便的安装开发的工具和环境。
不过有些工具安装时需要指定引用的服务,比如安装rocketmq的console容器时,需要指定rocketmq broker的容器ip地址,再比如安装kibana需要指定elasticsearch容器的ip地址,这个时候传入127.0.0.1是不行的。猜测当传入127.0.0.1时,它应该是在容器内部查找,而没有跳出来找到host机器。所以需要传入一个真正的ip地址。
但是作为码农,经常在公司和家都要开发,电脑的IP是经常变化的,所以我们需要给容器一个固定的IP地址。
docker默认有三个网络:bridge/host/none。容器默认指定网络bridge,而且IP是动态分配的,不能指定IP地址,所以需要自定义网络。
一、创建自定义网络
$ docker network create --driver bridge --subnet=172.16.12.0/16 --gate=172.16.1.1 mynetwork
- --driver 指定网络类型
- --subnet 指定网络和子网掩码
- --gate 指定网络网关
二、新建容器如何指定网络和IP
$ docker run -itd --name mysql7 --network=mynetwork --ip 172.16.12.12 mysql:5.7.30
- --network 指定网络
- --ip 指定IP
三、已存在的容器如何指定网络和IP
3.1 解除旧网络
$ docker network disconnect bridge mysql7
这里假设mysql7这个容器是在默认网络 bridge中,这样先把它的网络解除。
3.2 重新指定网络和IP
$ docker network connect mynetwork mysql7 --ip 172.16.12.13