如何使用Docker创建自定义网络

目录

网络模式

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 

 本篇内容分享完毕,我们下期再见!

猜你喜欢

转载自blog.csdn.net/m0_67094505/article/details/128283373
今日推荐