最近在青训营学的内容曾经接触过,就学了其他的内容
Docker网络
在启动Docker容器时
可以看到有一个--net参数,一般是不指定的,但是一指定,就不一般
这个net参数实际上就是Docker网络的体现
常用基本命令
最基本的指令 - 发现Docker网络的存在
docker network ls # 查看所有网络
docker network inspect XXX网络名字 # 查看网络源数据
docker network rm XXX网络名字 # 删除指定网络
能干嘛
- 容器间的互联和通信以及端口映射
- 容器IP变动时候可以通过服务名直接网络通信而不是改ip
网络模式
总体介绍
说明:
- 首先开启一个容器他会有ip
- 例如
| 容器号 | 容器IP地址 |
|---|---|
| redis | 172.17.0.1 |
| mysql | 172.17.0.2 |
但是,如果你把Mysql停le 然后新建一个rabbitmq镜像 它就变成了第二个,也就是ip变成了172.17.0.2 所以会出现 一个IP地址对应两个镜像的问题 这就是为什么Docker网络模式的出现
Bridge
每个容器一个IP,称为 容器IP 然后通过虚拟的网卡与Docker0进行桥接
Host
容器和宿主机共用一个IP ⚠️这种模式下,-p参数会无效,因为都用的是一个IP地址了,就不存在端口映射了⚠️
none
禁用网络功能,只有lo地址
contaniner
容器借用另一个容器的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通