0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VirtualBox + Vagrant で Windows 上に Ubuntu 22.04 サーバーを作成

Last updated at Posted at 2025-04-13

忘れないようにメモ

0. 動機

Vagrant の存在を最近知って試したくなった。
WSL を使っていたが実はこっちのほがいいのではと感じた。

1. 構成


ホストOS ゲストOS
Windows 11 (64bit) Ubuntu 22.04

コマンド入力は Windows11 に標準でインストールされている Windows Terminal(ターミナル)で
PowerShellを使用。

2. 流れ

  1. Windows11 に Virtualbox インストール
  2. Windows11 に Vagrant インストール
  3. Vagrantfile で box設定
  4. Ubuntu 22.04起動

3. Virtualbox インストール

以下からVirtualboxをダウンロード

Oracle Virtualbox

もろもろ同意など全部YESでインストール

4. Vagrant インストール

以下のURLにアクセス

Vagrant

Downloadをクリック

Vagrantインストール

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?