WindowsやmacOS、もちろん各種Linuxでも使えるVirtualBoxはGUI操作が一般的だけど、vboxmanageコマンドを駆使すればCLIでも使える。
Vagrantならもっと簡単に使えるけど、そもそもVirtualBoxはGUIのない最小構成のCentOS Stream 8にインストールできるのか?
できましたよ!
更にDockerも追加すると、仮想マシンやコンテナをゴチャゴチャいじってもホストOSは最小限の綺麗なままで済む。
用意するもの
仮想マシンホストとして利用する、CentOS Stream 8を最小構成でセットアップしたマシン。
ホストにするOSの領域と、仮想マシンやコンテナ置き場にする領域でパーティションを分けておくと、ホストOS変えたい病が発症したときも楽。
VirtualBox
インストール
vboxconfig実行に必要なパッケージのインストール
VirtualBox本体のインストール時には依存解決で自動インストールしてくれないので手動インストール
$ sudo yum install -y gcc make perl kernel-devel elfutils-libelf-devel
インストールしていないと、VirtualBox本体のインストール途中にこんなメッセージが出る
This system is currently not set up to build kernel modules.
Please install the gcc make perl packages from your distribution.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-4.18.0-259.el8.x86_64
This system is currently not set up to build kernel modules.
Please install the gcc make perl packages from your distribution.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
kernel-devel kernel-devel-4.18.0-259.el8.x86_64
There were problems setting up VirtualBox. To re-start the set-up process, run
/sbin/vboxconfig
as root. If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.
VirtualBox本体のインストール
公式のダウンロードページからリンクを取得してインストール
$ sudo yum install https://download.virtualbox.org/virtualbox/6.1.16/VirtualBox-6.1-6.1.16_140961_el8-1.x86_64.rpm
本体インストール前にgcc make perl kernel-develをインストールしていなかった場合は、インストール後に手動でsudo /sbin/vboxconfig
実行する。
elfutils-libelf-develをインストールしていない場合、vboxconfig実行時にこんなメッセージが出るので、メッセージどおり /var/log/vbox-setup.log を確認して対応する。
sudo yum install -y elfutils-libelf-devel
で解消するはず。
$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.
There were problems setting up VirtualBox. To re-start the set-up process, run
/sbin/vboxconfig
as root. If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.
設定
仮想マシンはそれなりのサイズになるので、大容量パーティションとか外付けHDDに保存先を変えたい場合は以下のコマンド。
$ vboxmanage setproperty machinefolder /path/to/virtualbox-vm-dir/
確認
$ vboxmanage list systemproperties | grep "Default machine folder"
Default machine folder: /path/to/virtualbox-vm-dir/
Vagrant
インストール
rsyncインストール
$ sudo yum install -y rsync
vagrant本体のインストール時には依存性解決で自動インストールしてくれないけど、いざvagrant upすると以下のメッセージが出るので先にインストールしておく
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
"rsync" could not be found on your PATH. Make sure that rsync
is properly installed on your system and available on the PATH.
Vagrant本体のインストール
公式のダウンロードページからリンクを取得してインストール
sudo yum install https://releases.hashicorp.com/vagrant/2.2.14/vagrant_2.2.14_x86_64.rpm
設定
Boxの保存場所を変更する デフォルトの$HOME/.vagrant.d/からBoxの保存場所を変更する ~/.bash_profileに下記追記
export VAGRANT_HOME=/path/to/vagrant-box-dir/
Docker
インストール
Dockerのインストール
リポジトリ追加
$ sudo yum install yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Dockerエンジンのインストール
$ sudo yum install docker-ce docker-ce-cli containerd.io
自動起動有効化と起動
$ sudo systemctl enable docker
$ sudo systemctl start docker
sudoしなくてもログインユーザーでdockerコマンドを打てるようにする
$ sudo systemctl start docker
設定
Dockerイメージも数が増えるとそれなりにストレージを食うので保存場所を変更する。
/etc/docker/daemon.json を作成してdata-rootを指定する。
{
"data-root": "/path/to/docker-dir"
}
設定反映
$ sudo systemctl restart docker
確認
$ docker info | grep "Docker Root Dir"
Docker Compose
インストール
ダウンロードとインストール
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
実行権付与
$ sudo chmod +x /usr/local/bin/docker-compose
確認
$ docker-compose --version