Docker之网络配置
小雲同学. 2024-08-13 10:37:01 阅读 61
目录
一. Docker网络介绍
1.1 网络模式
1.2 bridge模式(默认模式)
1.2.1 什么是桥接模式
1.2.2 效果演示
1.2.3 桥接模式的特点
1.3 host模式
1.3.1 什么是host模式
1.3.2 仅主机模式的特点
二. Docker网络实操
2.1 bridge桥接模式
2.1 host仅主机模式
三. Docker自定义网络
3.1 为什么要使用自定义网络
3.2 创建自定义网络
3.3 测试
一. Docker网络介绍
1.1 网络模式
Docker在创建容器时有四种网络模式:bridge(桥接)/host(主机)/container(容器一般不用)/none(一般不用),bridge为默认不需要用--net去指定,其他三种模式需要在创建容器时使用--net去指定
ip a
ifconfig
#Docker网络模式相关命令查看
docker network --help
#列出Docker现有网络模式
docker network ls
#查看桥接模式下的网络状态
docker network inspect bridge
#获取多个到容器id
docker ps -aq
#删除所有容器 $代表引用
docker rm -f $(docker -ps -aq)
1.2 bridge模式(默认模式)
1.2.1 什么是桥接模式
docker run时使用--net=bridge,这种模式会为每个容器分配一个独立的Network Namespace,
同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的
注1:bridge为默认模式,不需要使用参数--net去指定,使用了--net参数反而无效
注2:bridge模式无法指定容器IP(但非绝对,还是可以修改滴)
桥接模式:宿主机启动两个容器|服务器:会分配两个IP地址
1.2.2 效果演示
docker network inspect bridge
1.2.3 桥接模式的特点
1. 先启动一个容器
<code>docker run -di centos:7
可以看见:出现了一个容器并且分配了一个 ip 为172.17.0.2
2. 下面再来一次,再次启动一个容器
<code>docker run -di centos:7
可以发现在原来的容器基础上又增添了一个新的容器,并且又添加了一个新的 ip
1.3 host模式
1.3.1 什么是host模式
docker run时使用--net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口
docker run -itd --net=host 961769676411
注1:host模式不能使用端口映射和自定义路由规则,这些都与主机一致,-p 与-icc 参数是无效的
1.3.2 查看仅主机模式的特点
docker network inspect host
<code>#--net=host:指定容器:为仅主机模式,--restart=always:开机自启动
docker run -di --name c1 --net=host --restart=always centos:7
可以看出:host仅主机模式是不会分配虚拟IP
二. Docker网络实操
2.1 bridge桥接模式
一些常用的指令
<code>#查看我们自身创建的
docker images
#这种不需要开放宿主机防火墙端口,如8081端口不需要开放
docker run -di --name tomcat1 -p 8080:8080 94d2357d288e
#--restart=always:容器随着Docker引擎启动而启动
docker run -di --name tomcat2 --restart=always -p 8081:8080 94d2357d288e
#查看我们自身创建的镜像
docker images
#映射
docker run -di -P --name mt2 94d2357d288e
映射成果
但是随机分配的端口比较难记住,不好掌控,那我们来指定端口
<code>#8081映射8080
docker run -di -p 8081:8080 --name mt3 94d2357d288e
映射成功
2.1 host仅主机模式
需要指定模式,但是不需要指定端口,默认会使用宿主机端口,会一一对应,如果部署了两个相同的服务,像是8080,就必须使用桥接模式
<code>#这种要开放宿主机防火墙端口
docker run -di --net=host --name mt5 --restart=always 94d2357d288e
<code>#指定数据卷(如果不记得数据卷跟谁绑定了就用这个)
docker run -di --name mt5 -v /javacy/software/mydocker/:/home/javacy/docker --net=host --restart=always 94d2357d288e
#查看该容器的详细信息
docker inspect mt5(容器名字)
三. Docker自定义网络
3.1 为什么要使用自定义网络
是为了容器之间能相互通信。因为开发会使用微服务springCloud,会把一个项目拆成多个项目进行操作,例如:
用户微服务 项目1,订单微服务 项目2,商品微服务 项目3
而模块与模块之间是需要相互访问的,所以容器与容器之间也是需要相互通信,如果不通信的话就会访问不了,而要通信就必须知道服务部署在哪里,这时就需要知道ip,也需要指定ip,此时桥接网络和仅主机网络是不能满足我们的需求的,所以我们需要使用自定义网络进行操作。
3.2 创建自定义网络
1. 创建自定义网络
#创建自定义网络
docker network create --subnet=172.18.0.0/16 mynetwork
#查看网络
docker network ls
0/16:分配会从0到16这几个ip进行选择
mynetwork:是名字
2. 分配指定ip
<code>docker run -it --name tomcat8 --net=mynetwork -v /javacy/software/mydocker/:/home/javacy/docker --ip 172.18.0.8 94d2357d288e /bin/bash
3.3 测试
再开一个新的连接,查看ip是不是自己定义的
<code>#查看网络 mynetwork是名字
docker network inspect mynetwork
可以发现创建成功了
也可以进入容器的内部,检查内部的网络情况
<code>#查看镜像
docker images
#进入容器内部 tomcat8是容器名字
docker exec -it tomcat8 /bin/bash
#要进行下载,因为没有ifconfig这个命令
yum install -y vim
#下载命令
yum install net-tools.x86_64 -y
#查看命令
ifconfig
发现IP是固定
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。