562
社区成员
发帖
与我相关
我的任务
分享1. 核心作用
Docker 网络用于:容器和容器互通、容器和宿主机互通、容器对外暴露端口上网。
2. Docker 四种默认网络模式
bridge(默认网桥)
安装 Docker 自动创建 docker0 网桥
同一宿主机上所有容器默认连 bridge
同网桥容器可互相通信,隔离外部
2.host 模式
容器直接共用宿主机网卡、IP、端口
没有端口映射,容器占用宿主机端口
性能最好,适合高性能服务
3.none 模式
禁用所有网络,容器无网卡、无IP
完全隔离,只能本地内部程序运行
4.overlay 模式
跨多台宿主机容器互通(集群/ swarm 用)
多服务器Docker容器互联专用
# 查看所有Docker网络 docker network ls
# 查看网络详细信息(子网、网关、连接的容器) docker network inspect 网络名/网络ID
# 查看容器用的网络 docker inspect 容器ID | grep NetworkMode
1. 创建自定义网络
# 创建自定义bridge网络 docker network create 自定义网络名
# 指定子网、网关创建(常用) docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.1 my-net
2. 运行容器并指定加入自定义网络
# 容器启动时加入指定网络 docker run -d --name nginx1 --network my-net nginx
# 指定容器固定IP docker run -d --name mysql8 --network my-net --ip 172.20.0.10 mysql:8.0
3. 将已存在容器加入某个网络
docker network connect 网络名 容器名/容器ID
4. 把容器从网络断开
docker network disconnect 网络名 容器名/容器ID
5. 删除自定义网络
# 删除单个网络 docker network rm 网络名
# 清理所有未使用的网络 docker network prune
1. 默认 bridge 模式(不指定网络默认就是)
docker run -d --name test1 nginx
2. host 网络模式
docker run -d --name test2 --network host nginx
注意:host 模式不能用 -p 端口映射
3. none 无网络模式
docker run -d --name test3 --network none nginx
格式
-p 宿主机端口:容器内部端口
# 基础端口映射 docker run -d -p 8080:80 nginx
# 绑定指定宿主机IP docker run -d -p 192.168.1.100:8080:80 nginx
# 随机分配宿主机端口 docker run -d -p 80 nginx
# 映射多个端口 docker run -d -p 8080:80 -p 3306:3306 nginx
查看容器端口映射
docker port 容器ID/容器名
同一自定义网络:容器可直接用容器名互相访问,不用记IP
默认docker0网桥:只能IP互通,不支持容器名解析
跨网络:默认隔离,必须手动端口映射或接入同一网络
docker network ls # 列出所有网络
docker network create my-net # 创建自定义网络
docker network inspect my-net # 查看网络详情
docker network connect 网络 容器 # 容器加入网络
docker network disconnect 网络 容器 # 容器退出网络
docker network rm my-net # 删除网络
docker network prune # 清理闲置网络
docker port 容器ID # 查看端口映射