【Docker】初心者向けDocker基礎編
こんにちは。nakagiriです。
今年は梅雨が明けるのが早くて毎日真夏並みに暑いですね。( ´∵`)
みなさんも熱中症にならないように気をつけてください。
今回からDockerについて全四回に分けて解説していきます。
一回目の本記事では、「Dockerって何だろう?」、「Dockerを使うとどんなメリットがあるのだろう?」といった疑問を解決するDockerの基礎編です。
Dockerに関する記事はたくさんありますが、難しい言葉が多く羅列されていてなんとなく難しいイメージを持たれている方もいるかもしれません。そこで、イラストを使ってなるべくわかりやすく噛み砕いてお伝えしていきたいと思います。
二回目以降の記事では、実際にDockerを使って解説していくので、ぜひ一緒にやってみてください。(※実際の構築は、Docker Composeを使用して解説する予定です。)
Dockerとは?
Dockerは、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。わかりやすく言うと、「仮想環境を構築するためのツール」です。
Windowsやmac、Linuxなどのホストマシン上に「コンテナ」と呼ばれる隔離された仮想環境を構築して、その中でアプリケーションやライブラリなど扱うことができ、一つのマシン上にあたかも別のマシンが動いているかのように動かすことができます。
従来の仮想化とコンテナの仮想化は何が違うのでしょうか?
「仮想化」とは、ホストマシン上に別のゲストマシンを起動する仕組みのことです。複数の仮想マシンそれぞれでOSやアプリケーションなどを使うことができます。
従来の仮想化では、仮想化ソフトウェアを利用し、ゲストOSを起動させ、仮想環境を構築します。(ハイパーバイザー型の仮想化ではホストOSが不要です。)この方法で構築すると、CPUやメモリを多く消費してしまうデメリットがあります。
一方のコンテナによる仮想化は、Dockerエンジン上で起動しており、ホストOSの中核である「カーネル」を共有しているため、仮想化ソフトウェアやゲストOSが必要ありません。CPUやメモリの消費が軽減され、従来の仮想化よりも軽量で高速に起動します。
補足
ホストOS
パソコンに搭載されているOSです。Windowsやmac、Linux等のことです。
カーネル
OSの中核となる部分で、コンピューターの基本的な操作を行う機能を提供するプログラムのことです。
Docker導入のメリットとは?
「Dockerとは?」でお話ししたように、Dockerを使うと従来の仮想化に比べて、負荷が小さく処理速度が速いというメリットがあります。その他にも下記のようなメリットがあります。
- 誰でもどの環境でも、同じように動く
- 開発環境の構築時間が短縮できる
それでは一つずつ見ていきましょう。
誰でもどの環境でも、同じように動く
「Aさんの環境では動くのに、Bさんの環境だと動かない」や「開発環境ではうまく動くのに、本番環境だと動かない」ということがしばしば起こります。そこでDockerを使うことで、開発環境依存のエラーが起こりにくくなります。
例えば、Windowsの環境で構築したコンテナを、macの環境やLinuxのサーバーに移動させても同じように扱えます。
補足
実際には、コンテナをそのまま渡すのではなく、「Dockerfile」に設計図がかかれ、「Dockerイメージ」が作成されます。そして「Dockerイメージ」を元にコンテナが作成されます。
Dockerfileとは?
Dockerイメージを自動で作るためのファイルです。Dockerイメージとは?
コンテナを動かすために必要なファイルシステムのことです。開発環境の構築時間が短縮できる
開発者それぞれにサーバーやデーターベースの初期設定が書かれた手順書を共有し、その手順書通りに環境構築すると、ミスがでたり時間がかかったりします。 そこで、DockerfileやDocker Composeを使うことで、開発者間で環境の設定を共有できるので環境構築の手間を省くことができます。
通常の環境構築
Dockerを使った環境構築
Docker Composeとは?
複数のコンテナをまとめて管理するツールのことです。コンテナを起動するためには、起動コマンドを実行する必要があります。しかし、複数のコンテナからなるシステムの場合、それぞれ起動コマンドを実行するのですが、コマンドや手順が複雑になりとても大変です。そこで活躍するのが、「Docker Compose」です。複数のコンテナの定義を「docker-compose.yml」というファイルに記述し、シンプルなコマンドで管理ができるようになります。
Dockerを使う場合と使わない場合の比較
また、アプリケーションの導入やパッケージの導入の際、Dockerがあるととても便利です。Dockerを使わない場合は、インストーラを起動してエラーがでてしまうと、そのたびにエラーの原因を調べてもう一度起動させてと時間がかかってしまいます。Dockerがあれば、コンテナを起動するだけで使うことができるので、時間の短縮ができます。
まとめ
Dockerについて、イラストを用いながら解説させていただきました。
今回の記事の内容は基礎的な部分ですが、Dockerを触るのに欠かせない知識になります。
次回は、実際にDockerを触って解説していきます。