Docker Compose で NetBox を起動する
NetBox を手軽に Docker で起動する手順をメモしておきます。
検証環境
対象 |
バージョン |
Ubuntu |
22.04.3LTS |
NetBox |
3.7-2.8.0 |
事前準備
netbox-docker から Clone します。 NetBox の GitHub は現時点で release
ブランチと develop
ブランチのふたつで運用しているようです (release
ブランチがデフォルト設定)。 デフォルト設定になっていますが念の為、明示的に release
ブランチを指定して Clonse します。
| git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
|
Clonse したファイルには docker-compose.yml が含まれていますので、すぐに Docker Compose でコンテナを開始することが出来ます。 ですが、この docker-compose.yml`` には
port` の定義が無い為、外部ネットワークからアクセスすることが出来ません。
Compose 設定をファイルとプロジェクト間で共有 に記載されていますが、Docker Compose には「docker-compose.override.yml
を用意して、docker-compose.yml
を部分的に上書きする」機能があります。 NetBox の GitHub には上書き用のサンプルである docker-compose.override.yml.example も用意されているので、これを docker-compose.override.yml
に上書きしても良いのですが、今回は公式サイトの手順に習って「新規に docker-compose.orverride.yml
を作成」することにします。 以下を実行します。
| tee docker-compose.override.yml <<EOF
version: '3.4'
services:
netbox:
ports:
- 8000:8080
EOF
|
あとは docker compose pull
してコンテナイメージを取得し、事前準備は完了です。
コンテナを起動する
docker compose でコンテナを起動します。
私の環境では netbox-docker-netbox-1
でエラーになってしまいました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | # docker compose up -d
[+] Running 4/13
⠧ Network netbox-docker_default Created 91.8s
⠦ Volume "netbox-docker_netbox-media-files" Created 91.6s
⠦ Volume "netbox-docker_netbox-reports-files" Created 91.6s
⠦ Volume "netbox-docker_netbox-scripts-files" Created 91.6s
⠦ Volume "netbox-docker_netbox-postgres-data" Created 91.6s
⠦ Volume "netbox-docker_netbox-redis-data" Created 91.6s
⠦ Volume "netbox-docker_netbox-redis-cache-data" Created 91.6s
✔ Container netbox-docker-redis-cache-1 Started 0.8s
✔ Container netbox-docker-postgres-1 Started 0.8s
✔ Container netbox-docker-redis-1 Started 0.7s
✘ Container netbox-docker-netbox-1 Error 91.5s
⠴ Container netbox-docker-netbox-housekeeping-1 Created 91.5s
⠴ Container netbox-docker-netbox-worker-1 Created 91.5s
dependency failed to start: container netbox-docker-netbox-1 is unhealthy
|
この状態で docker compose ps -a
を確認すると以下のように netbox-housekeeping
と netbox-worker
が Up していません。 詳細ログは docker compose logs -f netbox
で確認出来ます。
| # docker compose ps -a
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
netbox-docker-netbox-1 docker.io/netboxcommunity/netbox:v3.7-2.8.0 "/usr/bin/tini -- /o…" netbox 14 minutes ago Up 14 minutes (healthy) 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp
netbox-docker-netbox-housekeeping-1 docker.io/netboxcommunity/netbox:v3.7-2.8.0 "/usr/bin/tini -- /o…" netbox-housekeeping 14 minutes ago Created
netbox-docker-netbox-worker-1 docker.io/netboxcommunity/netbox:v3.7-2.8.0 "/usr/bin/tini -- /o…" netbox-worker 14 minutes ago Created
netbox-docker-postgres-1 docker.io/postgres:16-alpine "docker-entrypoint.s…" postgres 14 minutes ago Up 14 minutes 5432/tcp
netbox-docker-redis-1 docker.io/redis:7-alpine "docker-entrypoint.s…" redis 14 minutes ago Up 14 minutes 6379/tcp
netbox-docker-redis-cache-1 docker.io/redis:7-alpine "docker-entrypoint.s…" redis-cache 14 minutes ago Up 14 minutes 6379/tcp
|
今回、利用している docker-compose.yml
のファイル内では netbox
、netbox-worker
、netbox-housekeeping
に対して healthcheck
が設定されています。 ホストのスペックや負荷状態に依存すると思われますが、コンテナの起動に時間がかかってしまい、Health Check に時間がかかると Error になると思われます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | services:
netbox: &netbox
(snip)
healthcheck:
start_period: 60s
timeout: 3s
interval: 15s
test: "curl -f http://localhost:8080/api/ || exit 1"
(snip)
netbox-worker:
(snip)
healthcheck:
start_period: 20s
timeout: 3s
interval: 15s
test: "ps -aux | grep -v grep | grep -q rqworker || exit 1"
netbox-housekeeping:
(snip)
healthcheck:
start_period: 20s
timeout: 3s
interval: 15s
test: "ps -aux | grep -v grep | grep -q housekeeping || exit 1"
|
こういった場合は再度、docker compose up
し直して、未起動のコンテナを開始することで解決します。
実行例は以下の通りです。
| # docker compose up -d
[+] Running 6/6
✔ Container netbox-docker-redis-1 Running 0.0s
✔ Container netbox-docker-postgres-1 Running 0.0s
✔ Container netbox-docker-redis-cache-1 Running 0.0s
✔ Container netbox-docker-netbox-1 Healthy 0.0s
✔ Container netbox-docker-netbox-housekeeping-1 Started 0.5s
✔ Container netbox-docker-netbox-worker-1 Started
|
スーパーユーザを作成する
NetBox の初期状態ではスーパーユーザが存在しない為、CLI から作成しておく必要があります。 以下を実行します。
| docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
|
実行例は以下の通りです。 以下ではユーザ名は admin
、パスワードは password
でスーパーユーザを作成しています。
| # docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
🧬 loaded config '/etc/netbox/config/configuration.py'
🧬 loaded config '/etc/netbox/config/extra.py'
🧬 loaded config '/etc/netbox/config/logging.py'
🧬 loaded config '/etc/netbox/config/plugins.py'
Username (leave blank to use 'unit'): admin
Email address: admin@example.com
Password: password
Password (again): password
Superuser created successfully.
|
NetBox にアクセスする
Web ブラウザで http://ADDRESS:8000/
へアクセスすると NetBox の管理画面が表示されます。 この状態では「いずれのユーザでもログインしていない、未ログイン状態」です。 画面右上の Log In
をクリックします。
これまでの手順で作成したスーパーユーザのログイン情報 (今回の手順であればユーザ名は admin
、パスワードは password
) を入力します。
スーパーユーザである admin
としてログイン出来ました。