news 2026/5/3 1:46:00

从零到一:手把手教你用Docker在Ubuntu 22.04上部署Open5GS 5G核心网

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零到一:手把手教你用Docker在Ubuntu 22.04上部署Open5GS 5G核心网

从零到一:手把手教你用Docker在Ubuntu 22.04上部署Open5GS 5G核心网

1. 环境准备与基础配置

在开始部署Open5GS之前,我们需要确保基础环境满足要求。Ubuntu 22.04 LTS作为长期支持版本,提供了稳定的运行基础。以下是详细的准备工作:

硬件要求

  • 至少4核CPU(推荐8核以上)
  • 16GB内存(32GB更佳)
  • 100GB可用存储空间
  • 支持虚拟化的x86_64架构

系统配置

# 更新系统软件包 sudo apt update && sudo apt upgrade -y # 安装基础工具 sudo apt install -y git curl wget net-tools # 检查内核版本(需5.15或更高) uname -r

提示:如果使用云服务器,请确保安全组开放以下端口范围:3000-4000(WebUI)、2123(GTP-U)、38412(S1AP)、2152(NGAP)

网络配置建议

  • 为Docker创建独立网桥(避免与主机网络冲突)
  • 配置静态IP或确保DHCP租约稳定
  • 禁用UFW防火墙或精确配置规则

2. Docker环境搭建与优化

现代容器化部署离不开Docker的支撑,以下是针对5G核心网场景的特别配置:

安装Docker CE

# 移除旧版本 sudo apt remove docker docker-engine docker.io containerd runc # 设置仓库 sudo apt install -y ca-certificates curl gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

性能调优参数

# 创建或修改daemon.json sudo tee /etc/docker/daemon.json <<EOF { "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 1048576, "Soft": 1048576 } }, "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } } EOF # 应用配置并重启 sudo systemctl restart docker

验证安装

docker version docker run hello-world

3. Open5GS容器化部署实战

Open5GS官方提供了Docker支持,但生产环境需要额外配置:

克隆仓库与准备配置

git clone --recursive https://github.com/open5gs/open5gs cd open5gs/docker # 修改基础配置 cp .env.sample .env nano .env # 调整PLMN、IP等参数

核心组件对比表

组件功能容器名称暴露端口
AMF接入和移动性管理open5gs-amf38412, 7777
SMF会话管理open5gs-smf8805, 7777
UPF用户面功能open5gs-upf2152, 8805
NRF网络功能仓库open5gs-nrf7777

启动核心网服务

# 完整部署(开发模式) docker-compose up -d # 仅启动SA核心网 docker-compose -f sa.yaml up -d

验证服务状态

# 查看容器日志 docker logs -f open5gs-amf # 检查网络功能注册 curl http://localhost:7777/nnrf-nfm/v1/nf-instances

4. 网络配置与连通性测试

正确的网络配置是5G核心网正常工作的关键:

Docker网络拓扑

# 创建专属网络 docker network create --subnet=10.0.100.0/24 open5gs # 查看网络详情 docker network inspect open5gs

关键配置示例(AMF)

# configs/amf.yaml 关键片段 amf: sbi: - addr: 10.0.100.10 port: 7777 ngap: - addr: 10.0.100.10 guami: - plmn_id: mcc: 901 mnc: 70 amf_id: region: 2 set: 1

连通性测试方法

  1. Ping测试
docker exec -it open5gs-amf ping 10.0.100.20 # 测试SMF连通性
  1. API测试
# 使用curl测试NRF接口 curl -X GET "http://10.0.100.30:7777/nnrf-nfm/v1/nf-instances" -H "accept: application/json"
  1. 抓包分析
# 在UPF容器中抓取GTP-U流量 docker exec -it open5gs-upf tcpdump -i any -nn port 2152 -w gtpu.pcap

5. 常见问题排查与优化

部署过程中可能遇到的典型问题及解决方案:

端口冲突处理

# 查找占用端口 sudo netstat -tulnp | grep 7777 # 解决方案: # 1. 修改docker-compose端口映射 # 2. 调整configs/*.yaml中的端口配置

性能优化建议

  • 为UPF配置大页内存:
sudo sysctl vm.nr_hugepages=1024
  • 启用CPU亲和性:
# 在docker-compose中为关键NF添加 cpuset: "0-3"

日志分析技巧

# 实时监控AMF日志 docker logs -f open5gs-amf | grep -E "ERROR|WARN" # 使用jq解析SBI消息 docker exec open5gs-nrf cat /var/log/open5gs/nrf.log | jq '.message'

配置热更新方法

# 修改配置后重启单个NF docker-compose restart open5gs-amf # 验证配置生效 docker exec open5gs-amf ps aux | grep yaml

6. 进阶部署与扩展

满足基本部署后,可进一步优化架构:

高可用方案

# docker-compose-ha.yaml片段 services: amf: image: open5gs-amf deploy: replicas: 3 update_config: parallelism: 1 delay: 10s healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7777/status"]

监控系统集成

# 添加Prometheus监控 docker-compose -f docker-compose.yml -f monitoring.yml up -d

生产环境建议

  • 使用单独的物理网卡处理用户面流量
  • 为控制面和用户面配置独立Docker网络
  • 启用TLS加密SBI接口通信
  • 定期备份关键配置和数据库

实际部署中遇到过UPF性能瓶颈问题,通过将GTP-U流量卸载到专用网卡并启用DPDK加速,吞吐量从5Gbps提升到40Gbps。关键配置如下:

# UPF启动参数优化 docker run --privileged --ulimit memlock=-1 -v /dev/hugepages:/dev/hugepages open5gs-upf
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 1:44:27

深度解析Qwerty Learner技术架构:构建高效单词记忆与打字训练系统

深度解析Qwerty Learner技术架构&#xff1a;构建高效单词记忆与打字训练系统 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: …

作者头像 李华
网站建设 2026/5/3 1:42:26

大学生们为何上课不抬头

首先&#xff0c;大学生们上课不抬头不代表他们没有在听课&#xff0c;这是我每学期期末考试阅卷时的感受。总有一些喜欢抬头&#xff0c;积极互动&#xff0c;甚至喜欢课下和老师交流的学生&#xff0c;这些人我一般都会有记录&#xff0c;有印象。但是期末考试或者批阅作业的…

作者头像 李华
网站建设 2026/5/3 1:38:25

【Python电商实时风控决策代码】:20年专家亲授3大核心模块+5个高危场景实战代码(附GitHub可运行源码)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Python电商实时风控决策代码概览 在高并发电商场景中&#xff0c;实时风控系统需在毫秒级完成交易欺诈识别、刷单检测与异常行为拦截。本章展示一个轻量但生产就绪的Python风控决策核心模块&#xff0…

作者头像 李华
网站建设 2026/5/3 1:35:37

创业团队如何利用Taotoken管理多个项目的API Key与访问权限

创业团队如何利用Taotoken管理多个项目的API Key与访问权限 1. 多项目环境下的API Key管理挑战 小型创业团队在同时推进多个AI应用原型开发时&#xff0c;通常会面临模型API调用的管理难题。不同项目可能使用不同的模型供应商&#xff0c;团队成员权限需要差异化控制&#xf…

作者头像 李华
网站建设 2026/5/3 1:33:06

在Unity里用C#实现滚球算法:为游戏地图生成更自然的凹包边界

在Unity中实现滚球算法&#xff1a;为游戏地图打造动态凹包边界 想象一下&#xff0c;你正在开发一款开放世界游戏&#xff0c;地图上散布着数百个资源点和地形特征。传统的凸包算法生成的边界过于规整&#xff0c;无法准确反映实际地形轮廓。而滚球算法提供的凹包解决方案&…

作者头像 李华
网站建设 2026/5/3 1:29:24

Monica 部署指南:自建个人 CRM,记录人际关系的私人助手

Monica 部署指南:自建个人 CRM,记录人际关系的私人助手 Monica 是一个开源的个人 CRM(客户关系管理)工具,但它的目标不是商业客户,而是你生活里真正重要的人——朋友、家人、同事。它帮你记录每个人的生日、联系方式、共同话题、上次见面说了什么,让你成为一个更有心的…

作者头像 李华