はじめに
Vagrant で VirtualBox 上に、Ubuntu 24.04 ARM + Docker の環境構築を一撃で行います。
Apple Silicon(Mシリーズ Mac)では、x86版だと動かないので ARM 版のUbuntuを使います。
実行ファイルの構成はシンプルで、Vagrantfile
で VirtualBox 上に Ubuntu 24.04 ARM 環境を構築する。
Vagrantfile
の中で、Ubuntu の初期設定と Docker のセットアップを行う provision.sh
を呼び出して実行する流れです。
構成
.
├── Vagrantfile ※ VirtualBox 上に Ubuntu をプロビジョニング
└── provision.sh ※ Ubuntu の初期設定と Docker のインストール&セットアップ
実行環境
• Mac(Apple Silicon)
• VirtualBox : 7.1.6
• Vagrant : 2.4.3
手順
Vagrant と VirturalBox の導入手順は記載していませんので、ご了承ください。
今回紹介する Vagrant の資産は、Github に置いているので、git clone
して使ってもらっても構いません。
1. Vagrantfile
の作成
vagrant init
コマンドで作成してから、修正してもいいと思いますが
普通にファイル作成してもOKです。
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Ubuntu 24.04(ARM)
config.vm.box = "bento/ubuntu-24.04"
config.vm.hostname = "ubuntu-arm64"
config.vm.network "private_network", ip: "192.168.2.99"
# 仮想マシンのリソース設定
config.vm.provider "virtualbox" do |vb|
vb.name = "ubuntu-vm"
vb.memory = "2048"
vb.cpus = 2
end
# ホストとゲスト間のフォルダ同期設定(任意)
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
# プロビジョニングスクリプトの指定
config.vm.provision "shell", path: "provision.sh"
end
ホスト名やポートフォワード、IPとかは、環境や好みに応じてお好きに変更してください。
2. provision.sh
の作成
#!/bin/bash
# パッケージの更新
sudo apt-get update
sudo apt-get upgrade -y
# ロケールの変更
sudo apt install -y language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
# タイムゾーンの変更
sudo timedatectl set-timezone Asia/Tokyo
# Dockerセットアップ
sudo apt-get install -y curl
curl https://get.docker.com | sudo sh
# Docker サービスの起動と自動起動設定
sudo systemctl start docker
sudo systemctl enable docker
# vagrant ユーザーを docker グループに追加
sudo usermod -aG docker vagrant
root の権限設定や、FWのポート設定などを組み込みたい場合は、このスクリプト内に追記するといいと思います。
3. Ubuntu のプロビジョニング
Vagrantfile
があるディレクトリで、以下のコマンドを実行する。
vagrant up
初回は実行完了するまで数分かかるので、コーヒーブレイクすると丁度いいです。
4. 接続確認
Ubuntuのプロビジョニングが終わったら、以下のコマンドでSSH接続できます。
vangrant ssh
その他コマンド
VM の動作確認コマンド
vagrant status
VM の停止コマンド
vagrant halt
VM の削除コマンド
vagrant destroy
さいごに
今回は、Vagrant 使ってVMとして Ubuntu を構築して、Docker をインストールしました。
ただ Docker を使いたいだけなら、DockerDesktop でローカルに環境構築する方が手っ取り早くて楽です。
他には、provision.sh
ではなく Ansible とかで Ubuntu と Docker の設定をしてもいいと思います。