Docker(ドッカー)とは?

Apricot Web System

- Web application

Dockerとは

Dockerとは、非常に動作が軽量なコンテナ型のアプリケーション実行環境のことです。従来のホスト型やハイパーバイザー型は動作が遅いというデメリットがありましたが、コンテナ型は処理が軽量な仕組みになっているためストレスなく環境の構築や開発を進められます。同じ環境をほかの開発者が簡単に構築できる特徴もあり、Dockerを活用する場面は増えてきました。そこで今回は、Dockerの基本情報や導入すべき理由、環境構築の流れ、利用頻度が高いコマンドについて紹介します。

1

Docker(ドッカー)とは?仮想化技術との関係性は?

Dockerとは、Docker社が開発するコンテナ型のアプリケーション実行環境です。コンテナ型とは仮想化技術のことで、1つの物理マシン上に多数の独立した仮想環境を立ち上げることができます。

仮想化技術にはホスト型とハイパーバイザー型、コンテナ型の3種類があります。

ホスト型

ホスト型は、OS上に土台の仮想化ソフトウェアをインストールして、仮想マシンを稼働させる方法です。すでに動作しているコンピュータの中に仮想マシンを作るため、ハードウェアに負荷がかかり、動作が遅くなるデメリットがあります。

ハイパーバイザー型

ハイパーバイザー型は、ホストOSが不要になるため、ハードウェアを直接制御できます。そのため、処理速度の低下を最小限に抑えることができます。一般的にホスト型と比較すると速いですが、やはり動作の遅いことがデメリットです。

コンテナ型

コンテナ型では、OSが1つのみ存在しており、OSの中にアプリケーションをを実行するための領域(ユーザー空間)が複数用意された構成になっています。OS が限られているためOSのカスタマイズ性はありませんが、複数のOSをその都度立ち上げる必要がないため、ホスト型やハイパーバイザー型と比較すると動作が速い特徴があります。

Dockerはコンテナ型の仮想環境を作成、配布、実行するプラットフォームです。素早く簡単に同じ環境の構築ができるため、開発者にとって有難い技術といえるでしょう。

2

Dockerの重要な4つの要素

Dockerを使用する前に、イメージやコンテナ、Docker Hub、Dockerfileと呼ばれる4つの要素を押さえておきましょう。

  • 1, ~Doclerイメージ~コンテナのもとになる
  • 2, ~コンテナ~サーバーのような存在
  • 3, ~Docker Hub~イメージを共有する
  • 4, ~Dockerfile~自分でイメージを作成

4つの要素を理解するとDockerの原理がわかり、操作や環境の構築が簡単に行えるようになります。

1.~Dockerイメージ~コンテナのもとになる

「Dockerイメージ」とは、コンテナを立ち上げるために必要な設定がまとめられたテンプレートのことです。

アプリケーションを実行する際に必要な変数やコマンド、メタデータも含まれています。本来はソフトウェアをインストールした後に、初期設定をはじめ細かなカスタマイズをする必要がありますが、イメージを使うことで細かな設定を省略できます。

2.~コンテナ~サーバーのような存在

コンテナとは、Dockerイメージから生成した仮想サーバーのことです。

コンテナは、CentOSやUbuntuなどのOSをはじめ、WebサーバーやDBサーバー、アプリケーションまで様々な環境を作ることができます。

3.~Docker Hub~Dockerイメージを共有する

Docker Hubとは、ユーザーが作ったイメージをアップロードして提供や共有、管理ができるサービスのことです。

フリーのソフトウェアのイメージをはじめ、個人によって作成されたイメージも公開されており、自分が作成したイメージの提供も行えます。

Docker Hubは、Docker社が営利目的で開発・運営しているサービスですが、提供しているDockerイメージは無料で自由にダウンロードが可能です。ダウンロードする方法は、コンテナからDocker Hubにアクセスしてデプロイするだけで簡単に開発環境の構築を行えます。

4.~Dockerfile~自分でDockerイメージを作成

Dockerfile(ドッカーファイル)とは、Dockerイメージの設計図のことをいいます。Dockerイメージを新規に作成するための手順を記したテキストファイルで、プログラムを動作させるサーバーやミドルウェア、コマンドなどの情報を記載します。

Dockerfileを作成するメリットは、一連の手順を自動化できたり自分の好きなようにカスタマイズできたりすることです。また、共有すると複数人が簡単に同じ環境を構築できるため、大勢で開発を行う際に活用しましょう。Dockerfileの作り方をはじめ、環境を構築する流れについては後述するため、ぜひご参照ください。

3

【メリット解説】Dockerを導入すべき理由は?

次にDockerを導入すべき3つの理由について紹介します。

  • ● 動作が軽くて使いやすい
  • ● 共有しやすく分担作業に最適
  • ● 環境構築が簡単にできる

Dockerは動作が軽くて使いやすい特徴があり、ストレスなく作業を進めることが可能です。共有のしやすさや環境構築のしやすさなど導入すべき理由を詳しく解説するため、Dockerの導入を検討されている方はぜひご参照ください。

●動作が軽くて使いやすい

Dockerは、コンテナ型の仮想化技術の仕組みが使われています。仮想化技術にはホスト型とハイパーバイザー型、コンテナ型があり、従来のホスト型やハイパーバイザー型は動作が遅いというデメリットがありました。しかし、コンテナ型ではコンテナという構築環境を作成して、その中でミドルウェアやアプリケーションを動かします。

コンテナの中で環境を完結させているため、負荷が小さく高速な動作が実現しました。ストレスが少なく作業を進めることができるのは、開発をするうえで大きなメリットになります。

そのため、仮想化技術を利用して開発を進める場合は、コンテナ型のDockerの導入がおすすめです。

●共有しやすく分担作業に最適

Dockerは、Dockerfileを利用すると同じ開発環境を簡単に作ることができます。複数の開発者と分担して作業する時や、開発途中で新しい開発者を追加した時など、イメージを渡すだけで同じ環境を簡単に構築することが可能です。

そのため、Dockerは共有や分担作業がしやすい非常に便利なプラットフォームとして、多くの開発現場で使われています。

●環境構築が簡単にできる

Dockerイメージを共有できるDocker Hubがあるため、開発環境を簡単に構築できます。Docker HubからDockerイメージをダウンロードして利用すれば、簡単に環境を構築することが可能です。また、すでにDockerイメージで開発環境を構築している場合、Dockerイメージを共有するだけですぐに同じ環境の構築が行えます。逆に、開発環境を作り直したい場合は、コンテナを削除するだけで作り直し作業に進めます。

4

Dockerを動かしてみよう

次にDockerを動かしてみましょう。

  • 1, ファイルを作成する
  • 2, イメージを作成する
  • 3, コンテナを起動する

Dockerをインストールした後の工程のため、事前にインストールを行いましょう。コンテナを起動させてWebサーバーを使えるように設定する工程を紹介します。

1.ファイルを作成する

まずはDockerfileのファイル作成を行います。Dockerfileは、イメージを作成するための設定値が書かれたテキストファイルのことで、テキストエディタやIDEを使って書きます。

2.イメージを作成する

次にDockerfileからDockerイメージの作成を行います。「docker build」コマンドを実行しましょう。

イメージは、Docker Hubからダウンロードして利用することも可能です。既存のファイルを使用するため、イメージを作る手間を減らせます。Dockerの使い方に慣れたら試してみましょう。

3.コンテナを起動する

最後に作成したイメージで、コンテナの起動を行ってみましょう。コンテナの起動は「docker run」コマンドを使用します。

おおまかな流れは上記のとおりです。それでは実際に以下のコマンドを実行してWebサーバーを立ててみましょう。

				
					docker run –name some-nginx -d -p 8080:80 nginx
				
			

「-p」のオプションは、ローカルPCのポートとコンテナのポートを結びつけています。つまり上記のコマンドで、ローカルPCの8080番ポートとコンテナの80番ポートをマッピングしました。この1行だけで、NginxのDockerイメージを取得したうえでコンテナ起動、コンテナの中でNginxを起動しました。ブラウザに「http://ご自身のIPアドレス:8080」と入力して、Webページが表示されたらコンテナの起動は成功です。

Dockerfileやイメージを作成して使用するだけで、コンテナを起動すると簡単に環境を構築できるのがDockerの魅力といえるでしょう。

5

Dockerで使用頻度が高いコマンド

続いては、特に使用頻度が高いコマンドについて紹介します。Dockerの環境を構築する手順で、いくつかコマンドが出てきました。Dockerでは環境を構築する時以外にもコマンドを使う頻度が高いです。

コンテナの起動やイメージの作成などDockerfileやイメージを作成して使用、先ほど使用したコマンドもご紹介します。

コマンドコマンド記述例説明
docker run$ docker run コンテナ指定コンテナを起動する
docker start/stop/restart$ docker start コンテナ指定
$ docker stop コンテナ指定
$ docker restart コンテナ指定
コンテナを開始・停止・再起動など操作する
docker exec$ docker exec コンテナ指定 コマンド起動中のコンテナ内でコマンドを実行する
docker container ls$ docker container lsコンテナの一覧を表示する
docker rm$ docker rm コンテナ指定停止中のコンテナを削除する
docker images$ docker imagesローカルのイメージをすべて表示する
docker rmi$ docker rmi イメージ指定Dockerイメージを削除する
docker build$ docker build DockerfileパスDockerfileからイメージを作成する
docker logs$ docker logs コンテナ指定コンテナのログを出力する
docker search$ docker search 検索するイメージ名Docker Hubに公開されているDockerイメージを検索する
docker image pull$ docker image pull リポジトリ名Docker Hubからイメージをダウンロードする

主要なコマンドは上記のとおりです。実際にDockerを使っているうちに自然と覚えるため、最初から完璧にする必要はありませんが、効率良く作業するために、少しずつ覚えていきましょう。

まとめ

ここまで、コンテナ型のアプリケーション実行環境のDockerについて紹介しました。Dockerは非常に動きが速く開発環境の構築も簡単なため、ストレスなく開発を進めることができます。複数人で開発を進める時や途中で新しい開発者を追加する時など、イメージを渡すだけで同じ環境を構築できるため、共同作業に適した便利なプラットフォームです。

Follow me on social media

Let's connect