Docker(ドッカー)とは? 初心者にもわかりやすく解説します

#エンジニアブログ

 

Docker(ドッカー)は、アプリケーションを開発する際、1台のサーバーにさまざまなアプリケーションの実行環境を構築するための仮想化技術です。

 

仮想化技術とは1台のサーバーで複数のOSを動かす技術のこと。限られたリソースを有効活用するための技術として、主にインフラ関係やDevOps関連から注目されています。

 

ここでは、Dockerがどのような技術かといった基本から、構成する要素や学習方法、簡単な基本コマンドなどを初心者にもわかりやすく解説します。

 

Dockerとは?

 

Dockerは、カリフォルニアのDocker社が開発している仮想化技術のプラットフォームです。Dockerを利用することで、1つのサーバー上でさまざまなアプリケーションを仮想化・実行できるようになります。

 

「PaaS(Platform as a Service)」と呼ばれるものの一種で、アプリケーション開発などに必要なプラットフォームを、クラウド上で利用できるサービスに分類されます。

 

Dockerの特徴は、Linuxの技術を使った「コンテナ型」と呼ばれる仮想化技術であることです。他の仮想化技術では必須となる「ゲストOS」が不要となり、それに伴ってCPUやメモリ、ストレージなどのリソースを必要としません。

 

Dockerを使うメリット

Dockerは従来の仮想マシンよりも軽量に動作し環境構築がスムーズに行えます。主なメリットを紹介します。

 

動作が軽量・高速

Dockerがよく比較されるものとして仮想マシンがあります。

 

Dockerも仮想マシンの一種ですが、ホストマシン上でゲストOSを動かした上でミドルウェアを動かすホスト型やハイパーバイザー型と違い、「コンテナ型」と呼ばれる仮想化技術を使っていることが特徴です。

 

コンテナ型のDockerはホストマシンのカーネルを利用します。これにより、別のマシンが動いているような挙動を実現し、軽量かつ高速な動作を可能としています。

 

環境を共有しやすい

Dockerは、IaC(Infrastracture as Code)と呼ばれる技術で、環境設定やミドルウェアのインストールをコード化して管理します。これにより、どこでも同じ環境が作れます。

 

例えば、開発工程からDockerを使うことで、Windowsで開発していたアプリケーションがLinuxで動かないといったケースを防ぎやすくなるでしょう。開発環境をそのまま本番環境に持って行くこともできるため、環境による影響を減らせることが特徴です。

 

環境が構築しやすい

Dockerで作った環境は、他の人に渡して使ってもらうこともできます。開発環境の準備にかかる時間を大幅に短縮し、各自の作業環境のバージョンのずれも防止できます。

 

さらに、起動するコンテナ名を変えるだけで複数のコンテナを起動できるため、クラスタ構成の構築が容易になり環境構築の手間が大幅に省けます。

 

各自の環境への依存度が減ることにより、新規メンバーへの説明にかかる時間や、環境の準備にかかる手間を削減できるため、規模が拡大してゆくチームでは特に役立つでしょう。

 

Dockerを構成する要素

 

 

Dockerを構成する主な要素である「コンテナ」「Dockerイメージ」「Dockerfile」「Docker Hub」について詳細に解説します。

 

コンテナ

Dockerの中核となる「コンテナ」は、アプリケーションとその実行に必要なライブラリ、設定ファイルなどをひとまとめにした実行環境(仮想環境)です。Dockerでは専用のコマンドでコンテナを作成し、アプリケーションを動作させます。

 

Dockerコンテナは独立していて他のDockerコンテナに影響を与えません。また、ホストとなる環境にも依存しません。

 

Dockerイメージ

Dockerイメージは、コンテナの動作環境についてまとめたテンプレートファイルで、アプリケーション実行用のコマンドやメタデータなどを含みます。”docker container run” というコマンドでイメージからコンテナを作成できます。

 

Dockerイメージはコンテナの設計図にあたるもので、複数のレイヤーからなります。Dockerを使う開発者の主な仕事はDockerイメージの作成といっても過言ではありません。

 

Dockerfile

Dockerfileは、Dockerイメージを作るための設計図に当たるテキストファイルです。 ”docker image build”というコマンドを使い利用します。

 

DockerHubから各イメージのベースを引っ張ってこれるため、Dockerイメージを一から作る必要はありません。Dockerfileは、そのベースに乗せるライブラリのインストール設定を記述する作業などに用いられます。

 

Dockerレジストリ(DockerHub)

Dockerレジストリは、Dockerイメージを保存・共有するための場所です。Dockerイメージを作る際はここから引っ張り出して使います。

 

DockerHubはDocker公式のレジストリで、さまざまなDockerイメージが公開されています。ユーザーはそれらを利用することで、Docker上で簡単に実行環境を構築できます。

 

Dockerを学習する方法

 

画像出典:dockerdocs

 

Dockerを学習するには、公式ドキュメントの利用に加え、書籍で体系的に学習することがおすすめです。また、Linuxの知識が必須となります。

 

Docker公式ドキュメントを利用する

Dockerでは初心者から上級者まで役立つ情報を掲載した公式ドキュメントを用意しています。Dockerに関する最新かつ正確な情報が得られるため、他の学習方法と併用するのもおすすめです。

 

公式には日本語版がありませんが、有志による日本語翻訳サイトがあります。チュートリアルやコマンド解説も豊富で、基礎的な知識を学ぶために役立つでしょう。Dockerを学習するなら最初に活用を検討することをおすすめします。

 

出典:dockerdocs

出典:Docker-docs-ja

 

書籍で学習する

Dockerは概念や全体像を理解するのがやや難しいため、専門書籍で体系的に学習することもおすすめです。初心者向けや中級者向けなどの書籍が発刊されているので、自分のスキルレベルに書籍を選びましょう。

 

Linuxの知識は必須

DockerはLinuxのコンテナ技術を使っているため、操作にはLinuxのコマンド操作が必要になります。そのため、Dockerを使う上でLinuxの基礎知識は必須です。

 

Linuxの基本やコンポーネントに関する知識があればDockerの学習に役立ちます。最初にDockerで使用する機会の多いLinuxのコマンド操作を覚えるとよいでしょう。

 

Dockerを利用するための準備

 

画像出典:Docker Hub

 

Dockerを利用するには、公式サイトからダウンロードしてMac / PC にインストールし、DockerHubへの登録も必要です。

 

Dockerのインストール

Dockerには無料版と有料版があります。

 

無料版は「Docker Community Edition(Docker CE)」、有料版は「Docker Enterprise Edition(Docker EE)」です。名前の通り法人向けは有料版のみとなっています。

 

個人向けとなる無料版の「Docker Community Edition」は、Mac版はこちらから、Windows版はこちらからダウンロードが可能です。

 

出典:Install Docker Desktop on Mac|dockerdocs

出典:Install Docker Desktop on Windows|dockerdocs

 

Docker Hubへの登録

Dockerイメージを共有・管理するためには、Docker Hubへの登録が必要です。まずはDocker Hubにアクセスして、サービスに登録します。

 

アカウントを作成したら、Macならターミナル、Windowsならコマンドプロントで “docker login” を入力、実行します。ここで、先ほどDockerHubに登録した際の「username」と「パスワード」を入力し、ログインできれば完了です。

 

Dockerでよく使う基本コマンド

DockerのコマンドはLinuxのルールに基づいています。ここではDockerでよく使われる基本的なコマンドを紹介します。

 

コンテナ操作用のコマンド

目的 コマンド名 コマンド
コンテナの起動 start docker container start コンテナ名
コンテナの停止 stop docker container stop コンテナ名
コンテナの強制停止 kill docker container kill コンテナ名
コンテナの削除 rm docker container rm コンテナ名
コンテナの再起動 restart docker container restart コンテナ名
コンテナの一覧表示 ls docker container ls -a

 

Dockerイメージ管理用のコマンド

目的 コマンド名 コマンド
Dockerイメージを「DockerHub」からダウンロード pull docker image pull イメージ名
Dockerイメージを「DockerHub」へアップロード push docker image push イメージ名
Dockerイメージを一覧表示 ls docker image ls
Dockerイメージを削除 rm docker image rm イメージ名

 

その他のコマンド

目的 コマンド名 コマンド
Dockerのバージョン表示 version docker version
Dockerイメージの検索 search docker search  イメージ名

 

Dockerの注意点

 

メリットの多いDockerですが注意点もあります。代表的なものはセキュリティと競合サービスの台頭です。

 

セキュリティの脆弱性

Dockerはハッカーなどの攻撃者に狙われる可能性が比較的高いと考えられています。攻撃者にとってユーザー数が多いことは大きな魅力となっており、Docker側に悪用しやすい部分があることも指摘されています。

 

セキュリティを確保するためには、定期的なDockerイメージのスキャン、サプライチェーンの監視などの対策が必要です。Docker社では見つかった脆弱性に対してパッチをリリースしているため、常に最新の状態を保つことも重要になります。

 

競合サービスの成長

Dockerはコンテナ型の仮想環境を作成・配布・実行するプラットフォームの先駆者で、長らく覇権を握っていました。しかし、最近はOrbStackをはじめとした後発サービスが成長したほか、オープンソースのサービスも多数登場しています。

 

依然としてDockerのシェアは高いものの、今後はDocker一強ではなくなると考えられており、シェアが少しずつ低下していく可能性があります。

 

まとめ

今回は、Dockerの構成要素やメリットなどの概要に加え、学習方法やインストール手順、基本的なコマンドについて紹介しました。

 

Dockerは、開発環境の構築と管理を効率化するツールです。ここでの内容を参考に、DockerのインストールとDocker Hubへの登録を行い、実際にコンテナの作成や操作を試してみることをおすすめします。

 

深く学びたい方は、公式ドキュメントや書籍を活用し、Linuxの知識も併せて学習することで、Dockerをより効果的に活用できるようになるでしょう。

関連する記事