0


Docker之网络配置

一. 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. 先启动一个容器

docker run -di centos:7

**可以看见:出现了一个容器并且分配了一个 ip 为172.17.0.2 **

2. 下面再来一次,再次启动一个容器

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

#--net=host:指定容器:为仅主机模式,--restart=always:开机自启动
docker run -di --name c1 --net=host --restart=always centos:7

可以看出:host仅主机模式是不会分配虚拟IP

二. Docker网络实操

2.1 bridge桥接模式

**一些常用的指令 **

#查看我们自身创建的
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

映射成果

但是随机分配的端口比较难记住,不好掌控,那我们来指定端口

#8081映射8080
docker run -di -p 8081:8080 --name mt3 94d2357d288e

映射成功

2.1 host仅主机模式

** 需要指定模式,但是不需要指定端口,默认会使用宿主机端口,会一一对应,如果部署了两个相同的服务,像是8080,就必须使用桥接模式**

#这种要开放宿主机防火墙端口
docker run -di --net=host --name mt5 --restart=always 94d2357d288e

#指定数据卷(如果不记得数据卷跟谁绑定了就用这个)
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

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是不是自己定义的

#查看网络 mynetwork是名字
docker network inspect mynetwork

可以发现创建成功了

也可以进入容器的内部,检查内部的网络情况

#查看镜像
docker images
 
#进入容器内部 tomcat8是容器名字
docker exec -it tomcat8 /bin/bash
 
#要进行下载,因为没有ifconfig这个命令
yum install -y vim
 
#下载命令
yum install net-tools.x86_64 -y
 
#查看命令
ifconfig

**发现IP是固定 **

标签: docker 容器 运维

本文转载自: https://blog.csdn.net/2301_79278613/article/details/136466955
版权归原作者 小雲同学. 所有, 如有侵权,请联系我们删除。

“Docker之网络配置”的评论:

还没有评论