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

使用官方的docker镜像试用
地址:https://github.com/netbox-community/netbox-docker
启动服务
# 拉取仓库
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 主页。
创建管理员账号
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser然后就可以登录主页试用了!!
这个官方的docker-compose文件会把相关的数据存储到本地卷中,防止丢失数据:

对容器的一些操作
一、获取root权限
官方 NetBox Docker 镜像出于安全考虑,通常禁用了直接切换到 root 的功能,也没有配置 root 账户的密码。
想要root权限可以在docker compose exec命令中获取:
# 以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插件,里边有通用的安装步骤,但我们是在容器中,因此需要特殊处理相关的命令。

在容器中安装的核心问题是:
也可以参考官方文档,制作包含插件的镜像:
https://github.com/netbox-community/netbox-docker/wiki/Using-Netbox-Plugins
以下是本人使用挂载卷的方式安装插件的方法。
步骤:
1. 在docker-netbox路径(git 仓库跟路径)创建plugins路径
mkdir plugins
touch plugins/requirements-plugins.txt 2. 修改docker-compose.override.yml
添加如下相关内容,这里的配置会和docker-compose.yml 合并(merge)
services:
netbox:
environment:
PYTHONPATH: "/opt/netbox/netbox/plugins"
volumes:
- ./plugins:/opt/netbox/netbox/plugins:rw3. 重启容器
docker compose up -d netbox4. 以root权限进入容器
docker compose exec -it -u root netbox bash5. 使用uv pip 安装插件
注:虚拟环境是用uv管理的,因此需要用uv pip
注:升级软件需要加 --upgrade 参数
uv pip install --target /opt/netbox/netbox/plugins netbox-topology-views7. 把安装的插件及其版本记录下
echo "netbox-topology-views==4.5.0" >> plugins/requirements-plugins.txt8. 配置netbox
# 编辑 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中添加(和上边二选一,但要注意格式不同)
# 编辑 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. 创建插件的数据库,收集静态文件
# 在容器中执行
uv run --active manage.py migrate
uv run --active manage.py collectstatic10. 重启 netbox 容器
docker compose restart netbox升级NetBox
升级NetBox需要更新netbox-docker仓库,然后以新容器启动。
docker compose down
git checkout release &&
git pull -p origin release
docker compose pull
docker compose up -d但是要注意,PostgreSQL 主版本之间的更新,最好在旧 PostgreSQL 容器导出数据,启动一个干净的新数据库容器,再导入数据:
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总结
如果用于生产环境,那么对数据库和相关数据的备份尤其重要!