VirtualBoxとVagrantでDocker環境構築

Docker環境を構築する際にいつも手順を忘れてしまいがちなので、忘備録的に記事にしたいと思います。
何故VirtualBOX+Vagrantなのかと言うと、WindowsとMac両方で同じ環境構築が出来るからです。Windowsだけであれば、WSL2とDockerDesktopを使った環境構築が比較的簡単かと思います。

環境

  • Windows11 Home
  • VS Code(エディター)
  • VirtualBox(仮想化ソフト:ホスト型)
  • Vagrant(仮想マシンをコマンドラインで操作する管理ツール)
  • Docker(仮想化ソフト:コンテナ型)

1.VS Codeのインストール

公式からインストーラーをダウンロードして、インストールして下さい。
https://code.visualstudio.com/

2.VirtualBoxとVagrantのインストール

公式からインストーラーをダウンロードして、インストールして下さい。

VirtulalBox
https://www.virtualbox.org/wiki/Downloads (​Windows hostsと言うところ)

Vagrant
https://developer.hashicorp.com/vagrant/downloads (上のタブでWindows選択、AMD系かIntel系か選ぶ)

3.Vagrant環境構築

まずは、VS Codeを起動しターミナルで操作します。任意の場所にプロジェクトフォルダを作り、そのフォルダに移動します。(今回はCドライブ直下にprojectと言う名前のフォルダを作ると想定)

> cd c:/
> mkdir project
> cd project

次にubuntuのイメージを取得します。

> vagrant box add ubuntu/focal64

ダウンロード完了後、続けてVagrantfileを作ります。

> vagrant init ubuntu/focal64

projectフォルダ内に出来上がったVagrantfileをVS Codeで開き編集します。主に編集する箇所は下記の2箇所

 #config.vm.network "private_network", ip: "192.168.33.10"

#(コメントアウト)を削除

config.vm.synced_folder "./sync_dir", "/sync_dir"

上記はホスト(Windows)側とゲスト(VirtualBox上のubuntu)側で共有(マウント)するフォルダの設定となる。./sync_dirがホスト側のフォルダ指定で相対パスとなっているので、この場合c:/project/sync_dirを指す。/sync_dirがゲスト側のフォルダを指す。任意のフォルダに適宜変更する。

4.仮想マシン起動&SSH接続

Vagrantfileの編集が終わったら仮想マシンを起動しゲスト側にSSH接続します。VS Codeのターミナルで下記コマンドを入力。

> vagrant up(起動に少し時間が掛かります)
> vagrant ssh(これでゲスト側にログインした状態)

5.Docker&docker-composeのインストール

ゲスト側にログインした状態になるとターミナルは下記のようになると思います。

vagrant@ubuntu-focal:~$

この状態で下記コマンドを実行して行きます。基本コピペでOKです。(ゲスト側にログインした状態でターミナルにペーストする時はCtrl+Shift+V)

パッケージ インデックスを更新し、HTTPS 経由でリポジトリを使用できるaptようにパッケージをインストールします。

$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
# Do you want to continue? [Y/n] と聞かれたらYを入力

Docker の公式 GPG キーを追加します。

$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

次のコマンドを使用してリポジトリをセットアップします。

$ echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
# Do you want to continue? [Y/n] と聞かれたらYを入力

最新バージョンのDocker Engine、containerd、Docker Compose をインストールします。

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

イメージを実行して、Dockerエンジンのインストールが成功したことを確認します。

$ sudo docker run hello-world

dockerコマンド実行時のsudoをなくすため、権限を変更。

$ sudo usermod -g docker vagrant
$ sudo service docker restart

一度ログアウトして、SSHで再ログイン。

$ exit
$ vagrant ssh

dockerコマンドを実行しエラーが出なければOK

$ docker ps

以下コマンドを実行して、バージョンが表示されたらインストール完了。

$ docker -v
$ docker compose version

おわりに

VirtualBoxとVagrantを使った環境構築は以上で終了となります。上記の流れは一般的な環境構築となるので場合によっては上手くいかないこともあり得ます。適宜調べて対処するのが重要です。