Docker 网络模式和端口映射
Docker 网络模式
1. bridge 网络(默认模式)
- 默认的网络模式
- Docker 安装时会创建一个名为
docker0
的 Linux bridge - 容器间可以通过这个桥接网络通信
- 使用方法:
docker run --network bridge ...
2. host 网络
- 容器直接使用宿主机的网络栈
- 性能较好,但缺少隔离性
- 使用方法:
docker run --network host ...
3. none 网络
- 容器没有网络接口,完全隔离
- 适用于不需要网络的场景
- 使用方法:
docker run --network none ...
4. overlay 网络
- 用于 Docker Swarm 中的跨主机容器通信
- 创建方法:
docker network create -d overlay my_overlay_network
5. macvlan 网络
- 允许为容器分配 MAC 地址,使其像物理设备一样出现在网络上
- 创建方法:
docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=eth0 my_macvlan_network
自定义桥接网络
创建自定义桥接网络:
docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 my_custom_bridge
容器间通信
- 同一网络中的容器可以直接通信
- 不同网络中的容器默认不能通信
- 可以将容器连接到多个网络:
docker network connect my_custom_bridge container_name
Docker 端口映射
端口映射允许外部网络访问容器内的服务。
端口映射语法
docker run -p [<host_ip>:]<host_port>:<container_port> ...
示例:
- 映射特定端口:
docker run -p 8080:80 nginx
- 映射到随机端口:
docker run -p 80 nginx
- 指定 IP 和端口:
docker run -p 127.0.0.1:8080:80 nginx
查看端口映射
docker port container_name
网络故障排查
- 检查网络列表:
docker network ls
- 检查网络详情:
docker network inspect network_name
- 容器网络信息:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
- 使用
docker exec
进入容器进行网络测试
版权声明:
作者:MR.k
链接:https://bigeng.sbs/2024/09/docker-%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%bc%8f%e5%92%8c%e7%ab%af%e5%8f%a3%e6%98%a0%e5%b0%84/
文章版权归作者所有,未经允许请勿转载。
THE END