Docker网络学习笔记 | 青训营笔记

277 阅读2分钟

最近在青训营学的内容曾经接触过,就学了其他的内容

Docker网络

在启动Docker容器时

可以看到有一个--net参数,一般是不指定的,但是一指定,就不一般

这个net参数实际上就是Docker网络的体现

常用基本命令

最基本的指令 - 发现Docker网络的存在

docker network ls # 查看所有网络
docker network inspect XXX网络名字 # 查看网络源数据
docker network rm XXX网络名字 # 删除指定网络

能干嘛

  • 容器间的互联和通信以及端口映射
  • 容器IP变动时候可以通过服务名直接网络通信而不是改ip

网络模式

总体介绍

Docker网络模式.png

说明:

  • 首先开启一个容器他会有ip
  • 例如
容器号容器IP地址
redis172.17.0.1
mysql172.17.0.2

但是,如果你把Mysql停le 然后新建一个rabbitmq镜像 它就变成了第二个,也就是ip变成了172.17.0.2 所以会出现 一个IP地址对应两个镜像的问题 这就是为什么Docker网络模式的出现

Bridge

Bridge模式.jpg

每个容器一个IP,称为 容器IP 然后通过虚拟的网卡与Docker0进行桥接

Host

Host模式.png

容器和宿主机共用一个IP ⚠️这种模式下,-p参数会无效,因为都用的是一个IP地址了,就不存在端口映射了⚠️

none

禁用网络功能,只有lo地址

contaniner

container模式.png

容器借用另一个容器的IP地址

  • 指令Example
docker run -d -p 8081:8080 --network container:容器1 --name 容器2 镜像名:TAG

注意:关闭容器1,会导致容器2也没IP了。

自定义 (别用,大概)

link

在默认情况下,

# 在容器1内ping容器2
ping 172.1.0.1 # ping ip可ping通
ping 容器2   # ping 容器名ping不通

但是如果添加一个自定义网络,然后再--network中指定自定义网络 就可以在容器中通过容器名进行ping通