Docker Bridge网络模式配置详解:从基础概念到实战应用
创作时间:
作者:
@小白创作中心
Docker Bridge网络模式配置详解:从基础概念到实战应用
引用
CSDN
1.
https://m.blog.csdn.net/qq_36833673/article/details/145821813
在Docker容器化部署中,网络配置是一个关键环节。本文将详细介绍Docker的bridge网络模式,包括其工作原理、常用网络命令、端口映射配置以及实际应用中的注意事项。
一、Bridge模式概述
Bridge模式是Docker默认的网络模式。在这种模式下,Docker守护进程会创建一个名为docker0
的虚拟网桥,容器连接到这个网桥上并获得独立的IP地址。容器之间以及容器与外部网络之间的通信都通过docker0
网桥进行,需要进行网络地址转换(NAT)。
这种模式的主要优点是提供了网络隔离,每个容器都有独立的IP地址,并且桥接网络内部有DNS解析服务,可以将容器名解析为对应的IP地址,实现通过容器名访问。
二、Docker网络命令
以下是常用的Docker网络管理命令:
- 查看所有网络:
docker network ls
- 创建网络:
docker network create my_network
- 删除网络:
docker network rm my_network
- 查看网络详细信息:
docker network inspect my_network
- 将容器连接到网络:
docker network connect my_network my_container
- 将容器与某个网络的连接断开:
docker network disconnect my_network my_container
- 删除未使用的网络:
docker network prune
三、Nginx端口映射配置
在docker-compose.yml
文件中进行端口映射配置,使用自定义的my_network
网络:
services:
nginx:
image: nginx:latest
container_name: nginx
environment:
TZ: Asia/Shanghai
ports:
- "80:80"
- "443:443"
- "8090:8090"
volumes:
- /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /usr/local/docker:/usr/share/nginx/html
privileged: true
networks:
- my_network
networks:
my_network:
external: true
driver: bridge
ports
配置用于将容器的端口映射到宿主机端口,格式为宿主机端口:容器端口
。如果没有进行端口映射,容器内的服务只能在Docker网络内部访问,外部网络无法访问。
四、后端服务端口配置
Dockerfile配置
在Dockerfile中配置端口:
FROM openjdk:17
RUN mkdir -p /ruoyi/logs
WORKDIR /ruoyi
ENV SERVER_PORT=9016 \
LC_ALL=C.UTF-8 \
JAVA_OPTS=""
EXPOSE 9016
ADD ruoyi-admin.jar ./app.jar
ENTRYPOINT ["java", \
"-Dserver.port=${SERVER_PORT}", \
"-jar", "app.jar"]
EXPOSE
指令主要用于指导镜像使用者该容器监听的端口,实际的端口映射需要在运行时通过-p
参数或docker-compose.yml
中的ports
配置实现。
docker-compose.yml配置
services:
ruoyi-admin:
image: ruoyi-admin:v1.0
container_name: ruoyi-admin
ports:
- "9016:9016"
environment:
- SERVER_PORT=9016
- TZ=Asia/Shanghai
restart: always
networks:
- my_network
networks:
my_network:
external: true
Nginx配置
在Nginx配置文件中,需要使用容器的IP地址或容器名称进行反向代理:
server {
listen 8090;
server_name localhost;
charset utf-8;
location / {
proxy_pass http://172.24.0.2:9016;
# 或者使用容器名称
# proxy_pass http://ruoyi-admin:9016;
index index.html index.htm;
}
}
注意:在自定义Docker网络中,每个容器的localhost
都指向容器自身的网络接口。因此,当需要容器间通信时,应使用容器的IP地址或容器名称,而不是localhost
。
五、测试
启动Nginx和Java项目后,可以通过访问Nginx监听的端口或后端服务映射的端口来验证配置是否成功。
六、总结
- 开发环境建议使用host网络模式,因为它更简单,不需要管理端口映射。
- 测试和生产环境建议使用自定义网络模式,以实现更好的网络隔离。
- 使用自定义网络时,需要特别注意端口映射和容器间的通信方式。
network_mode
和networks
都是Docker网络配置相关,但功能有所不同:network_mode
用于指定网络模式,而networks
用于配置自定义网络。
热门推荐
八大演讲艺术手法,让你张嘴就来
电磁阀与继电器有什么区别
学习中如何提高专注度
夏华:民族手工艺为媒 让世界看见中国美
战争与荣耀:《伊利亚特》中的英雄主义探索
一夜牛转熊?利空不断,加密市场接连下跌,比特币看跌至7万美元
如何确定有效的理财方法?这个方法怎样实现财务目标?
如何在 Android 上逐步使用手写功能
威斯特伐利亚和约的意义是什么?标志着什么?
河蚌肉毒性有多强?专家解析食用风险与安全指南
湿疹中医外治药方
抑郁症的认知障碍怎么治疗
和父母一起旅游的重要意义
黄芪的功效与禁忌:从选购到饮用全攻略
“以竹代塑”缘何引领绿色生活新风尚?
如何编写高效的接口文档内容?
中国信通院发布《边缘计算产业发展研究报告(2024年)》
“爆火”的万寿宫藏着哪些历史记忆
冬季护肤全攻略:七大步骤让肌肤保持水润
上海将多措并举为低空经济产业发展注入源源不断的活力
怎么检查手机摄像头有没有被监视?超简单的五个小技巧!
评职称的哪项科研成果加分最多?最后一条竟是性价比最高的!
离子发动机:星际远征的重要动力
新手买车后怎么练车更有效?这样的练车方法有哪些注意事项?
社交恐惧症的心理干预方法
全国爱国卫生月:防控儿童肥胖,从正确体重管理做起!
柑橘多酚膳食纤维:真的能帮助减肥吗?
什么样的痣需要外科干预
红茶的性质:性还是寒凉?探讨其成分和功效差异
红茶的性质解析(红茶是热性还是凉性?探究茶叶的温度属性)