首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >NetBox 实战:基于 Docker 快速构建网络基础设施管理中心

NetBox 实战:基于 Docker 快速构建网络基础设施管理中心

作者头像
YaoQi
发布2026-04-21 10:16:54
发布2026-04-21 10:16:54
1940
举报

NetBox 是一个专为网络工程师和基础设施团队设计的开源基础设施资源建模(IPAM/DCIM)平台,用于集中管理IP地址(IPAM)、设备、机架、线缆、虚拟化等物理与虚拟基础设施,并提供强大的API支持自动化工具集成。

使用官方的docker镜像试用

地址:https://github.com/netbox-community/netbox-docker

启动服务

代码语言:javascript
复制
# 拉取仓库
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker

# 复制codker-compose覆盖文件,这个文件只是修改了端口映射到8000
cp docker-compose.override.yml.example docker-compose.override.yml

# 拉取所需镜像,主要是netbox、postgres、redis
docker compose pull

# 启动容器,第一次启动需要初始化数据库等,建议不加-d,在前台观察输出是否报错
docker compose up

整个应用程序将在几分钟后可用。

在网络浏览器中打开 URL http://x.x.x.x:8000/。 您应该会看到 NetBox 主页。

创建管理员账号

代码语言:javascript
复制
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser

然后就可以登录主页试用了!!

这个官方的docker-compose文件会把相关的数据存储到本地卷中,防止丢失数据:

对容器的一些操作

一、获取root权限

官方 NetBox Docker 镜像出于安全考虑,通常禁用了直接切换到 root 的功能,也没有配置 root 账户的密码。

想要root权限可以在docker compose exec命令中获取:

代码语言:javascript
复制
# 以root用户进入容器
docker compose exec -it --user root netbox /usr/bin/bash
# 直接以root权限运行命令
docker compose exec -u root netbox apt-get install -y vim

注:容器是以Ubuntu为基础,可以使用Ubuntu的相关命令。

二、在容器中安装插件

以安装拓扑视图插件为例。

打开我们的NetBox, 管理员--系统--插件,找到NetBox Topology Views插件,里边有通用的安装步骤,但我们是在容器中,因此需要特殊处理相关的命令。

在容器中安装的核心问题是:

  1. 容器中默认不是root用户,需要以root权限进入容器。
  2. 容器的虚拟环境是使用uv命令创建的,安装需要使用uv命令。
  3. 安装的插件能否安装到挂载的卷中,防止丢失。

也可以参考官方文档,制作包含插件的镜像:

https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins

以下是本人使用挂载卷的方式安装插件的方法。

步骤:

1. 在docker-netbox路径(git 仓库跟路径)创建plugins路径

代码语言:javascript
复制
mkdir plugins
touch plugins/requirements-plugins.txt 

2. 修改docker-compose.override.yml

添加如下相关内容,这里的配置会和docker-compose.yml 合并(merge)

代码语言:javascript
复制
services:
  netbox:
    environment:
      PYTHONPATH: "/opt/netbox/netbox/plugins"
    volumes:
      - ./plugins:/opt/netbox/netbox/plugins:rw

3. 重启容器

代码语言:javascript
复制
docker compose up -d netbox

4. 以root权限进入容器

代码语言:javascript
复制
docker compose exec -it -u root netbox bash

5. 使用uv pip 安装插件

注:虚拟环境是用uv管理的,因此需要用uv pip

注:升级软件需要加 --upgrade 参数

代码语言:javascript
复制
uv pip install --target /opt/netbox/netbox/plugins netbox-topology-views

7. 把安装的插件及其版本记录下

代码语言:javascript
复制
echo "netbox-topology-views==4.5.0" >> plugins/requirements-plugins.txt

8. 配置netbox

代码语言:javascript
复制
# 编辑 netbox-docker/configuration/extra.py
# 容器中挂载到 /etc/netbox/config/extra.py

## Enable installed plugins. Add the name of each plugin to the list.
from netbox.configuration.configuration import PLUGINS
PLUGINS.append('netbox_topology_views')

## Plugins configuration settings. These settings are used by various plugins that the user may have installed.
## Each key in the dictionary is the name of an installed plugin and its value is a dictionary of settings.
from netbox.configuration.configuration import PLUGINS_CONFIG
PLUGINS_CONFIG['netbox_topology_views'] = { 
    'static_image_directory': 'netbox_topology_views/img',
    'allow_coordinates_saving': True,
    'always_save_coordinates': True
}

补充:也可以也可以在plugins.py中添加(和上边二选一,但要注意格式不同)

代码语言:javascript
复制
# 编辑 netbox-docker/configuration/plugins.py
# 容器中挂载到 /etc/netbox/config/plugins.py
PLUGINS = ["netbox_topology_views"]
PLUGINS_CONFIG = {
  "netbox_topology_views": {
    'static_image_directory': 'netbox_topology_views/img',
    'allow_coordinates_saving': True,
    'always_save_coordinates': True
  }
}

9. 创建插件的数据库,收集静态文件

代码语言:javascript
复制
# 在容器中执行
uv run --active  manage.py migrate
uv run --active  manage.py collectstatic

10. 重启 netbox 容器

代码语言:javascript
复制
docker compose restart netbox

升级NetBox

升级NetBox需要更新netbox-docker仓库,然后以新容器启动。

代码语言:javascript
复制
docker compose down

git checkout release &&
git pull -p origin release

docker compose pull
docker compose up -d

但是要注意,PostgreSQL 主版本之间的更新,最好在旧 PostgreSQL 容器导出数据,启动一个干净的新数据库容器,再导入数据:

代码语言:javascript
复制
cd <path_to>/netbox-docker
# Stop all containers
docker compose down
# Only start the DB
docker compose up -d postgres
# Take a DB backup
docker compose exec -T postgres sh -c 'pg_dump -cU $POSTGRES_USER $POSTGRES_DB' | gzip > db_dump.sql.gz
# Stop the database
docker compose down
# Remove the database volume
# 
# !!!
# THIS STEP WILL REMOVE ALL DATA IN YOUR DATABASE
# !!!
# 注意这个卷的名字,必要时用docker volume ls 查看下
docker volume rm netbox-netbox-postgres-data
# Update NetBox Docker files and containers
git checkout release && git pull -p origin release
docker compose pull
# Restore the database
docker compose up -d postgres
gunzip -c db_dump.sql.gz | docker compose exec -T postgres sh -c 'psql -U $POSTGRES_USER $POSTGRES_DB'
# Start all other containers
docker compose up -d

总结

如果用于生产环境,那么对数据库和相关数据的备份尤其重要!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漫跑的小兔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档