【Docker入門】Dockerとは?基礎の基礎をわかりやすく紹介

docker

こんにちは!システムエンジニアのオオイシです。

Dockerをご存知ですか?

Dockerとは、非常に軽量なコンテナ型の仮想化環境です。

Dockerを使うと、従来のVirtual Boxなどの仮想環境と比較して、

  • 軽量で起動が早い!
  • 少ないメモリやディスクなどの資源で動作する
  • 誰にでもに配布・共有が可能
  • 破棄して再利用がカンタン
  • サーバーのスケール(サーバーの台数の増減)も簡単に設定できる

などの特徴があります。

そのため、

ベテランエンジニア

開発環境の構築にもう3日もかかった。。

テスト環境で動いたのに本番環境でエラーが発生した!?

年末のイベントで急にサーバーの増強が必要だけど、そんな予算はない!

なんてことは、Dockerを使うと無くなるかもしれません。

そんな、Dockerの使い方の基礎についてわかりやすく解説していきます。

Dockerとは?

Dockerとは、コンテナ型の仮想化環境のことです。

従来のVM WareVirtual Boxなどのホスト型の仮想化技術と比較すると、仮想的なハードウェア上にLinuxなどのOSをインストールして動作させる方法では、本来必要のないプロセスを実行するオーバーヘッドが必要になるため、起動が遅いしメモリなどの資源もたくさん使います。

Dockerの場合は、Linuxのカーネルのコンテナ技術を使って、ホストOSから直接1プロセスで実行するため軽量です。

Dockerでは、Docker Engine上で動作するアプリケーションの単位を、コンテナ(Container)と呼びます。

コンテナ(Container)とは、Apache・MySQLやシェルのコマンドなどのアプリケーションをラップする入れ物と考えるとイメージしやすいかもしれません。

次項では、そんな、Dockerを体験してみましょう!

Dockerをインストール

まず、はじめにDockerのインストールをします。

特に難しい手順はないため、公式サイトしたがってインストールしてください。

Install Docker for Mac

https://docs.docker.com/docker-for-mac/install/

Install Docker for Windows

https://docs.docker.com/docker-for-windows/install/

インストールが完了して、起動するとこのようにかわいいアイコンが表示されます。

次項では、Dockerを体験する方法について解説していきます。

DockerでHello world を実行してみよう

Dockerがインストールできたことを確認するために、Dockerコンテナを作成して、コンソール上に”Hello world“を echo コマンドで表示するサンプルについて解説していきます。

Dockerコンテナを作成し実行するには「docker container run」コマンドを使います。

コマンド解説

docker container run Dockerイメージ名① コマンド②

① Docker実行の元となるファイル。今回はCentOS7を指定
② コンテナ(CentOS7)に渡すコマンド

それでは、実行してみましょう。

いろいろよくわからないメッセージが出ましたが、最後に”Hello World“が表示することができました!

初回はちょっと時間がかかりますが、これは、CentoOS7のイメージをダウンロードするためで、2回目から早く起動することができます。

 

このように、2回目以降は、ローカル環境のDockerイメージがキャッシュされるので、結果のみが表示されます。

次項では、Dockerでどのように実行されたか解説します。

DockerでHello world はどのように実行されるか

前項では「docker container run centos:centos7 /bin/echo ‘Hello World’」で”Hello World“を表示するサンプルを実行してみました。

ここでは、Dockerで”Hello World”をどのようにして表示しているのかの概要を解説します。

大まかには、

  1. ローカル環境にCentoOS7のdockerイメージ(アプリ実行の元ファイル)があるかを確認して、なければネット経由でダウンロードする
  2. CentoOS7のDockerイメージからのコンテナを作成する
  3. コンテナからechoコマンドを実行する

のような流れになります。

dockerコンテナはdockerイメージのスナップショット(ある時点のコピー)です。

コピーと言ってもdockerイメージがそのままコピーされるのではなく「echo “Hello World”」コマンドの差分のみを情報なので、起動がとても早くてファイルサイズも小さくなります。

実行するときは1つのコンテナが1プロセスとして「echo “Hello World”」ホストOSから直接起動するので、起動がとても早いのです。

大まかな仕組みを理解いただけたと思うので、次項では、特に重要な用語について解説していきます。

Dockerでよく出てくる用語

よく使われるDockerの用語について簡単にまとめておきます。

Docker Image

Dockerイメージはコンテナを動かすためソフトウェア元ネタです。

アプリケーションのファイル構成、実行の方法、ミドルウェアなどの情報が入っています。

Docker Container

Dockerがアプリケーションを実行するための最小単位の入れ物です。

DockerイメージからのスナップショットがDocker Containerです。

Docker Registory(イメージの公開と共有)

Dockerイメージの公開・共有するためのレジストリです。

Git HubのDocker版のイメージです。

代表的なものにDocker Hubがあります。

Docker Compose(複数のコンテナの連携)

Docker Composeは、複数のコンテナを一元管理するための仕組みです。

DockerコンテナはWebサーバーやデータベースを1つの単位とした入れ物ですが、それ単体では、アプリーションとして機能使うことは稀で、例えば、

  • WEBサーバー
  • DBサーバー
  • アプリケーションサーバー
  • KVM
  • ログ収集

など、それぞれのアプリケーションを連携する場合に、構成情報を管理します。

Docker Machine(クラウドを含む実行環境)

Dokerコンテナを実行する環境をAWS、Azuru、GCPなどのクラウドなどに自動構築するためのツールです。

Kubernetes(オーケストレーション)

Kubernetes(クーバネティス)とは、Googlesが手動で開発を進めるオーケストレーションツールです。

オーケストレーションツールとは、分散環境などで、サービス全体のデプロイや実行を自動化するための仕組みです。

例えば、一時的なサーバー負荷が発生した時に自動的にサーバーをスケールアップしたり、システム開発のデプロイの自動化などに役立てます。

まとめ

いかがでしたか?

Dockerは軽量なコンテナ型の仮想化環境です。

Dockerを使うとアプリケーションの起動が早く、メモリやディスクなどの資源も少なくて済むなどの特徴があります。

この記事を機会にDockerについて勉強してみてはいかがでしょうか!?