図や例を用いてDockerとは何かについて解説していきます。
モグモグさん
入門用のチュートリアルもあるので、
理解を深めたい方は一緒にやってみましょう!
Dockerはエンジニアはもちろんその他の職種の方々(デザイナーさんやテスターさんなど)でも使えると非常に便利なので簡単な使い方を覚えておくといいと思います。
Dockerとは何か、何ができるのか
Dockerとは何か
Dockerとは、Docker社が開発している仮想環境を作成・実行・配布するためのプラットフォームでありツールです。
仮想環境とは1つの環境で複数の環境を作成することをいいます。
例えば、皆さんのPCやスマホは1つのOS(オペレーションシステム)で動いていますが、そのOSの中に複数の環境を作るようなイメージです。
仮想環境(仮想化)の概念は、高価だったサーバーを効率よく使うために必要不可欠だったため前からあり、ツールも存在していました。
それではDockerは何が特徴で何が良いのでしょうか?
特徴1 コンテナ型
大きな特徴の1つは、コンテナ型 であるということです。
従来は、ハイパーバイザー型やホスト型がメインで利用されていましたが、リソースを非効率に利用する構造なので速度が遅かったり負荷がかかったりします。
こちらで紹介しているVagrant(VirtualBox)はホスト型にあたります。
一方、コンテナ型はホストOS上に直接存在する構造なのでリソースを効率的に利用することができます。
つまりDockerは、コンテナ型の仮想環境を作成し、他に比べて軽量というのが大きな特徴の1つです。
特徴2 プラットフォーム化
特徴の2つめは、プラットフォーム化している点です。
Dockerは環境の設定をコード化することができます。そうすることで常に同じ環境を作ることができますし、他の人も自分と同じ環境をすぐに作成できます。
またDockerhubを利用して、自分の設定ファイルを世界中の人に配布できたり世界中の人の環境をすぐに自分も作成することができます。
このように、コンテナ型の環境を作れるだけではなく、作成・実行・配布が自在にできるようにプラットフォーム化している点が特徴であり多くの人が利用している理由の1つになります。
何ができるのか
Dockerの概念や特徴を理解した上で、よく使われるケースを用いて何ができるのかを説明します。
1. チームでの開発環境作成・共有
チームでの開発をする時に、同じ開発環境をすぐに作成できてかつ共有できるので多く使われます。
2. 本番環境
開発環境と同じ環境をそのまま本番環境にも使えるので、本番環境でも利用することができます。
Dockerの特徴としてすぐに壊したり再度作成したりができるので、柔軟に構成できるところも良い点です。
ただし、中規模や大規模なアプリケーションになると複数の環境が生まれるので管理が難しくなります。そのためにオーケストレーションツールなどがあり組み合わせて使われます。
3. さくっと試す用の環境
Dockerを使えば、Ruby用の環境を用意したり、機械学習用の環境を用意したりとコマンド一つでできるので何かコードを試したりテストしたりするのにも多く使われます。
入門チュートリアル
ここまでで、Dockerとは何かについて掴めてきたでしょうか?
ここからは実際に環境を作るチュートリアルを行って、触りながら入門していきましょう。
Dockerをインストール
まずは、皆さんの環境にDockerをインストールする必要がありますのでその手順を説明します。
すでにインストールしている場合はスキップしてください!
1 公式サイトからDockerをダウンロードする
2 左下の「Download for Mac」もしくは 「Download for Windows」でインストール
インストール完了です。
Webサーバー
それでは、NginxというWebサーバーの環境を作成しましょう。
console画面で、コマンドを実行します。
$ docker run --name web-nginx -d -p 8080:80 nginx
完了後、ブラウザで http://localhost:8080/
にアクセスしてください。
すると、Nginxの画面が表示されています。
あっというまに環境が作成できました。
docker-runをすることで内部ではこんなことが起こりました。
図で表します。
基本的な流れは、この通りです。
1 環境の設定が詰まったDockerイメージを取得する(Dockerファイルを作成し自分で作ることも可能です)
2 それをもとに実際の環境コンテナを作成する
つまりイメージをもとにコンテナを作成していき、環境を作っていくということになります。
まとめ
Dockerとは何かについて理解できたでしょうか?
Dockerは主流になっていますし、とても便利なので積極的に使えるようになると楽で楽しくなると思います。