0. 自定义网络相关命令
1.创建自定义网络
docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet
参数说明
--driver bridge 设置网络模式
--subnet 192.168.0.1/16 设置子网
--gateway 192.168.0.1 设置网关
mynet 自定义网络的名称
2.删除自定义网络mynet(没有容器使用此网络才能删除)
docker network rm mynet
3.查看docker中已安装的所有网络
docker network ls
4.查看自定义网络mynet中的配置信息
docker network inspect mynet
5. 启动容器时,指定网络、IP
docker run --name centos1 -itd --net mynet --ip 192.168.0.11 centos:latest
docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:latest
注1:有些下载的镜像,执行docker run -d 不加-it参数运行后就直接exited(0),这是制作此镜像的基础镜像的问题,添加-itd即可,
例如:centos镜像就要加-itd,nginx镜像则不需要-it,-d即可
注2:在有些镜像启动时,还可以通过-P或-p参数绑定宿主机端口号,例如:nginx镜像,因为容器内部已放开此端口号
注3:停止并删除所有容器
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
6. 启动容器后检查网络之间是否可以互通
docker exec -it centos1 ping centos2
7. network帮助命令
docker network --help
8. 如何让docker上2个不同网络的容器互连(重要)
#1.使用局域名bridge
docker run --name centos1 -itd centos:latest
docker network inspect bridge
#2.使用局域网mynet
docker run --name centos2 -itd --net mynet --ip 192.168.0.12 centos:latest
docker network inspect mynet
#3.测试centos1和centos2的连接
docker exec -it centos1 ping centos2
#连接失败,控制台出现如下提示
ping: centos2: Name or service not known
#4.如何解决此问题呢?向网络mynet中添加容器centos1
docker network connect mynet centos1
为什么成功了呢?原因:容器centos1具有两个ip
#查看网络信息
docker network inspect mynet
#查看容器详细信息
docker inspect centos1