忘れないようにメモ
0. 動機
Vagrant の存在を最近知って試したくなった。
WSL を使っていたが実はこっちのほがいいのではと感じた。
1. 構成

ホストOS | ゲストOS |
---|---|
Windows 11 (64bit) | Ubuntu 22.04 |
コマンド入力は Windows11 に標準でインストールされている Windows Terminal
(ターミナル)で
PowerShellを使用。
2. 流れ
- Windows11 に Virtualbox インストール
- Windows11 に Vagrant インストール
- Vagrantfile で box設定
- Ubuntu 22.04起動
3. Virtualbox インストール
以下からVirtualboxをダウンロード
もろもろ同意など全部YESでインストール
4. Vagrant インストール
以下のURLにアクセス
Download
をクリック
Windows のAMD64
をダウンロード
もろもろ同意など全部YESでインストール
ターミナルで以下を入力してバージョンが確認できればOK
vagrant -v
5. Vagrantfile
Vagrant の作業ディレクトリを作成する。
適当にフォルダを作成。
mkdir $HOME/vms/ubuntu-2204
cd $HOME/vms/ubuntu-2024
以下を入力し、Vagrantfileを生成。
vagrant init ubuntu/jammy64
以下が作成した設定ファイル
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/jammy64" # Ubuntu 22.04 LTS
# SSHポートフォワード
config.vm.network "forwarded_port", guest: 22, host: 2222, host_ip: "127.0.0.1", id: "ssh"
# プライベートネットワーク
config.vm.network "private_network", ip: "192.168.33.10"
# フォルダ共有
config.vm.synced_folder "share", "/home/vagrant/share"
# VirtualBoxの設定
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.memory = "2048"
end
# Dockerインストールと初期設定
config.vm.provision "shell", inline: <<-SHELL
if [ ! -f /home/vagrant/.provisioned ]; then
apt-get update -y
curl -fsSL https://get.docker.com | sh
usermod -aG docker vagrant
touch /home/vagrant/.provisioned
fi
SHELL
end
設定ファイルの解説
SSHのポート番号の設定
guest: 22
がゲストOSのポートで、host: 2222
がホストOSのポート
ホストOSのポートが2222
なのは普段使っている22
と被らないようにするため。
config.vm.network "forwarded_port", guest: 22, host: 2222, host_ip: "127.0.0.1", id: "ssh"
プライベートネットワークの設定
プライベートアドレスを設定する。ゲストOSにSSH以外でアクセスする際にこのIPアドレスでアクセスできる。
今回は192.168.33.10
にした
config.vm.network "private_network", ip: "192.168.33.10"
フォルダの共有
mkdir ./share
左がホストOSのディレクトリで、右が対応するゲストOSのディレクトリ
config.vm.synced_folder "share", "/home/vagrant/share"
boxの設定
config.vm.provider "virtualbox" do |vb|
vb.gui = false # GUIなし
vb.memory = "2048" # メモリ
end
プロビジョニング
dockerをインストールしたかったので以下を追加。
config.vm.provision "shell", inline: <<-SHELL
if [ ! -f /home/vagrant/.provisioned ]; then
apt-get update -y
curl -fsSL https://get.docker.com | sh
usermod -aG docker vagrant
touch /home/vagrant/.provisioned
fi
SHELL
初回実行時は .provisioned ファイルが存在しないため、パッケージの更新やDockerのインストール、ユーザーのグループ追加などが行われ、その後 .provisioned ファイルを作成する。次回以降のプロビジョンではこのファイルが存在するため、if 文の中の処理はスキップされる。
6. Ubuntu 22.04 起動
5. Vagrantfile
で作成した作業ディレクトリ内で、単に以下を実行する。
vagrant up
起動後、停止したい場合は以下を実行する。
vagrant halt
ターミナル上での SSH 接続は以下を実行する。
vagrant ssh
SSH の設定は以下を実行することで確認できる(vscode のRemote - SSHで接続する際に使用した。)
vagrant ssh-config
補足
起動時にタイムアウトになったので以下をVagrantfile
に追加した。
config.vm.boot_timeout = 600