こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- 開発者だけど、Dockerを使うメリットを知りたい方
- Dockerについて知りたい方
この記事を読むと
Dockerを使うことで開発スピードが上がること
が分かります。
私はプログラマーとして2年間就業してきましたが、
開発ではDockerをメインに使用していました。
開発者としての経験を踏まえて解説していきます。
dockerとは?使うメリットを解説します
Dockerとは、非常に軽量なOS環境と開発環境を提供するオープンソースのソフトウェアです。
ざっくりと言うと、今までの仮想化技術(vmwareやvirtul Box)を
さらに軽量で、速く起動出来るようにしたソフトウェアです。
(正確には違いますが、分かりやすく説明するためにざっくりとです。)
Dockerを使用するメリット
開発者がdockerを使うメリットは
- 「開発環境のサーバー構築時間の短縮」
- 「共通の開発環境の提供」
が挙げられます。
開発環境のサーバー構築時間の短縮
Dockerファイルというファイルに簡単なコードを書けば
すべて自動で構築されます。
dockerは数秒でOSが起動することも特徴です。
通常の仮想マシンのOSのブート手順が無いため、
高速で開発環境の起動、停止が可能です。
このブログの開発環境はDockerで構築していて、
WordPressとDBのサーバーの2サーバを使用しています。
Dockerの起動コマンドを叩いてから数秒で2つのサーバが起動することが分かります。
「done」が表示された段階で、apacheもすべて起動しているので、
即座に開発環境のWebページへアクセス可能です。
共通の開発環境の提供
Dockerファイルは流用できるので、
すべての開発者が同じ開発環境で構築出来るようになります。
Virtual BoxとDockerの違い
virtual Boxとdockerの違いは
- 起動スピード
- 開発環境の構築の仕方
が大きく違います。
起動スピード
Virtual Boxはハイパーバイザー型の仮想マシンなので、
OSのブート手順からはじまり数十秒〜数分の起動時間がかかります。
Dockerの場合は、コンテナ技術なので数秒で起動することが可能です。
開発環境の構築の仕方
Virtual Boxの場合、基本的には手動でコマンドを打ち込んで開発環境を構築するか、
Ansibleを使用して自動構築するかになります。
Dockerの場合はDockerファイルというファイルに構築内容を記載し、
コマンドを実行することで開発環境を構築します。
Dockerファイルの例です。
mysqlの構築は2行で済んでいます。
wordpressの方は長いコードですが、
CentOS7を使用したことがある方は馴染みのコマンドです。
RUNでLinuxコマンドを実行して、
ADDでファイルをサーバーに転送しています。
このサンプルはコピペでは動きません。
docker-composeという別ファイルを用意する必要があります。
docker-composeファイルにmysqlのパスワードなどが書かれており、構築を完全自動化することができます。
Dockerでは基本的にコマンドを入力して構築は行いません。
開発で使用するだけなら学習コストは低い
Dockerはクラウド上では当たり前に使われている技術で、
本格的に使う場合は学習コストがそれなりにかかります。
しかし、開発で使う場合であれば、
人によっては10〜20時間かからないくらいで使えるようになると思います。
Dockerの学習におすすめの本
- Docker実践ガイド 第2版
- 古賀政純(こがまさずみ)
- 2019/2/18
Dockerの基礎を勉強したい方から、本格的に勉強したい方におすすめです。
古賀政純さんが書いているというだけで信頼性が保証されています。
Dockerの勉強はこの1冊やれば本格的にDockerを使えるようになります。
私が購入したのは初版ですが、
2019年2月現在は第2版となり、ページ数が300pから500pほどになっています。
Kubernetesのボリュームが増えたようで、より実践的になっているようです。
初版ではCentOS7用に書かれているため、
Mac用のDocker である Mac for Dockerの導入などは書かれていません。
コマンドや操作はほぼ一緒なので、Macへの導入はグーグルなどで検索してみてください。