目录
网络模式
1.bridge模式(默认模式--桥接模式)
初识网络模式
查看桥接模式的特点
2.host模式(仅主机模式)
使用守护进程的方式创建并启动且进入容器
查看仅主机模式下的网络配置
端口映射 :
3.如何创建自定义网络
网络模式
Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定
1.bridge模式(默认模式--桥接模式)
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 run -di centos:7【或者:docker start 容器名称】
当我们启动一个容器之后,可以通过 docker network inspect bridge 可以看到:
当关闭容器之后再通过 docker network inspect bridge 就已经没有了
解析:
当我分别启动两个容器之后,可以直观的看到两者ip地址
通过 docker network inspect bridge 查看:
给两个容器都分配了不同的IP地址
桥接模式的特点:
使用桥接模式,可以使得虚拟服务器都有不同的IP地址。
2.host模式(仅主机模式)
使用守护进程的方式创建并启动且进入容器
docker run -di --name --net=host centos:7
查看仅主机模式下的网络配置
docker network inspect host
仅主机模式结论:
不会给容器分配虚拟IP地址。
补充一个知识点:docker rm -f $(docker ps -aq)【删除所有容器】
还有一个问题,如果docker中有两个tomcat的话,一个怎么做才能区分跑的是哪一个呢?
答:采用桥接模式做端口映射。
端口映射 :
IP地址加上映射端口号即可访问:
浏览器搜索:192.168.3. 128:8081
OK,访问成功,意味着端口映射成功!
通过 docker network inspect bridge 可以查看到:
那么使用桥接模式进行端口映射这一块就到这里结束。
使用仅主机模式启动一个Tomcat,那么就不需要做端口映射了。
docker run -di --name 容器名称 rong--net=host 容器ID
访问成功!
结论:
部署单体应用的时候,可以使用仅主机模式,不需要进行端口映射。
部署集群应用的时候,比如说Nginx负载个Tomcat时,那么就必须使用桥接模式进行端口映射。
docker run
-di
-v /chenchen/softpath/mydocker:/home/chenchen/docker -p 8083:8080 --name t10
--net=bridge
--restart=always 2d2bccf89f53
#查看网络
docker network inspect mynetwork
命令解析:
启动成功!访问成功!
3.如何创建自定义网络
为什么需要自定义网络,因为当使用docker引擎进行部署项目在容器中之后,会被分配随机IP,当关闭之后再开启时,所被分配的IP地址极大可能会不一样。那么
步骤:
#创建自定义网络【这一行命令时创建网桥】
docker network create --subnet=172.18.0.0/16 mynetwork作用:创建容器的时候可以指定IP地址
创建容器
docker run -it --name tomcat8 --net=mynetwork -v /chenchen/software/mydocker/:/home/chenchen/docker --ip 172.18.0.8 f7f730b9e9eb /bin/bash
OK成功。因为不是守护进程的方式运行,所以现在换个控制台继续操作。
成功啦!
如何删除自定义网络mynet(没有容器使用)
docker network rm mynet