【基本】Dockerのインストール方法を一から丁寧に解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年8月)

✔当記事はどんな人に向けて書かれているのか?

「Dockerを始めたい。インストール方法を教えて」

「Dockerインストールの段取りを順序立てて知りたい」

「Dockerインストールの具体的手順を確認したい」

✔当記事を通じて伝えたいこと

  • Dockerのインストールにおける基本プロセス
  • Dockerのインストール方法とその進行手順
  • Dockerのインストールの具体的なステップ

当記事では、Dockerのインストールの基本ガイドから、その詳細な手順まで、明瞭な例で一緒に解説していきます。

Dockerを始めるにあたっての準備を始めましょう。

ぜひ最後までご覧ください。

動画でも解説してます。動画では実際にコンテナを動かしている様子が見れるので、初めての方でもイメージが湧きやすいはず。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

導入:Dockerの基本知識

当記事では、Dockerの基本的な知識をお伝えします。

これらの知識を身につけることで、Dockerの全体像を把握し、インストール後の習得も早まるでしょう。

  • Dockerとは?
  • Dockerの重要な特性
  • Dockerがもたらす価値
  • Dockerの主な利用シーン

Dockerとは?

Dockerとは、ソフトウェア開発において、アプリケーションをコンテナ内で実行するためのプラットフォームのこと。

コンテナは、以下のようなプログラムの実行に必要なすべてをパッケージ化する軽量な技術です。

  • アプリケーション
  • ライブラリ
  • システムツール

仮想マシンよりも効率的にリソースを使用する特徴があります。

Dockerによって、開発者はアプリケーションを個別のコンテナに包み、どんな環境でも同じように動作させられます。

「このマシンでは動作するけど、あのマシンでは動作しない」といった問題を解消し、開発、テスト、本番環境間での一貫性を高められる仕組みです。

Dockerの重要な特性

Dockerの主な特性として、その移植性と柔軟性が挙げられます。

  • 移植性:コンテナ化により、アプリケーションは環境に左右されることなくどこでも動作する
  • 柔軟性:開発からステージング、本番環境への移行が容易になる

OSなどが異なる環境でも、Dockerのコンテナ内は同じ環境となるのです。

Dockerがもたらす価値

Dockerがもたらす価値の中で際立つのは、「効率性」と「スケーラビリティ」です。

  • 効率性:環境構築の時間を大幅に短縮し、開発者がアプリケーションの開発に専念できる
  • スケーラビリティ:コンテナは簡単に作成・削除・置換できるので、アプリケーションのスケールアップが容易

Dockerは覚えるのに多少の労力がかかりますが、一度覚えれば作業効率はグンとアップします。

Dockerの主な利用シーン

Dockerの主な利用シーンは多岐にわたります。

以下でその例をそれぞれご紹介します。

  • 開発環境の標準化
  • マイクロサービスアーキテクチャ
  • 連続インテグレーション/連続デリバリー(CI/CD)パイプライン

開発環境の標準化

開発者は各自異なるマシンやOSを使用していることが多く、その差異によって予期せぬ問題が発生します。

Dockerを使用すると、全ての開発者が同じコンテナイメージを使用するため、開発環境が一貫します。

ある企業がPythonのウェブアプリケーションを開発しているとします。開発者はDockerコンテナ内で必要なPythonバージョンとライブラリを揃えるため、誰もが同じ環境で開発でき、OSやローカルの設定の違いによる問題を排除できるのです。

マイクロサービスアーキテクチャ

大規模なアプリケーションを小さなサービスに分割して開発・運用するマイクロサービスアーキテクチャは、Dockerと非常に相性が良いです。

各サービスを個別のコンテナで管理することで、開発、デプロイ、スケーリングが容易になります。

オンライン小売業者が商品管理、在庫管理、注文処理などの異なるサービスをそれぞれ個別のDockerコンテナで構築・運用。各サービスの開発とデプロイを独立させ、柔軟にシステムを拡張します。

連続インテグレーション/連続デリバリー(CI/CD)パイプライン

Dockerを使うと、開発からテスト、本番デプロイまでの一連のプロセスを自動化し、一貫性を確保することが可能。

コンテナは各ステップ間で共通であるため、予期せぬエラーを減らせます。

あるウェブサービス企業が、GitHubとJenkinsを使ってCI/CDパイプラインを設定しています。コードの変更がマージされると、自動的にDockerコンテナ上でビルド、テストがおこなわれ、成功した場合は本番環境へ自動でデプロイされます。開発とリリースのサイクルを大幅に高速化します。

事前準備:Dockerインストールの前提条件

Dockerをインストールする前に準備するべきことを解説します。

これらの前提条件をクリアしておくことで、Dockerのインストールはスムーズにおこなわれ、その後の利用も円滑になるのです。

  • 必要なハードウェアのスペック
  • 対応するOSの確認
  • ネットワーク接続の必要性
  • 事前に知っておくべき知識

必要なハードウェアのスペック

Dockerを実行するには、一定のハードウェアスペックが必要です。

Windowsであれば、以下のような要件が公表されています。

  • Windows 10 64 ビット:Pro、Enterprise、Education版
  • システムメモリ:4GB以上

(参考:https://docs.docker.jp/docker-for-windows/install.html

それぞれのOSに合わせたスペックを確認しましょう。

対応するOSの確認

Dockerは、WindowsやMac、Linuxで使用可能です。

Docker CLIやDocker Desktopなど、それぞれのOSに合わせたもので使用できます。

Docker Desktop 概要 — Docker-docs-ja 24.0 ドキュメント

しかしOSごとにサポートされる機能やパフォーマンスが異なるため、適切なバージョンを選択することが重要です。

ネットワーク接続の必要性

Dockerを準備・使用するためにはネットワーク接続が必要です。

以下のような用途で、ネットワーク接続が使われます

  • Dockerのインストールやアップデート
  • コンテナイメージのダウンロード
  • Dockerコンテナが外部サービスと通信する

一度イメージがダウンロードされれば、その後の操作はオフラインでも可能なものの、インターネット環境は、自由に使える場所が良いでしょう。

事前に知っておくべき知識

Dockerを効果的に使用するには、以下のような知識をもっておきしょう。

  • Linuxの基本的な操作
  • ネットワークの知識
  • 一般的なソフトウェア開発のプラクティス

とくに、コマンドラインインターフェース(CLI)の使用経験はDockerの操作に不可欠です。

Linuxのコマンドについてはこちらをご覧ください。

Linux/Ubuntu
Linux/Ubuntuについての基本を身につけたいですか?Webサーバーなどを構築するためのOS「Linux」についての基本を解説している記事をまとめています。初学者の方は一度でも目を通しておくことをオススメします。

ネットワークについても基本的な用語などを説明しています。

ネットワーク
「ネットワーク」の記事一覧です。

インストール:Docker導入の種類とその手法

次に、Dockerのインストールについて詳しく説明します。

それぞれの手順を把握し、自身の環境に合わせて適切なインストール方法を選びましょう。

  • Docker Desktopとは
  • Docker Desktopのインストール方法
  • Docker Engineのインストール方法
  • Dockerの設定のカスタマイズ
  • 【アップグレード】Docker Engineの更新方法

Docker Desktopとは

Docker Desktopは、WindowsとMacOS向けに加えて、Linux版も追加された、DockerをGUIで操作できるツールです。

Dockerに関する以下のツールが含まれています。

公式ウェブサイトからダウンロードしたインストーラを用いて、簡単にインストールが可能です。

Docker Desktopのインストール方法

Docker Desktopのインストール方法を見ていきましょう。

各OSに適した方法を公式サイトよりご覧ください。

Windowsにおけるインストール方法

Windows に Docker Desktop をインストール — Docker-docs-ja 19.03 ドキュメント

Macにおけるインストール方法

Mac に Docker Desktop をインストール — Docker-docs-ja 24.0 ドキュメント

Linuxにおけるインストール方法

Linux に Docker Desktop をインストール — Docker-docs-ja 24.0 ドキュメント

Docker Engineのインストール方法

Docker Desktopを使うためにも、Docker Engineのインストールが必要です。

公式サイトを参考に、Docker Engineをインストールしてください。

例えばLinuxでは各ディストリビューションで以下を使います。

  • Ubuntu:aptコマンド
  • Fedora:dnfコマンド

また公式のインストールスクリプトも提供されており、これを用いれば一連のインストール手順を自動化できます。

Install Docker Engine
Learn how to choose the best method for you to install Docker Engine. This client-server application is available on Lin...

Dockerの設定:デーモン設定

Dockerデーモンの設定は、Dockerエンジンの動作を管理およびカスタマイズするための設定です。

デーモンとは、システムのバックグラウンドで動作し、コンテナの実行、管理、ネットワーキングなどの機能を提供するプロセスのこと。

Dockerデーモンの設定は、JSON形式の設定ファイルに記述されます。

以下はDockerデーモン設定の一般的な例です。

  • ログ設定:ログの出力形式やローテーションのルールを指定できる
  • ストレージドライバ:コンテナとイメージのデータをどのようにストアするかを設定する
  • ネットワーク設定:デフォルトのネットワークドライバやIPアドレス範囲などを設定できる
  • セキュリティ設定:ユーザー権限、TLS設定、セキュリティプロファイルなどをカスタマイズする

Dockerデーモンの設定ファイルの場所はシステムによって異なりますが、一般的には以下のようなパスに格納されることが多いです:

  • Linux上のDocker:/etc/docker/daemon.json・~/.docker/daemon.json
  • Windows上のDocker:C:\ProgramData\Docker\config\daemon.json

設定ファイルを変更した後は、変更を反映させるためにDockerデーモンを再起動しましょう。

Dockerデーモン設定の変更は、システム全体に影響を及ぼす場合があるため、変更前に設定をバックアップしたり、詳細なドキュメントを参照したりすることを推奨します。

【アップグレード】Docker Engineの更新方法

Docker Engineの更新は、インストール時と同様にパッケージマネージャを用いておこないます。

ただし更新前には現行のバージョンと新バージョンの互換性を確認し、必要なバックアップを取っておくことがおすすめです。

更新後には再起動が必要な場合があります。

確認:インストール完了後の確認と設定

Dockerのインストールが完了したら、次にその動作確認と初期設定をおこないましょう。

Dockerが正しく動作していることを確認し、必要な設定を施してください。

  • Docker Engineの動作確認
  • ユーザーをdockerグループに追加
  • Dockerの基本的な設定
  • Dockerの初期テストラン
  • 【追加機能】Docker Composeのインストール

Docker Engineの動作確認

Docker Engineが正しく動作していることを確認するために、docker versiondocker run hello-worldなどのコマンドを実行します。

docker --version
docker version
docker run hello-world
docker compose version

これらのコマンドが正常に完了すれば、Docker Engineは正しくインストールされています。

ユーザーをdockerグループに追加

上記のコマンドが上手くいかない場合、dockerグループにユーザーを所属させる必要があります。

$ sudo gpasswd -a $USER docker
ユーザ ユーザー名 をグループ docker に追加
$ sudo systemctl restart docker

完了したら再ログインで完了です。

Dockerの基本的な設定

Dockerの基本的な設定には、ネットワーク設定やストレージ設定、ログ設定などが含まれます。

これらの設定はDockerのデーモン設定で調整可能です。

{
	"builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } },
	"experimental": false,
	"features": { "buildkit": true }
}

特に、ネットワークとストレージの設定は、コンテナのパフォーマンスと機能に大きく影響するため、注意深く設定をおこないましょう。

Dockerの初期テストラン

Dockerの動作確認の一環として、初期テストランを実行します。

docker run hello-world

Dockerが正常に動作し、コンテナが起動していることを確認します。

出力は以下のとおりです。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385xxx44: Pull complete 
Digest: sha256:926fac19xxxxa2d60f1axxxxxxb765fbeea2db5dbdaafeb456ad8ce81598
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

これはDockerが正しくインストールされ、基本的な機能が動作することを確認するための重要なステップです。

【追加機能】Docker Composeのインストール

Docker Composeは、複数のコンテナを定義し、リンクさせるためのツールです。

特に複雑なアプリケーションを開発する際や、複数のサービスを同時に管理する必要がある場合には、このツールが非常に便利です。

Docker Composeは別途インストールする必要がありますが、Docker Desktopをインストールすれば自然とインストールされているはず。

$ docker compose version
Docker Compose version v2.20.2-desktop.1

アンインストール:Docker Engineの削除方法

Dockerをアンインストールする場合、または再インストールが必要な場合には、特定の手順を追う必要があります。

これらの手順に従えば、Dockerのアンインストールがスムーズにおこなえるでしょう。

  • Docker Engineのアンインストール手順
  • Docker関連ファイルのクリーンアップ
  • Dockerの再インストールの準備
  • Dockerのアンインストール時の注意点

Docker Engineのアンインストール手順

Docker Engineのアンインストールは、インストールとは逆の手順でおこないます。

各OSごとに指定されたパッケージマネージャを使用して、Docker Engineを削除します。

Linuxではaptdnfのパッケージマネージャを使用し、WindowsやMacではDocker Desktopを直接アンインストールします。

Install Docker Desktop on Ubuntu
Learn how to install, launch and upgrade Docker Desktop on Ubuntu. This quick guide will cover prerequisites, installati...

Docker関連ファイルのクリーンアップ

Dockerをアンインストールした後でも、一部のDocker関連ファイルはシステムに残る場合があります。

これらは主にコンテナやイメージ、ネットワーク、ボリュームに関するデータです。

これらのデータを削除するためには、docker system pruneといったコマンドを用いてクリーンアップを行います。

Dockerの再インストールの準備

アンインストールとクリーンアップを適切におこなったうえで、再度、事前準備とインストール手順を実行します。

一部の設定は再インストール前のバックアップがおすすめです。

例えば、特定のネットワーク設定やボリュームデータなどが挙げられます。

Dockerのアンインストール時の注意点

Dockerをアンインストールする際には、一部のデータが削除されるため、事前に適切なバックアップを取ることが重要です。

具体的には、作成したコンテナやイメージ、ボリュームのデータなどが該当します。

これらのデータは一度削除すると復元は困難なので、注意深くアンインストールを行いましょう。

次のステップ:初心者向けDockerの利用ガイド

Dockerのインストールが終わったら、次は実際にDockerを使用するためのステップに移ります。

これらの知識を身につけることで、Dockerをより効果的に活用することができます。

  • Dockerの基本コマンド
  • Dockerイメージの管理
  • コンテナの作成と管理
  • Dockerネットワークとボリュームの理解

Dockerの基本コマンド

Dockerを操作するためには、コマンドラインから一連のコマンドを実行します。

基本的なコマンドには、以下のような操作が含まれます。

  • コンテナの作成や実行、停止、削除
  • イメージのダウンロードや削除

これらのコマンドを習得することで、Dockerの持つ機能をフルに活用できます。

Dockerイメージの管理

Dockerイメージは、コンテナの”青写真”。

これらのイメージは、Docker Hubや他のイメージレジストリからダウンロードできます。

イメージの管理には、以下のようなコマンドが使えます。

  • ダウンロード(pull)
  • 作成(build)
  • 削除(rmi)
  • リスト表示(images)

コンテナの作成と管理

Dockerコンテナは、イメージから生成される実行可能なソフトウェアパッケージです。

コンテナの管理には、以下のようなコマンドが使えます。

  • 作成(run)
  • 開始(start)
  • 停止(stop)
  • 削除(rm)
  • リスト表示(ps)

これらのコマンドを使って、コンテナのライフサイクルを管理します。

Dockerネットワークとボリュームの理解

Dockerネットワークは、コンテナ間の通信を制御する機能。

Dockerボリュームは、コンテナ間でデータを共有するための仕組みです。

適切に設定することで、複数のコンテナを効果的に管理できます。

アプリケーションのパフォーマンスとデータの永続性を向上させられるのです。

まとめ

当記事では、Dockerの基本知識からインストール、初期設定、そして基本的な操作について学習してきました。

  • Dockerは、開発環境の統一やデプロイの容易さ、スケーラビリティの向上など、多くのメリットを持つ
  • Dockerの学習を深めるためには、公式ドキュメンテーション、チュートリアル、フォーラム、ブログ記事など、さまざまなリソースが存在する
  • Dockerは、大規模なクラウドサービスから小規模な開発プロジェクトまで、幅広い範囲で活用されている

Dockerの発展については、コンテナ技術の進化とともに、より効率的な運用管理、より高度なセキュリティ対策、新たなエコシステムへの統合など、さまざまな改善と新機能が期待されます。

とくに、Kubernetesなどのコンテナオーケストレーションツールとの連携強化は、大規模なアプリケーションデプロイにおけるDockerの役割を更に重要なものにするでしょう。

タイトルとURLをコピーしました