入門
Docker
仮想化

プログラマのためのDocker超入門 01.仮想化

More than 3 years have passed since last update.

vagrant_logo.png

今回はVagrantのメリットまでですが・・


この連載のゴール

連載の最後まで読んでいただくと Dockerとは何か、どんなメリットがあるのか

より理想的な開発環境とはどんなものか、テスト環境や本番環境への影響は?

といったことがわかるようになります。おそらく。


前提

サーバーを自分でセットアップしたことのない方、ようこそ!

そして黒い画面1に不慣れな方、ようこそ!

以下、インフラ?そんなの仕事じゃないよ?な方に向けた記事です。

正確な説明や絶妙な比喩よりも、わかりやすさを優先します。


ケース: 開発環境セットアップ

突然ですが、

「会社のホームページ作ってよ :wink: 」と頼まれたらどうしますか?

もちろん HTMLを書けばいいんですが、同時にブラウザで確認もしたい。

Windowsなら XAMPP、Macなら MAMPをインストールするかもしれません。

ですが

「新製品のホームページは会員ページもほしいから Node.jsで!

 あ、ついでに前任者が Rubyで作ったこのサイトも引き継いで :two_hearts: !!

 でも速いらしいし、Go言語で作り直したサイトも見てみたいなあ :stuck_out_tongue_closed_eyes:

となってくると・・つらい・・。

それぞれが依存するプログラミング言語やライブラリが氾濫、

唯一の設定ファイルに書き込まれる複数プロジェクトの設定値・・

そしてプロジェクトごとに使いたい Javaや MySQLのバージョンが違う・・・


仮想化

そんな折、開発環境を仮想化するという魔法が生み出されました。

プロジェクトごとに、お互い隔離された開発環境を作ればいいじゃん!という。

以前から

Macの中で Windowsを起動したり、Windows上に Android端末を再現したり

時代を遡れば Windows上でスーパーファミコンを(ry

という天才たちがいましたが、その思想を受け継いだ2のが仮想化・・

仮想化とは、英語ならバーチャライゼーション、バーチャルにすること。

つまり実態を隠して見かけを変えることですが、上の例でいえば

物理的には Macだけれど、使ってみると Macでも Windowsでもある状態のこと。

この仮想化を開発環境にも適用してみようというのが一般的になったのが数年前です。


Docker前夜: Vagrant + VirtualBox

火付け役は VagrantVirtualBoxというソフトウェアたちでした。

これらについては

Qiitaにたくさんの導入記事があるので

仮想化未経験で興味がある方はぜひ、チャレンジしてみてください。

実際、Dockerじゃなくても、開発環境を仮想化すれば大きなメリットがあります。


  • 各プロジェクトが使う言語、バージョン、ライブラリが明確になる

  • それぞれのプロジェクトが隔離され、影響範囲が限定的になる

  • [HTTPサーバ]のように同じ[ポート]を使うプロジェクトでも複数同時に起動できる

  • ホスト3に複数バージョン入れにくいミドルウェア4でも複数バージョン同時起動ができる

  • 「俺の環境では動く」がかなり軽減される5


今回のまとめ

Webサイトやアプリを作る開発者としても

仮想化技術やその周辺ツールをうまく使えば

より便利で柔軟な開発環境を手にすることができます。

ぜひ今後のためにも

Vagrantと VirtualBoxはインストールしておきましょう!

02.構成管理

 





  1. ターミナル。最近の背景色はデフォルトだと白いかも? 



  2. かどうかはわかりませんが、たぶん受け継いでいません。 



  3. Macや Windowsなど、物理的にあなたの目の前にあるコンピュータのこと。 



  4. MySQLなど、自分が作るアプリケーションの動作に必要となるソフトウェア。 



  5. Vagrantと Chefなどを併用すれば、誰でもほぼ同じ環境が作れます