Vagrant を使ったVM環境構築
前回 VirtualBox を利用して、Ubuntu に Docker と SSH を入れるということをしました。
どうやら Vagrant を使うともっともっと簡単に環境構築が行えるようなので実際に試してみました。
※MacOSXで行っております。
Vagrantってなに?
VirtualBox のようなVM環境をとにかく簡単に一元的に扱いやすくしてくれるツールです。
具体的になにをしてくれるのか例を挙げるとこんな感じ。
・SSH接続設定が初めから済みの状態でVM環境が作られる
・面倒な設定なくコマンド1つでVM環境が作成できる
(ざ〜〜〜っくりですが2つあげました)
とにかくすぐに作業に取りかかれると言う点ではものすごい良いツールだと思います。
ただ、個人的には一度は Vagrant を使わず構築してみるといいと思います。
その方が便利になった点がよりよくわかります。
Vagrant の初期設定
パッケージのインストールが完了したら、MacOS のターミナルを起動して以下のコマンドを叩くだけでインストールできます。
$ mkdir Vagrant $ cd Vagrant $ vagrant init --minimal ubuntu/trusty64
まず適当にフォルダを作成して、その中で「vagrant init」コマンドを実行します。
minimal オプションは必要最小限の Vagrantfile を作成しますという指示です。
あってもなくても大丈夫ですが、今回は特に気にせず最小構成で作成します。
コマンドが正常に終了すれば Vagrantfile と言うものが作成されていると思います。
Vagrant が VM を作成するときに使う設定ファイルですが、中身はこんな感じになっています。
Vagrant.configure(2) do |config| config.vm.box = "ubuntu/trusty64" end
Vagrant の VM 作成
さて、実はもうすでに Vagrant を使う準備がすべて整いました!
以下のコマンドを叩いて実際に VM を起動してみましょう。
$ vagrant up
それなりに時間がかかりますが、しばらく待っていると起動が完了します。
正常に終了していれば VirtualBox の画面にも新しく VM が追加されています。
Vagrant の SSH 接続
そして Vagrant を導入する一番のメリット?と言ってもいい部分ですが、
すでに SSH 接続設定などが終わった状態の VM が起動されているため、実際につないでみたいと思います。
以下のコマンドを叩いてみましょ。
$ vagrant ssh Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-79-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Wed Feb 24 03:17:38 UTC 2016 System load: 0.42 Processes: 80 Usage of /: 3.5% of 39.34GB Users logged in: 0 Memory usage: 25% IP address for eth0: 10.0.2.15 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 0 packages can be updated. 0 updates are security updates. vagrant@vagrant-ubuntu-trusty-64:~$
つながりました!!素晴らしいですね!
VirtualBox内のUbuntuへSSH接続
MacOSXにインストールされているVirtualBoxで起動されたUbuntuで作業するとレスポンスがもっさりしていてストレスたまりますよね?
なのでUbuntuに対してMacOSの端末からSSH接続をすることにしました。
VirtualBoxの設定
VirtualBoxのメニューバーから「環境設定...」を開きます。
設定ウィンドウの「ネットワーク」の「ホストオンリーネットワーク(H)」タブを選択します。
画面右側の「+」マークを押してネットワークアダプターを追加します。
次にドライバーマークのアイコンをクリックして設定内容を見てみます。
環境によって多少違うと思いますが、こんな感じで設定されているかと思います。
バーチャルホスト側の設定
次にUbuntuがインストールされているバーチャルホスト側の設定を行います。
VirtualBoxの画面上で対象のバーチャルホストを選択した状態で「設定(S)」ボタンを押します。
設定ウィンドウの「ネットワーク」を選択すると以下のような画面になると思います。
「ポートフォワーディング(P)」ボタンを押してポートフォワード設定画面を開きます。
画面右側の「+」マークを押してポートフォワード設定を追加します。
こんな感じで、ポート44444に対してポート22を割り当ててみました。
設定が終わったら「OK」ボタンを押して閉じます。
Ubuntu側のSSHインストール
次にUbuntuにSSHサーバをインストールして実行します。
$ sudo apt-get update // 念のため最新にアップデートしておきます。
$ sudo apt-get install openssh-server
もし、自動的にSSHサーバが起動していない場合は手動で起動します。
$ sudo service ssh start
MacOSX側から接続
$ ssh <username>@192.168.99.100 ECDSA key fingerprint is SHA256:sO+PooxempCrdXg1BeKtGMS3DR3cdL0uG**********. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.99.100' (ECDSA) to the list of known hosts.
初回はこんな感じで応答を求められると思います。
2回目以降は何も聞かれることなくすんなり接続ができると思います。
これでいちいちUbuntuのGUIを立ち上げなくてもコマンドのみでサクサク作業ができるようになりました。
作業効率って大事ですよね!
Docker 主要コマンド一覧
みなさん Docker 使ってますか?
この記事ではDockerのコマンドについてまとめてみました。
オプションなど細かく分類するとまだまだたくさんありますが、実務でよく使うものを集めてみました。
Docker 主要コマンド一覧
ローカルにあるイメージ一覧を取得する
$ docker images
コンテナ一覧を取得
$ docker ps -a
オプションについて
※) -a オプションは停止中のコンテナも含めて表示する
コンテナの停止と開始と再始動
$ docker stop <コンテナ名> $ docker start <コンテナ名> $ docker restart <コンテナ名>
コンテナの強制終了
$ docker kill <コンテナ名>
コンテナの作成&実行
$ docker run -it --name <作成コンテナ名> <リポジトリ名:タグ名> /bin/bash
オプションについて
※) -it オプションは --interactive, --tty オプションでコンテナとbashで対話するためのものです。
※) 実行するとコンテナ内のbashにプロンプトが切り替わります。
コンテナの作成&実行(ポートを指定する場合)
$ docker run -it --name -p 33333:80 <作成コンテナ名> <リポジトリ名:タグ名> /bin/bash
※) 33333ポートに対してアクセスするとこのコンテナの80ポートへ流れる
起動中のコンテナに入る
$ docker exec -it <コンテナ名> /bin/bash
コンテナの各種情報を出力
$ docker info <コンテナ名> $ docker inspect <コンテナ名>
コンテナを削除
$ docker rm <コンテナ名>
イメージを削除
$ docker rmi <イメージ名>
イメージの検索
$ docker search <検索イメージ名>
イメージの取得
$ docker pull <リポジトリ名:タグ名>
Mac + VirtualBox + Ubuntu 14.04 + Docker による開発環境構築
仕事でDockerを利用して開発環境を作る機会が頂けましたので環境構築の手順の共有と備忘録として記事を書いていきたいと思います。
各ソフトウェアのバージョン情報など
・MacOSX 10.11.1
・VirtualBox 5.0.14
・Ubuntu 14.04 LTS
・Docker 1.10
VirtualBoxをインストール
VirtualBoxはこちらから最新版をダウンロードできます。
https://www.virtualbox.org/
こちらは特に難しいところはないので、画面に従ってインストールしてください。
VirtualBoxへUbuntuをインストール
VirtualBoxのインストールが終わったら次は実際にUbuntuをインストールします。
まずはUbuntuのイメージファイルが必要なので下記のサイトからダウンロードします。
http://www.ubuntulinux.jp/download/ja-remix
イメージファイルがダウンロードできたら、VirtualBoxの左上にある「新規(N)」ボタンを押して
Ubuntu用のバーチャル環境を作成していきましょう!
まずはバーチャル環境に名前を付けます。それ以外の項目はそのままで良いでしょう。
次に、メモリサイズの指定を行います。
僕は2GBを指定してみました。マシンのメモリ容量と相談して適当に設定しましょう。
次はハードディスクの設定項目です。
仮想ハードディスクを設定するかどうかですが、初回であれば何もないはずですので「仮想ハードディスクを作成する(C)」を選択しましょう。
ハードディスクのファイルタイプは「VDI (VirtualBox Disk Image)」を選択します。
物理ハードディスクの設定は今回は「可変サイズ(D)」にしました。
固定サイズにすると、作成時に少し時間がかかる代わりに処理速度が上がるようですが、ディスク容量の節約のために今回は可変サイズで作成します。
最後にディスク容量を指定して作成します。
Ubuntuをインストールするには最低7GBの容量が必要なため、少し余裕をもたせて8GBとしました。
これで無事にUbuntu用のバーチャル環境の作成が完了です!
それでは「起動(T)」ボタンを押してUbuntuを起動してみましょう!
するとこんな画面が表示されるかと思います。
ここで先ほどダウンロードしておいたUbuntuのイメージファイルを選択して「Start」ボタンを押します。
そうすると起動時にこのイメージファイルがロードされてUbuntuのインストール画面が表示されます。
右の「Ubuntu をインストール」ボタンを押してUbuntuをインストールしていきましょう。
・必要最低限のHDD空き容量があること
・インターネットに接続されていること
この2つがクリアできていればインストールが可能です。
(たぶん大丈夫になってるはず)
警告と書いてあって若干怖いですが、「ディスクを削除してUbuntuをインストール」を選択します。
初回インストールなので特になくなって困るものはありませんので大丈夫です。
住んでいる地域を選択します。
キーボード設定ですが、特に指定がなければそのまま続けます。
ここまで設定が終わるとOSのインストールが始まりますのでしばらく待ちます。(約20分程度)
インストールが終わると再起動が求められます。
再起動した結果が以下の画面になります。
無事にUbuntuをインストールすることができました!
ご覧の通りインストール完了後の初期状態だと解像度がだいぶ小さいです…。
作業効率化のためにまずは解像度の設定を行いましょう。
初期状態だと640x480しか選択することができません。
Ubuntuが表示されているウィンドウのウィンドウメニューから
「Devices」→「Insert Guest Additionas CD image...」を選択します。
すると以下のようなポップアップが表示されるので「実行する」ボタンを押します。
パスワードが求められるのでUbuntuのインストール時に設定したパスワードを入力して「認証する」ボタンを押します。
コマンドラインが起動して何やらインストールが始まります。
画面に「Press Return to close this window...」と表示されたら完了です。
リターンキーを押してウィンドウを閉じましょう。
その後、バーチャル環境を再起動すると640x480以外の解像度も選べるようになっているはずですので、環境に合わせて好きなものを設定しましょう。
UbuntuへDockerをインストール
さて、ようやくUbuntuがインストールできたところで次は本題のDockerをインストールしていきたいと思います!
インストールと聞くと apt-get や yum が思い浮かぶかと思いますが、apt-getを利用すると少し古いバージョンがインストールされるようです。
今回は wget で最新をインストールしていきたいと思います。
$ wget -qO- https://get.docker.com/ | sh
インストールが終わりました。
最後にこんなことが書いてあります。
If you world like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like: sudo usermod -aG docker kabayama Remember that you will have to log out and back in for this to take effect!
ようするに、ルートユーザ以外で実行したい場合はこのコマンドを実行しておいてね!ってことみたいです。
それでは Docker コマンドでバージョン確認をしてみましょう。
$ docker version
バージョン情報が表示されました!
さっそく Docker の Hello World を実行してみたいと思います!
あれ・・・。エラーになってしまいました。
この後あちこちググりながら1時間ほどいろいろ試したのですが、結局OSを再起動したら sudo 付けずに一般ユーザで実行できるようになりました。
環境構築手順としてはそれほど多くはありませんが、実際にやってみるといろいろハマるところがあり2〜3時間を要してしまいました。
おそらくこのコマンドが有効化されるために、OSの再起動が必要なようですね。
sudo usermod -aG docker kabayama
再起動しても解決されない場合は、Dockerサービスが上がっていない可能性があるので以下のコマンドで解決するかもしれません。
sudo service docker start
今回はかなり手こずってしまいましたが、次回からはすんなり構築できるようにしっかり覚えたいと思います。
同じような問題でハマっている方、これからDockerを使ってみようという方の少しでも参考になれば嬉しいです。