Packer のインストール,Docker イメージファイルの作成(Ubuntu 上)
Packer は,構成を記述したテンプレートファイルからマシンイメージやコンテナイメージを自動生成する機能を持ったソフトウェアである.Docker イメージファイルの作成にも使用できる.
Packer の公式ページ: https://www.packer.io
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは、パッケージ情報を最新の状態に保ち、インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
Packer のインストール
- Packer のインストールのウェブページを開く
- Linux, Ubuntu/Debianを選び,表示を確認する.
- 表示の通り,端末で,次のコマンドを実行する.
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 - バージョンの確認
packer version
Docker イメージファイルの作成
前準備として,Docker をインストールしておくこと
Packer のテンプレートは HCL2 形式(拡張子
.pkr.hcl)で記述する.従来の JSON 形式のテンプレートは Packer の公式ドキュメントで「legacy JSON templates」と位置づけられており,新規の記述には HCL2 形式を用いる.
- 次を,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"] }
- プラグインのインストールとビルドを行う.
端末で,次のコマンドを実行する.
packer initはテンプレートで指定したプラグインのインストール,packer buildはイメージファイルの作成である.packer init ubuntu2404.pkr.hcl packer build ubuntu2404.pkr.hclDocker のコマンドの実行に権限が必要な場合がある.その場合は,sudo usermod -aG docker $USERを実行し,いったんログアウトしてログインし直す.
- Docker にインポートし確認する.
端末で,次のコマンドを実行する.
docker import packer-ubuntu-2404-docker.tar myubuntu:24.04 docker images docker run -it --rm myubuntu:24.04 /bin/bash* コンテナ内のシェルが起動すれば,イメージファイルの作成とインポートの確認は完了である.シェルを終了するには
exitを実行する.