動画はこちら↓
今回からはDockerについて学習していきます。
環境構築でよく耳にするけど、実際よくわかってないかも...
そうだよね。
この記事では、Dockerとは何か?というところから、具体的にどんなコードで動き出すのか。そして、関連して抑えておくべき技術を紹介していきます。
Docker初心者の方はぜひ、最後までご覧ください!
まずは、Dockerとは何なのかみていきましょう。
Dockerを簡単に言うと『環境構築を楽にするためのツール』です。
コンテナと呼ばれる仮想動作環境を簡単に用意することができます。
うーん、仮想動作環境、って言われてもしっくりこないなあ。
では、いくつかの環境を比較してみましょう。
開発環境を用意する場合、まず、実在するサーバーのOSに直接アプリケーションをインストールして実行する、という方法があります。
自分のPCにアプリをインストールする、的なこと?
それもそうだね。実際のサービスに使うならデータセンターとか会社にあるサーバーに入れたりもするね。
この方法は、マシンの性能を活かせるという利点はありますが、同じ環境を手元に用意するのが大変だったり、アプリのバージョン管理なども複雑になってしまうというデメリットがあります。
そこで、まるでサーバーの中に別のサーバーがあってその中にアプリを入れて実行しているかのように動かせる環境がうまれました。
これが仮想環境と呼ばれ、この環境情報を共有すれば同じ開発環境を簡単に用意することができる、などのメリットがあります。
確かに、誰かと一緒に作業するなら環境は同じにしておきたいもんね!
そうそう。
管理は楽なものの、サーバー内にOSを作ることになるので、重くなってしまうというデメリットもあります。
Dockerは、仮想環境ではありますが、OSごとマシンを作るのではなく、OSは物理的なマシンのOSを使い、アプリや依存関係などの情報を『コンテナ』と呼ばれるまとまりで管理し、独立して動いているように扱うことができます。
これにより、仮想環境の管理のしやすさと、重くなりづらいというメリットを持っています。
では次に、Dockerを実際に使うときの流れをみてみましょう。
DockerはLinuxで動かすことができ、インストールコマンドでインストールすることができます。
…が、私含め、普段Linuxを使っていないという人は、MacやWindows向けにDocker desktopという公式アプリケーションがあり、こちらをインストールすることでdockerを使うためのdockerコマンドが利用可能になります。
実際にコンテナを起動するには、コンテナのレシピであるdockerfileを用意し、docker build コマンドを実行します。すると、Dockerイメージという、アプリを動かすためのファイルや設定が含まれたものが生成されます。
続いてdocker run コマンドを実行することで、Dockerイメージから実際にDockerコンテナを起動することができます。
dockerfileさえあれば、たったこれだけでアプリを動かす環境が作れちゃうんだね!
そうだね!
でもこのdockerfileって具体的に何が書かれているの?
いい質問だね。じゃあ実際にDockerfileの中身を少しみてみよう!
シンプルなDockerfileの例として、こちらをみてみましょう。
詳しくは次回以降の記事で解説していきますが、コンテナの初期設定や作成時に実行するコマンドを指定したりしています。
なるほど。コンテナを作るためのレシピ、って感じなんだね!
そうだね!
最後に、Dockerと関連した技術をいくつか紹介します。
Docker Compose…とは、複数のコンテナを管理するためのツールです。Dockerfileを1つ1つ作成してコンテナを1つずつ管理するのではなく、docker-compose.ymlという設定ファイルを使ってまとめて管理することができ、より便利に環境構築ができます。
Makefile…をDockerと組み合わせて活用することで、長かったり複雑な複数のコマンドを短い文字数で実行することができるようになります。
その他にも、Dockerイメージを共有するためのDocker Hubというサービスや、Dockerと組み合わせてスケーリングを実現してくれるツールなどもあります。