エンジニアがプロジェクトに携わるとき、最初に問題が起こるのが開発環境についてでしょう。社内で統一された環境が最初から用意されているのであれば全く問題ないですが、OSやインストールされているツールやフレームワークのバージョンが全く同一であることはなかなかありません。ましてやエンジニア不足により協力会社とプロジェクトを進める場合、完全に同じ環境を用意することは非常に難しいです。
またサイト構築を行う場合、サーバはLinux、開発環境はWIndows / Macということが多く、サーバと全く同じ環境でないことが一般的です。そのため開発環境では問題とならなかったことが、サーバに実装すると正常に動作しないことも起こりえます。そのため、サーバと同じ環境をVirtual Boxなどで構築し、CUIベースで開発を進めているエンジニアも存在します。しかし優れたIDEはGUIで提供されているので、よほど熟練したエンジニアでなければ高い開発効率を保つことはできないでしょう。
仮想マシンを動かす仮想化ソフトなどもありましたが、あくまで仮想環境であるためオーバーヘッドが大きく、パフォーマンスが必要な環境ではデメリットとなることが多かったです。
Docker
そのような状況を打開してくれるのがDockerです。Dockerの仮想環境はコンテナ型であり、移植性が非常に高いです。またこの後にも紹介しますが環境構築が非常に容易です。そのためDockerのイメージさえ用意しておけば、誰もが簡単に同じ開発環境を用意することができます。初期の頃のDockerはLinuxのみで利用できるものであったため敬遠していたエンジニアもいましたが、今ではWindows / Macでも動作させることができるため、一度Dockerに触れれば、誰しもが気に入ることでしょう。
Dockerのインストール
それではDockerをインストールしてみましょう。WIndowsやMacであればDocker for Windows / Macが用意されているので、インストールは非常に容易です。下記よりDockerをダウンロードしてください。Dockerのダウンロードには、Dockerのアカウント作成が必要になります。Dockerインストール後に起動するときにも必要になりますので、適切に作成してください。
Docker Community Edition for Windows
https://store.docker.com/editions/community/docker-ce-desktop-windows
Docker Community Edition for Mac
https://store.docker.com/editions/community/docker-ce-desktop-mac
本記事ではWindows向けに紹介しますが、Macでもほぼ同じような内容となります。インストーラーを起動し、画面の指示に従ってインストールを進めてください。2, 3クリックでインストールは完了します。Dockerの起動に2~3分要しますので、少々待ちましょう。初回起動時は次のような画面が表示されます。そしてダウンロード時に作成したアカウントを入力してください。これで準備は整いました。
Dockerを操作する
ではDockerを操作してみましょう。Windowsであれば、Windows Power Shellを利用することができます。試しに次のコマンドを入力してみてください。
docker run hello-world
ズラズラとログが表示されましたが、ここで見るべきログは最初の8行です。
Unable to find image 'hello-world' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adb7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
順番にログを見てみると、最初の5行からローカルに「hello-world」イメージがなかったため、イメージを取得したことがわかります。そして最後の2行で「Hello from Docker!」と表示されており、正しく動作している旨のメッセージとなっています。そのため再度同じコマンドを入力すると、イメージは既にローカルにあるため、「Hello from Docker!」から表示されます。
同様な操作はコマンドプロンプトでも可能です。下記はコマンドプロンプトで次のコマンドを入力した例です。
docker version
まとめ
Dockerに初めて触れてみていかがでしたでしょうか。ここまでは簡単であったことが解って頂けたでしょう。実際にDockerを扱い開発を進めるには、サーバエンジニアの知識が必要になります。サーバエンジニアの知識も併せて学習を進めて頂ければと思います。本ブログでは、今後もDockerを利用したコンテンツを紹介したいと思います。