DockerでOpenWrtのオフラインイメージをインポートし1Panelで使用する方法

OpenWrt Dockerイメージのインポート手順

1. 一時ディレクトリの作成とファイルの解凍

# 一時ディレクトリの作成
mkdir -p /tmp/openwrt-workspace

# OpenWrtルートファイルシステムを解凍
tar -xzf /path/to/openwrt-rootfs.tar.gz -C /tmp/openwrt-workspace

2. Dockerイメージとしてパッケージ化

# 解凍ディレクトリに移動
cd /tmp/openwrt-workspace

# ファイルを圧縮
tar -czf openwrt-container.tar.gz *

3. Dockerへのインポートと確認

# Dockerイメージとしてインポート
docker import openwrt-container.tar.gz my-openwrt:latest

# イメージの確認
docker images | grep my-openwrt

問題の根本原因分析

以下の2つの主要問題が特定されました:

  1. Dockerイメージビルドの異常:インポートされたイメージサイズが0Bであることから、有効なファイルが含まれていないことが示唆されます。
  2. Nginx起動パラメータの誤り:ログに表示されるnginx: invalid option: "off:"は、-gパラメータで誤った記号が使用されていることを証明しています(正しくはoff;)。

解決策

1. OpenWrtイメージビルドプロセスの修正

現在のイメージビルドが失敗している原因は解凍パスの誤りとパッケージングコマンドの不完全さです。以下の手順で修正してください:

# 1. 一時ディレクトリの作成とファイル解凍
mkdir -p /tmp/openwrt-temp
tar -xzf /path/to/openwrt-rootfs.tar.gz -C /tmp/openwrt-temp

# 2. Dockerイメージとしてパッケージ化
cd /tmp/openwrt-temp
tar -czf openwrt-docker.tar.gz *

# 3. Dockerへのインポートと確認
docker import openwrt-docker.tar.gz my-openwrt:custom
docker images | grep my-openwrt

2. 適切なコンテナ起動コマンドの設定

1Panelでコンテナを作成する際の設定:

  • イメージ名: my-openwrt:custom
  • コマンド: /sbin/init
  • ネットワークモード: Host
  • 特権モード: 有効にする

3. Nginxパラメータ形式の修正

コンテナでNginxを実行する場合、Commandフィールドを以下のように修正してください:

nginx -g 'daemon off;'  # 英文セミコロンを使用

4. イメージの完全性の検証

一時コンテナを使用して/sbin/initの存在を確認:

docker run -it --rm my-openwrt:custom ls -l /sbin/init
  • ✅ ファイルパスが出力される → イメージ正常
  • ❌ "No such file"が出力される → 公式イメージopenwrtorg/rootfs:x86_64を使用

主要設定のまとめ

設定項目 正しい値 誤った例
解凍パス /path/to/correct/location /wrong/path/location
パッケージングコマンド tar -czf tar -cf
Command nginx -g 'daemon off;' または /sbin/init off: または 空白
特権モード 有効 無効

操作の検証

1. イメージサイズの正常確認

docker images | grep my-openwrt  # 予想サイズ > 100MB

2. コンテナ起動と状態確認

docker run -d --name my-openwrt --privileged --network host my-openwrt:custom /sbin/init
docker ps | grep my-openwrt  # 状態が"Up"であることを確認

追加の推奨事項

  1. 公式イメージの優先使用:
    docker pull openwrtorg/rootfs:x86_64
  2. 無効なイメージのクリーンアップ:
    docker rmi my-openwrt:custom  # 0Bイメージを削除

問題が解決しない場合は、以下の情報を提供してください:

  • docker inspect my-openwrt:customの出力
  • 1Panelコンテナ設定画面のスクリーンショット

タグ: Docker OpenWrt 1Panel コンテナ仮想化 ネットワーク機器

5月20日 22:19 投稿