Packer のインストール,Docker イメージファイルの作成(Ubuntu 上)

Packer は,構成を記述したテンプレートファイルからマシンイメージやコンテナイメージを自動生成する機能を持ったソフトウェアである.Docker イメージファイルの作成にも使用できる.

Packer の公式ページ: https://www.packer.io

前準備

Ubuntu のシステム更新

Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。

Ubuntu のインストールはこちらの別ページで説明する。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

Packer のインストール

  1. Packer のインストールのウェブページを開く

    https://developer.hashicorp.com/packer/install

  2. Linux, Ubuntu/Debianを選び,表示を確認する.
  3. 表示の通り,端末で,次のコマンドを実行する.

    1行目は HashiCorp の公開鍵(GPG キー)の登録,2行目は APT リポジトリの登録,3行目はパッケージリストの更新と Packer のインストールである.

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    
    sudo apt update && sudo apt install packer
    
  4. バージョンの確認
    packer version
    

Docker イメージファイルの作成

前準備として,Docker をインストールしておくこと

Packer のテンプレートは HCL2 形式(拡張子 .pkr.hcl)で記述する.従来の JSON 形式のテンプレートは Packer の公式ドキュメントで「legacy JSON templates」と位置づけられており,新規の記述には HCL2 形式を用いる.
  1. 次を,ubuntu2404.pkr.hcl のようなファイル名で保存

    ファイル名は何でもよいが,分かりやすい名前がよい.拡張子は「.pkr.hcl」にする.

    required_plugins は使用するプラグイン(ここでは Docker プラグイン)の指定,source はもとになるイメージと出力先の指定,build は実行するビルドの指定である.

    packer {
      required_plugins {
        docker = {
          version = ">= 1.0.0"
          source  = "github.com/hashicorp/docker"
        }
      }
    }
    
    source "docker" "ubuntu" {
      image       = "ubuntu:24.04"
      export_path = "packer-ubuntu-2404-docker.tar"
    }
    
    build {
      sources = ["source.docker.ubuntu"]
    }
    
  2. プラグインのインストールとビルドを行う.

    端末で,次のコマンドを実行する.packer init はテンプレートで指定したプラグインのインストール,packer build はイメージファイルの作成である.

    packer init ubuntu2404.pkr.hcl
    packer build ubuntu2404.pkr.hcl
    
    Docker のコマンドの実行に権限が必要な場合がある.その場合は,sudo usermod -aG docker $USER を実行し,いったんログアウトしてログインし直す.
  3. Docker にインポートし確認する.

    端末で,次のコマンドを実行する.

    docker import packer-ubuntu-2404-docker.tar myubuntu:24.04
    docker images
    docker run -it --rm myubuntu:24.04 /bin/bash
    

    * コンテナ内のシェルが起動すれば,イメージファイルの作成とインポートの確認は完了である.シェルを終了するには exit を実行する.