VirtualBox、Vagrantを使ってDocker環境がさくっと作れたので共有します。
※Windows10で検証しています。
使用バージョン
- Oracle VM VirtualBox: 6.0.10
- Vagrant: 2.2.5
※自分の環境で使っていたバージョンです。最新版では試せていません。
VirtualBoxのインストール
以下のサイトからインストーラーをダウンロードしてインストールします。(インストール済みの場合は省略可)
対象バージョンの「Windows hosts」をクリックするとダウンロードが開始されます。
https://www.virtualbox.org/wiki/Downloads
Vagrantのインストール
以下のサイトからインストーラーをダウンロードしてインストールします。(インストール済みの場合は省略可)
「DOWNLOAD <バージョン>」をクリックするとダウンロードが開始されます。
https://www.vagrantup.com/
VagrantでDocker環境作成
以下の手順を順次実施し、Linux仮想環境を作成、ログインします。
※手順はvagrantを使ったことがない人用に細かく書いています。
※手順内容は以下のフォルダ構成を作成し、下記のVagrantfileでvagrant up
するだけです。
handson (任意の場所に作成)
└ share (作成した仮想マシンと共有されるフォルダ)
└ Vagrantfile
- 任意の場所に新規にフォルダを作成。(フォルダ名は任意。例:handson)
- コマンドプロンプトを起動し、カレントフォルダを1で作成したフォルダに移動
-
vagrant init
を実行。 - 3によって作成されるVagrantfileをエディタで開き、下記のVagrantfileの内容に書き換え保存して閉じる。
-
mkdir share
を実行し、Vagrantfileと同じ場所にshareフォルダを新規作成。 -
vagrant up
を実行し、ゲストマシンが起動するまで待つ。 -
vagrant status
で状態確認。 (runningになっていることを確認) -
vagrant ssh
を実行し、ゲストマシンにログイン。 -
docker version
やdocker info
を実行し、Dockerコマンドがインストールされていることを確認。
※2はファイルエクスプローラーのアドレスバーをクリックしてcmdを実行で、移動した状態で起動できます。
※コマンドプロンプトではなく、git bashなどを使用しても大丈夫です。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.hostname = "handson"
config.vm.network "private_network", ip: "192.168.10.10"
config.vm.synced_folder "./share", "/home/vagrant/ws", mount_options: ['dmode=755','fmode=644']
config.vm.provider "virtualbox" do |v|
v.name = "handson"
v.memory = 4096
v.cpus = 2
end
config.vm.provision "docker"
config.vm.provision "shell", inline: <<-SHELL
# インストール済みのパッケージをアップデート
yum update -y
# yum のリポジトリ追加
yum install epel-release -y
# マニュアルページ、vim、gitを追加
yum install man-pages.noarch man-pages-ja.noarch vim-enhanced git -y
# docker-composeインストール
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# docker-compose補完機能インストール
curl -L https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
SHELL
end
VagrantにはDocker用のProvisionerがあるので、それを利用しています。
今回はインストールのみに使用していますが、イメージのビルドやプル、起動などもできるようです。
参考:Docker Provisioner
おまけでshellでコマンドを実行してdocker-composeもインストールしています。
docker-composeのバージョンについてはReleases docker/compose (GitHub)で確認できます。
参考:Docker Compose、Docker Compose 日本語
yumでインストールしている内容はご自由にどうぞ。
補足:よく使うVagrant コマンド
環境構築にVagrantを使用しているため、よく使うコマンド一覧を補足として載せておきます。
$ vagrant init
現在のディレクトリをVagrant環境になるように初期化。(Vagrantfileの作成)
$ vagrant up
Vagrantfileに従ってゲストマシンを作成および構成、起動。
$ vagrant status
ゲストマシンの状態確認。
$ vagrant ssh
実行中のゲストマシンにSSH接続。
$ vagrant halt
稼働中のゲストマシンをシャットダウン。
$ vagrant reload
再起動(haltした後に、upするのと同等)。
$ vagrant destroy
実行中のゲストマシンを停止し、作成されたすべてのリソースを破棄。
$ vagrant plugin list
インストールされたプラグインとバージョンを表示
$ vagrant plugin update [<name>]
インストールされているプラグインの更新。(制約がある場合は制約優先)
$ vagrant plugin install <name> [<name2> <name3> ...]
プラグインのインストール。(インストール済みの場合は更新)
$vagrant plugin uninstall <name> [<name2> <name3> ...]
プラグインのアンインストール。依存関係もアンインストールする。
#おわり
VirtualBox、Vagrantでさくっと環境構築できました。
Windowsの場合、頑張ってWindows(Hyper-V)でやろうとするより、
Linux環境を作った方が比較的簡単なのでおすすめです。
ただし、今回の方法では、一般ユーザがdockerグループに入ってしまいます。
(Dockerでユーザーをdockerグループに追加することの危険性を理解しよう)
勉強用または開発用の環境と割り切って使用するのが良いかと思います。
ちなみに、bento/amazonlinux-2で試してみたら
以下のようなエラーメッセージが表示されインストールに失敗しました。
Docker用のProvisionerをサポートしていないboxもあるようです。
ERROR: Unsupported distribution 'amzn'
今回は以上です。