📚

Dockerの公式についての覚書

に公開

行いたいこと

  • Dockerについて公式になぞっての学習したので覚え書きをしていく。




Dockerについて

  • Dockerは、アプリケーションを 開発(develop)配送(ship)実行(run) するためのオープンプラットフォーム。
  • インフラ環境とアプリケーションを切り離し、環境間の差異を減らすことで、ソフトウェアの提供速度信頼性を向上さる。


Docker プラットフォームでできること

  • 環境の違いによるトラブルをなくせる

開発テスト本番の流れでよく起きる、「手元では動いたのに本番でエラーになる」といった問題を防げる。
Dockerはアプリと必要な環境(OS・ライブラリ・設定)をまとめてパッケージ化できるので、どこでも同じ状態で動かせる。

  • すぐにデプロイできて、必要に応じて増減できる

・コンテナは数秒で起動できるので、新しいアプリや機能をすぐに公開できる。またクラウドオンプレなど場所を問わず動かせるため、柔軟にスケーリング(増減)が可能。
・アクセスが増えるときだけサーバーを増やし、落ち着いたら減らせるので効率的。

  • サーバーを効率よく使える

仮想マシン(VM)は、OSごと動かすため重いが、DockerコンテナはホストOSを共有するので軽量。
・その分、同じサーバーでより多くのアプリを同時に動かせる。サーバーの無駄を減らし、コスト削減にもつながる。


アーキテクチャ構成要素

  • Docker デーモン(dockerd
  • Docker クライアント(docker CLI)
  • Docker Desktop
  • Docker レジストリ / Docker Hub
  • Docker オブジェクト
アーキテクチャ構成要素
  • Docker デーモン(dockerd
    REST APIを通じてコマンドを受け取り、イメージ/コンテナ/ネットワーク/ボリュームなどを管理。

  • Docker クライアント(docker CLI)
    ユーザが操作するツール。CLI コマンドをデーモンに送る。

  • Docker Desktop
    Mac, Windows, Linux用 GUI 含むパッケージ。Engine, CLI, Compose, Kubernetes などが含まれており、開発環境を手軽に構築可能。

  • Docker レジストリ / Docker Hub
    イメージの保存と共有の場所。パブリック/プライベート両方対応。

  • Docker オブジェクト

    オブジェクト 説明
    イメージ(Image) 読み取り専用のテンプレート。ベースイメージにレイヤーを重ねて構成
    コンテナ(Container) イメージを実行した状態。プロセスが隔離された環境で動く実体
    ネットワーク / ボリューム コンテナ間通信、データ永続化等を扱う補助的な構成要素


基礎技術・用語

  • コンテナ(Container)
    ・軽量で隔離された実行環境。→ 例えるなら「アプリ専用の小さな部屋」。
    ・部屋の中にはアプリに必要なもの(ライブラリや設定)だけが入っており、外の環境に影響されない。
    ・そのため「自分のPCでは動いたけど、他の環境では動かない」という問題を解決できる。

  • イメージ(Image)
    ・コンテナを作るための設計図。→ 例えるなら「料理のレシピ」。
    ・1つのイメージから何個でもコンテナを作れる。
    ・イメージはレイヤー構造になっていて、
    例えば

    • OSのベース
    • ミドルウェア(例: nginx, MySQL)
    • アプリ本体
      と積み重なって構成されている。

  • レジストリ(Registry)
    ・イメージを保存・配布するための場所。→ 例えるなら「アプリの倉庫」。
    ・よく使われるのは Docker Hub(公式の公開レジストリ)。
    ・自分専用の プライベートレジストリ を作って、チームで共有することも可能。

  • Docker Compose
    ・複数のコンテナをまとめて管理するためのツール。→ 例えるなら「建物全体の設計図」。
    docker-compose.yml に Web サーバー、DB、キャッシュなどの構成を書いておけば、
    docker compose up コマンドひとつで全部まとめて起動できる。
    ・複雑なシステムを簡単に動かせるので、開発・検証環境で特によく使われる。


デーモン設定のポイント

  • 設定方法
  • 設定ファイルの場所
  • データ格納ディレクトリ
デーモン設定のポイント

主要な設定内容

  • 設定方法

    • JSON ファイルによる設定
    • 起動時のフラグ指定
    • 両方で同一オプションを重複させるとエラーになる可能性あり
  • 設定ファイルの場所

    環境 デフォルトパス
    Linux 通常モード /etc/docker/daemon.json
    Linux rootless モード ~/.config/docker/daemon.json
    Windows C:\ProgramData\docker\config\daemon.json
  • データ格納ディレクトリ (data-root)
    デーモンはイメージ・コンテナ・ボリュームなどを一つのディレクトリに保存。デフォルトは Linux で /var/lib/docker。必要に応じて変更可能。

公式推奨の学習ステップ

  1. Dockerをインストール(Docker Desktop や Linux 環境で)
  2. 基本概念の理解:イメージ、コンテナ、レジストリ、Composeなど
  3. 小さなアプリケーションをDocker化して動かす(Dockerfile の書き方、ビルド、実行)
  4. コンテナ間通信、データ永続化(ボリューム)、ネットワークなど応用
  5. 複数コンテナサービスをまとめて管理する Docker Composeを使いこなす
1. Docker をインストールの解説

最初のステップはDockerの環境構築、
Windows / macOSDocker Desktop を利用
Linux → apt / yum などパッケージマネージャ経由でインストール
インストール後は docker --version で確認できる。

2. 基本概念の理解の解説

イメージ: アプリの設計図(再利用可能なテンプレート)
コンテナ: イメージから実行される実体(動いているアプリ本体)
レジストリ: イメージを保存・共有する場所(Docker Hub が代表例)
Compose: 複数コンテナを一括管理できるツール
→ これらを押さえるとでDockerの利便性を理解できる。

3. 小さなアプリケーションをDocker化して動かしてみるの解説

簡単な Web アプリや API を Docker 化して実験していく
手順例:
Dockerfile を作成
docker build でイメージ作成
docker run で実行
「自分のアプリがどこでも動く」を確認することができる

4. コンテナ間通信、データ永続化、ネットワークなど応用の解説

コンテナ間通信: 複数のコンテナをネットワークで接続
データ永続化(ボリューム): コンテナを削除してもデータを保持可能
ネットワーク: 複数アプリを連携させる仕組み
→ ここで本番環境を意識した使い方に近づく。

5. 複数コンテナサービスをまとめて管理する Docker Compose の解説

docker-compose.yml を使って、複数のサービスを一括で管理可能。
例: Web サーバー + DB + キャッシュをまとめて起動/停止
チーム開発や本格的なアプリ開発で必須のスキル。




以上です。






GitHubで編集を提案

Discussion