はじめに
WindowsでDockerが使えないことが発端。
普段はMacを使っていますが、Windowsを使うこともあります。それで、Macと同じくWindowsにもDockerをセットアップしたところどうやっても動かなくて困りました。
起動はとりあえずするものの、焦り困るクジラが出て終了。
焦っているのは私も同じです。
いつ幸せなDockerライフ on Windowsを送ることができるのか、いらいらごちゃごちゃと弄り回した挙げ句、諦めておりました。
Windowsで動かないならLinuxを使えばいいじゃない
そうだね。そのとおりだね。
そんなわけで、Windows上でVagrantを使ってLinux環境を作り、その中でDockerします。
Vagrantって?
公式サイト:Vagrant
Vagrantは仮想化環境ソフト(VirtualBoxなど)で立ち上げた仮想マシンを管理するためのツールです。テキストベースで構築する環境の情報を管理できるようになります。Gitで管理したり共有したりしやすく、大変便利です。
後々のためにも、環境構築は口伝で残していく秘伝のタレ方式よりも、タレを作るレシピを残していきましょう。
準備チェックリスト
Vagrantで仮想マシンが動く状態にします。基本的に下記の項目を準備しておけば大丈夫だと思います。
Vagrantのインストール
公式サイトからダウンロードしてインストール。
公式サイト:Vagrant
VirtualBoxのインストール
これも公式サイトからダウンロードしてインストール。
公式サイト:Download VirtualBox
作業フォルダを作る
Vagrantで仮想マシンを作るスクリプトやその他諸々を扱うためのフォルダを作っておきます。まとめておいたほうが管理はしやすいです。
作る場所や作るかどうかは任意です。お好きな場所へ。
環境変数の設定
Vagrantを使うと仮想マシン(Boxと呼ばれています)がダウンロードされます。
初期状態で使うと、グイグイとドライブを圧迫していくため後でびっくりすることがあります。ぼんやりしていると100GBくらい平気で占有してしまいます。
最近は値段がこなれてきたとはいえ、SSDなどでは困った状態になるため、保存先を変更しておきます。
VagrantのBoxファイル保存先
コントロールパネルから環境変数VAGRANT_HOME
としてパスを設定します。
dosの場合は、
VAGRANT_HOME=/{どこか余裕のある場所}/Vagrant.d
VirtualBoxのイメージファイル保存先
VirtualBoxを起動して環境設定から変更します。
一般タブに、「デフォルトの仮想マシンフォルダ」という項目があります。それを任意の場所に変更します。
寄り道
プラグインを入れる
Vagrantにはいろいろと便利なプラグインが用意されています。
改めてプラグインめぐりでもしてみましょうかね。
今回は目的まっしぐらのため、
- vagrant-vbguest
- vagrant-hostsupdater
だけ入れました。
入れ方は、vagrant plugin install {プラグイン名}
です。
vagrant upしてから変更する場合
うっかり忘れてvagrant up
したときでも慌てず騒がず落ち着きましょう。
手順
- まず
vagrant halt
- 元の保存先を調べます
- すべての仮想マシンを停止します
- 上記の手順でパスを変更します
- 元の保存先からファイルをそのまま全て移動します
- VirtualBoxを起動し、表示されている仮想マシンを削除します
あとはいつもどおりvagrant up
で起動するはずです。
さぁVagrantしよう!
これでVagrantで仮想マシンを操作できるようになりました。作業フォルダに移動して動かしていきましょう!!
簡単なVagrantのコマンド紹介
非常にシンプルです。
これ以外にもいくつかコマンドがあります。使い方がわからないふりをしてオプションとかを付けずにvagrant
と実行すると、いろいろ教えてくれます。
起動
vagrant up
停止
vagrant halt
SSH
Vagrantは起動時に証明書やらなんやらの準備をしてくれるので、コマンド一発でSSHできる状態になっています。Dockerの起動などはSSHで接続して行います。
vagrant ssh
SSHしてしまえば後は普段どおりBashってください。
スクリプトをご用意しました
何番煎じかわかりませんが、私も作ってみました。最低限のyumとフォルダ構成を含めたスッピンCentOSです。
セキュリティ対策を施していないので、あくまでもテスト環境としてご利用ください。またお決まりの文言ですが、無保証です。
口伝ではなくテキストですから、こういうときに何やってるか中身が丸わかりで良かですね。
Docker
フォルダにコンテナごとのフォルダを切って、dockerfile
を入れる使い方を想定しています。