【Docker入門】初心者でも安心!基礎から実践まで丁寧に解説

kento_morota 19分で読めます

Dockerとは?初心者にもわかる基本の考え方

「開発環境の構築に時間がかかる」「私のパソコンでは動くのに、他の人のパソコンでは動かない」――こんな悩みを抱えていませんか?

Dockerは、こうした開発環境にまつわる課題を解決する技術として、近年注目を集めています。本記事では、Docker初心者の方でも安心して学べるよう、基礎から実践まで丁寧に解説します。

Dockerを「引っ越しセット」に例えると理解しやすい

Dockerを理解する最も簡単な方法は、「引っ越しセット」に例えることです。

引っ越しをするとき、家具や家電と一緒に「この部屋にはこの家具を配置する」という設計図があれば、引っ越し先でもすぐに同じ環境を再現できますよね。Dockerは、まさにこの「引っ越しセット」のような役割を果たします。

アプリケーションとその動作に必要なすべての要素(プログラム本体、設定ファイル、ライブラリなど)を一つのパッケージにまとめ、どのパソコンでも同じように動かせるようにする技術です。

この「引っ越しセット」を受け取った人は、どのパソコンでも、どのOSでも、同じ環境をすぐに再現できます。まるで、設計図通りに家具を配置すれば、どの部屋でも同じレイアウトになるのと同じです。

従来の開発環境との違い:なぜDockerが注目されているのか

従来の開発環境構築では、開発者ごとに環境が微妙に異なり動作が不安定になる、環境構築の手順書が何十ページにもわたる、担当者が変わると環境の再現が困難といった課題がありました。

Dockerを使った開発環境では、これらの課題が大きく改善されます。

Dockerの4つの特徴:

  • 軽量性:仮想マシンと比べて起動が速く、リソース消費が少ない
  • 再現性:どの環境でも同じように動作する
  • 共有の容易さ:環境設定を簡単にチームで共有できる
  • 隔離性:複数のプロジェクトが互いに干渉しない

従来の仮想マシンがOS全体を丸ごと仮想化するのに対し、Dockerは必要な部分だけを隔離して動かすため、起動時間が数秒で済み、メモリ消費も少なく抑えられます。この「ちょうどいい」軽量さと機能性のバランスが、Dockerが注目される理由です。

中小企業がDockerを使う5つのメリット

中小企業にとって、Dockerの導入は以下のような具体的なメリットをもたらします。

1. 属人化の解消 環境構築の手順がDockerファイルとして記録されるため、「あの人しか環境を作れない」という状況から脱却できます。

2. 引き継ぎ時間の大幅短縮 新しいメンバーが加わったとき、従来は環境構築だけで数日かかっていたものが、Dockerなら数分で完了します。限られた人員で業務を回す中小企業にとって大きな時間削減になります。

3. 開発とテストの効率化 本番環境と同じ環境を手元で簡単に再現できるため、「本番環境では動かなかった」というトラブルを事前に防げます。

4. コスト削減 一つのサーバーで複数のアプリケーションを効率的に動かせるため、サーバー費用を抑えられます。また、環境構築の時間短縮により人件費の削減にもつながります。

5. 段階的な導入が可能 大規模なシステム刷新は不要です。まずは一つのプロジェクトから始めて、効果を確認しながら徐々に拡大できます。

Docker入門で知っておくべき基本用語

Dockerを理解する上で避けて通れない専門用語を、わかりやすく解説します。

コンテナとは Dockerにおける「仮想環境の軽量版」です。アパートで例えると、仮想マシンが一棟まるごと建てるのに対し、コンテナはアパートの一室を借りるイメージです。軽く、すぐ使え、必要な機能は揃っています。

各コンテナは互いに干渉せず、それぞれ独立して機能します。これにより、複数のプロジェクトを一台のパソコンで同時に動かしても、環境が混ざることはありません。

イメージとは コンテナを作るための「設計図」や「型」のことです。同じイメージから、何個でも同じコンテナを作れます。料理で言えば「レシピ」、建築で言えば「設計図」に相当します。

Docker Hubとは 世界中の開発者が作ったイメージを共有する「図書館」のようなサービスです。必要なイメージを検索してダウンロードでき、自分で一から作る必要がありません。

Dockerの仕組みを理解しよう:3つの重要な概念

Dockerを実際に使いこなすためには、イメージ、コンテナ、Docker Hubの3つの概念と、それらの連携を理解することが大切です。

イメージ:アプリの「設計図」

イメージは、コンテナを作るための「設計図」や「レシピ」です。料理で例えると、イメージはレシピで、レシピには「材料」と「作り方」が書かれています。同じレシピから、何度でも同じ料理を作れます。

Dockerイメージには、ベースとなるOS、インストールするソフトウェア、設定ファイル、アプリケーションコード、起動時に実行するコマンドなどが含まれています。

イメージは読み取り専用で、一度作成したら変更されません。これにより、「誰が、いつ、どこで実行しても同じ結果になる」という再現性が保証されます。

イメージの入手方法:

  1. Docker Hubから既存のイメージをダウンロード(最も簡単)
  2. Dockerfileという設定ファイルを書いて自分で作成
  3. 既存のイメージをカスタマイズして新しいイメージを作成

Docker初心者の方は、まずDocker Hubから既存のイメージを使うことから始めるのがおすすめです。

コンテナ:設計図から作られた「実際の部屋」

コンテナは、イメージから作られた「実際に動く環境」です。料理で例えると、イメージがレシピで、コンテナがレシピから実際に作った料理です。

重要なポイントは、一つのイメージから複数のコンテナを作れることです。同じレシピから何皿も料理を作れるのと同じです。

コンテナの特徴:

  • 独立性:各コンテナは互いに干渉しない
  • 軽量性:数秒で起動でき、リソース消費が少ない
  • 一時性:コンテナを削除しても、イメージは残る
  • 変更可能:コンテナ内でファイルを変更できる(ただし、コンテナを削除すると変更も消える)

コンテナは「使い捨て」の感覚で利用します。不要になったら削除し、また必要になったらイメージから新しいコンテナを作成します。

Docker Hub:イメージの「図書館」

Docker Hubは、世界中の開発者が作成したDockerイメージを共有するプラットフォームです。図書館で例えると、必要な本を検索して借りられる(ダウンロード)、自分で書いた本を寄贈することもできる(アップロード)仕組みです。

Docker Hubには、nginx(Webサーバー)、mysql(データベース)、python(Pythonの実行環境)、wordpress(WordPressの環境)などの公式イメージが多数用意されています。これらの公式イメージは、メンテナンスされており、セキュリティアップデートも適用されているため、安心して使えます。

イメージ・コンテナ・Docker Hubの連携フロー

実際の作業の流れで、3つの概念の関係性を理解しましょう。

典型的なDockerの使用フロー:

  1. イメージの取得:Docker Hubで必要なイメージを検索し、docker pullコマンドでダウンロード
  2. コンテナの作成と起動:ダウンロードしたイメージからdocker runコマンドでコンテナを作成・起動
  3. コンテナの利用:ブラウザでアクセスして動作確認、ログ確認、設定変更など
  4. コンテナの停止と削除:作業が終わったら停止・削除(イメージは残るので、また同じコンテナを作れる)

重要なポイント:

  • イメージは「型」、コンテナは「実体」
  • イメージは変更されない、コンテナは変更可能
  • コンテナを削除してもイメージは残る
  • 同じイメージから何個でもコンテナを作れる

Dockerを使うと何が便利になる?具体的な活用シーン

Dockerの概念を理解したところで、実際の業務でどのように役立つのか、具体的なシーンを見ていきましょう。

「私のパソコンでは動くのに…」問題を解決

開発現場でよくある悩みが「私のパソコンでは動くのに、他の人のパソコンでは動かない」という問題です。原因を調べると、インストールされているライブラリのバージョンが微妙に違っていた、ということが頻繁にあります。

Dockerを使えば、開発者が作成したDocker環境(コンテナ)をそのまま共有すれば、誰のパソコンでも同じように動作します。WindowsでもMacでもLinuxでも、Docker環境内は同一です。

これは、中小企業でよくある「複数のメンバーで一つのプロジェクトを進める」場合や、外注先の開発会社と社内のIT担当者が同じ環境で作業する場合に特に有効です。

新しいメンバーの環境構築が数分で完了

従来の環境構築では、手順書を読みながら必要なソフトウェアを一つずつインストールし、設定ファイルを編集し、エラーが出たら原因を調査して対処するという流れで、合計半日から3日程度かかっていました。

Dockerを使った環境構築の流れ:

  1. Dockerをインストール
  2. プロジェクトのDockerファイルを取得
  3. コマンド一つで環境を起動
  4. 合計:数分〜30分程度

この差は、人員が限られる中小企業にとって非常に大きな意味を持ちます。新メンバーが即戦力として業務に参加できるまでの時間が劇的に短縮されるからです。

複数のプロジェクトを同時進行しても環境が混ざらない

中小企業のIT担当者は、複数のプロジェクトを同時に抱えることが多いでしょう。プロジェクトAではPython 3.8が必要、プロジェクトBではPython 3.10が必要といった場合、一つのパソコンに両方のバージョンをインストールすると、設定が複雑になります。

Dockerを使えば、各プロジェクトごとに独立したコンテナを用意できます。各コンテナは完全に独立しているため、互いに干渉しません。プロジェクトを切り替えるときは、該当するコンテナを起動するだけです。

テスト環境と本番環境を簡単に切り替えられる

従来は、「開発環境」「テスト環境」「本番環境」を個別に構築・管理する必要があり、環境間で微妙な差異が生じ、「テストでは問題なかったのに本番でエラー」が発生することがありました。

Dockerなら、同じDockerイメージを使いながら、設定ファイルだけを変更することで、異なる環境を簡単に作れます。環境の「ベース」は同じなので、環境差異によるトラブルが大幅に減ります。

また、本番環境で問題が発生したとき、全く同じ環境を手元で再現してデバッグできるため、問題解決のスピードも向上します。

【実践編】Dockerをインストールしてみよう

ここからは実際に手を動かしていきましょう。Dockerのインストールは思っているより簡単です。

Windows・Mac・Linuxそれぞれのインストール手順

Windows・Macの場合:Docker Desktopを使う

Windows・Macでは、「Docker Desktop」という統合パッケージを使うのが最も簡単です。

Windows版のインストール:

  1. システム要件の確認:Windows 10 64bit以降、WSL 2が利用可能
  2. https://www.docker.com/products/docker-desktop からインストーラーをダウンロード
  3. インストーラーを実行し、「Use WSL 2 instead of Hyper-V」にチェック
  4. インストール完了後、再起動

Mac版のインストール:

  1. システム要件の確認:macOS 10.15以降
  2. 同じURLから自分のMacのチップに合ったバージョン(Intel chip / Apple chip)を選択してダウンロード
  3. .dmgファイルを開き、Docker.appをApplicationsフォルダにドラッグ
  4. Applicationsフォルダから起動

Linux版のインストール(Ubuntu例):

# 必要なパッケージのインストール
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# Dockerの公式GPGキーを追加
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Dockerのインストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 一般ユーザーでDockerを使えるようにする
sudo usermod -aG docker $USER

インストール後の動作確認方法

Dockerが正しくインストールされたか確認しましょう。

1. バージョン確認

docker --version

Docker version 24.0.0, build xxxxxのような出力が表示されれば成功です。

2. Dockerの動作確認

docker run hello-world

このコマンドを実行すると、ローカルに「hello-world」イメージがないことを検出し、Docker Hubから自動的にダウンロードし、コンテナを起動してメッセージを表示します。

成功すると、Hello from Docker!で始まるメッセージが表示されます。このメッセージが表示されれば、Dockerは正常に動作しています。

3. 実行中のコンテナを確認

docker ps

現在実行中のコンテナの一覧が表示されます。

docker ps -a

-aオプションを付けると、停止中のコンテナも含めて全てのコンテナが表示されます。

よくあるインストールエラーと対処法

1. 「WSL 2 installation is incomplete」(Windows)

PowerShellを管理者権限で開いて実行:

wsl --install
wsl --set-default-version 2

2. 「Docker Desktop requires a newer WSL kernel version」(Windows)

https://aka.ms/wsl2kernel から最新のWSL 2 Linuxカーネル更新プログラムをダウンロードしてインストール。

3. 「Hardware assisted virtualization must be enabled」(Windows)

BIOS設定画面で「Virtualization Technology」を有効化してください。

【ハンズオン】基本コマンドを実際に動かしてみよう

Dockerの基本操作を、実際にコマンドを動かしながら学びましょう。

覚えておきたい基本コマンド7選

1. イメージのダウンロード

docker pull nginx

Docker HubからnginxのWebサーバーイメージをダウンロードします。

2. イメージの一覧表示

docker images

ダウンロード済みのイメージ一覧を表示します。

3. コンテナの起動

docker run -d -p 8080:80 --name my-nginx nginx
  • -d:バックグラウンドで実行
  • -p 8080:80:ポート8080を80に転送
  • --name my-nginx:コンテナに名前を付ける

4. 実行中のコンテナ確認

docker ps

5. コンテナの停止

docker stop my-nginx

6. コンテナの削除

docker rm my-nginx

7. イメージの削除

docker rmi nginx

コマンド実行時のよくある疑問Q&A

Q. コンテナを停止せずに削除できますか? A. docker rm -f コンテナ名で強制削除できますが、通常は停止してから削除することを推奨します。

Q. すべてのコンテナを一度に削除できますか? A. docker rm $(docker ps -aq)で全コンテナを削除できます。

Q. ポート番号はどう選べばいいですか? A. 1024以上の空いているポート番号を選びます。8080、3000、8000などがよく使われます。

実務で使える!簡単な開発環境を作ってみよう

実際の業務で使える開発環境を構築してみましょう。

Webサーバー環境を5分で構築する手順

nginxを使ったWebサーバー環境を構築します。

# nginxイメージをダウンロード
docker pull nginx

# コンテナを起動
docker run -d -p 8080:80 --name web-server nginx

# ブラウザでhttp://localhost:8080にアクセス

これだけで、Webサーバーが起動します。

Docker Composeで複数コンテナを管理する

複数のコンテナを同時に管理するには、Docker Composeを使います。

docker-compose.ymlというファイルを作成:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: password

起動コマンド:

docker-compose up -d

これで、WebサーバーとデータベースがDocker入門初心者でも簡単に起動できます。

作った環境をチームで共有する方法

作成したDocker環境をチームで共有するには、以下の方法があります。

  1. Dockerfileを共有:設定ファイルをGitなどで共有
  2. docker-compose.ymlを共有:複数コンテナの設定を共有
  3. イメージをDocker Hubにアップロード:完成した環境をそのまま共有

チームメンバーは、共有されたファイルを取得してdocker-compose upするだけで、同じ環境を再現できます。

Docker導入でよくある疑問・不安を解消

「難しそう」「専門知識が必要では?」という不安について

Dockerは確かに最初は難しく感じるかもしれませんが、基本的な使い方は非常にシンプルです。本記事で紹介した基本コマンド7つを覚えるだけで、日常的な作業の大半はこなせます。

また、Docker Hubに豊富な公式イメージが用意されているため、自分で一から環境を構築する必要はありません。まずは既存のイメージを使って練習し、慣れてきたら徐々にカスタマイズしていけば大丈夫です。

既存の開発環境からの移行は大変?

大規模なシステム刷新は不要です。まずは一つのプロジェクトから始めて、効果を確認しながら徐々に拡大できます。

段階的な導入例:

  1. 新規プロジェクトからDockerを使い始める
  2. 効果を確認し、チーム内で知見を共有
  3. 既存プロジェクトも徐々に移行

この「ちょうどいい」規模感での導入が可能な点も、中小企業に適しています。

セキュリティやコストの心配は?

セキュリティ:Docker公式イメージは定期的にセキュリティアップデートが適用されています。ただし、古いバージョンを使い続けないよう、定期的な更新は必要です。

コスト:Dockerそのものは無料で使えます。Docker Desktopも個人利用や小規模チームなら無料です。サーバー費用も、一つのサーバーで複数のアプリケーションを効率的に動かせるため、むしろ削減できます。

社内に詳しい人がいない場合の進め方

  1. 公式ドキュメントの活用:Docker公式サイトには日本語のチュートリアルもあります
  2. オンライン学習:UdemyやYouTubeに初心者向けの講座が多数あります
  3. コミュニティの活用:Qiitaなどの技術ブログや、teratailなどのQ&Aサイトで質問できます
  4. 外部サポートの検討:必要に応じて、IT支援サービスの活用も検討しましょう

まとめ:Dockerで開発環境の悩みを解決しよう

この記事で学んだことの振り返り

本記事では、Docker入門として以下の内容を学びました。

  • Dockerは「引っ越しセット」のように、アプリケーションと必要な環境を丸ごとパッケージ化する技術
  • イメージ(設計図)、コンテナ(実体)、Docker Hub(図書館)の3つの概念が重要
  • 環境構築の時間短縮、属人化の解消、コスト削減などのメリットがある
  • 基本的な7つのコマンドで日常的な作業ができる
  • 段階的な導入が可能で、初心者でも安心して始められる

次のステップ:さらに学びを深めるには

Docker入門の次のステップとして、以下を学ぶことをおすすめします。

  1. Dockerfileの作成:自分でイメージを作成する方法
  2. Docker Composeの活用:複数コンテナの連携
  3. ボリュームの管理:データの永続化
  4. ネットワークの設定:コンテナ間の通信
  5. 本番環境への展開:実際のサービス運用

まずは本記事で紹介した基本操作を繰り返し練習し、慣れてきたら徐々に高度な機能に挑戦していきましょう。

困ったときの相談先・サポート情報

  • Docker公式ドキュメント:https://docs.docker.com/
  • Docker Hub:https://hub.docker.com/
  • Qiita:Docker入門の記事が豊富
  • teratail:技術的な質問ができるQ&Aサイト
  • GitHub:サンプルコードが多数公開されている

Dockerは、中小企業の開発環境の課題を解決する「ちょうどいい」技術です。本記事を参考に、ぜひDockerの導入にチャレンジしてみてください。

#Docker#コンテナ#DevOps
共有:

ちょっとした業務の悩みも、気軽にご相談ください。

まずは話だけ聞いてもらう