目录
一、网络模式简介
1.bridge模式(默认桥接模式)
总结:桥接模式的特点就在于,它所虚拟的服务器都有独立的IP
初始网络模式
2.host模式(仅主机模式)
总结:仅主机它不会分配IP,它共享IP及端口
查看仅主机模式的特点
二、bridge模式的使用
三、host模式的使用
什么时候用桥接模式?什么时候用仅主机模式?
网络模式于我们数据卷容器联合使用
四、自定义网络
① 创建自定义网络
②指定IP地址
③ 查看网络
一、网络模式简介
Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定
bridge:桥接模式、host:仅主机模式、container:容器模式、还有none。
1.bridge模式(默认桥接模式)
总结:桥接模式的特点就在于,它所虚拟的服务器都有独立的IP
docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,
同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP(但非绝对,还是可以修改滴,具体操作可参考资料/10)
解释一下:
初始网络模式
#查看网络模式
ip a
ifconfig
#Docker网络模式相关命令查看
docker network --help
#列出Docker现有网络模式
docker network ls
#查看桥接模式下的网络状态
docker network inspect bridge
#启动容器
docker start c2
#查出所有的网络模式
docker network --help
#ls 查看所有
docker network ls
#查看当前桥接模式里面的情况
docker network inspect bridge
#停止容器
docker stop c2
#查看当前它虚拟机的id
ifconfig
目前在这里面只有一个容器,我们在来启动一个。
2.host模式(仅主机模式)
总结:仅主机它不会分配IP,它共享IP及端口
docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口
docker run -itd --net=host 961769676411
注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一致,-p 与-icc 参数是无效的
查看仅主机模式的特点
#查看本机所有的镜像
docker images
#守护进程 采用仅主机模式
docker run -di --name c9 --net=host centos:7
#查看是在运行的容器
docker ps#查看我们仅主机模式里面的内容
docker network inspect host#查看不管正在运行的还是启动的容器
docker ps -a
#删除所有容器
docker rm -f $(docker ps -aq)
二、bridge模式的使用
docker run -di --name tomcat1 -p 8081:8080 912fcdf1a5d5
#--restart=always容器随着Docker引擎启动而启动
docker run -di --name tomcat2 --restart=always -p 8083:8080 912fcdf1a5d5
进行访问
如果在想启动一个可以直接改名字和宿主机的端口号就好了,如下图所示:
一样的也可以访问:如下所示
在我们桥接模式里的网卡就会显示这两个容器,如下所示:
三、host模式的使用
docker run -di --name tomcat3 --net=host 912fcdf1a5d5
docker run -di --name tomcat5 -v /javajwj/software/mydocker/:/home/javajwj/docker --net=host --restart=always 912fcdf1a5d5
目前我们访问http://192.168.29.128:8080/是没有的,如下图所:
访问我是没有做端口映射的,其实仅主机的模式方便一些。
什么时候用桥接模式?什么时候用仅主机模式?
单体应用 仅主机
MySQL、redis、tomcat
集群应用 桥接模式
Nginx 负载3个tomcat
网络模式于我们数据卷容器联合使用
# --restart=always容器随着Docker引擎启动而启动
docker run -di -v /javajwj/software/mydocker/:/home/javajwj/docker -p 8083:8080 --name t6 --restart=always 912fcdf1a5d5
如果这个命令很长,可以用\换到下一行写 \代表命令没有写完
这是相对我们的网络模式于我们数据卷容器联合使用的一个案例
四、自定义网络
#创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetworkdocker run -it --name tomcat8 --net=mynetwork -v /javajwj/software/mydocker/:/home/javajwj/docker --ip 172.18.0.8 912fcdf1a5d5 /bin/bash
#查看网络
docker network inspect mynetwork
我执行的步骤:
#查看容器
docker ps
#查看桥接里内容信息
docker network inspect bridge
现在里面的容器是有三个,如下图所示:
#我把tomcat1给停掉
docker stop tomcat1
看下图所示:
所以我们要自定义网络
① 创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
②指定IP地址
docker run -it --name tomcat8 --net=mynetwork -v /javajwj/software/mydocker/:/home/javajwj/docker --ip 172.18.0.8 912fcdf1a5d5 /bin/bash
③ 查看网络
docker network inspect mynetwork
这是我们自定义网络,那就意味着在微服务里面把不同的产品微服务给部署进去,然后我把微服务的容器给停了,也不会受到影响。