【ITニュース解説】🚀 Day 8 of My DevOps Journey: Docker Networking & Volumes

2025年09月08日に「Dev.to」が公開したITニュース「🚀 Day 8 of My DevOps Journey: Docker Networking & Volumes」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

Dockerのネットワークとボリュームについて解説。ネットワークはコンテナ間の通信を可能にし、ボリュームはコンテナ削除後もデータを保持する。ネットワークにはBridge、Host、Overlayの3種類がある。ボリュームにはNamed、Host Mounts、Anonymousの3種類がある。これらはDevOpsで信頼性の高いシステムを構築するために重要。

ITニュース解説

Dockerは、コンテナと呼ばれる軽量な仮想環境を作成・実行するためのプラットフォームだ。コンテナはアプリケーションとその依存関係をまとめてパッケージ化し、異なる環境でも一貫して動作させることができる。この記事では、Dockerにおけるネットワークとボリュームという、コンテナをより実用的にするための重要な2つの概念について解説する。

まず、Dockerネットワークについて説明する。Dockerネットワークは、コンテナ同士やコンテナと外部の世界との通信を可能にする。デフォルトでは、ブリッジネットワークというものが使われる。これは、コンテナにプライベートIPアドレスを割り当て、同じネットワーク内のコンテナ同士が通信できるようにするものだ。

ブリッジネットワーク以外にも、ホストネットワークとオーバーレイネットワークというものがある。ホストネットワークは、コンテナがホストOSのネットワークインターフェースを直接共有する。つまり、コンテナはホストOSと同じIPアドレスとポートを使用する。オーバーレイネットワークは、複数のホストにまたがるコンテナを接続するために使用される。これは、Docker SwarmやKubernetesのようなコンテナオーケストレーションツールでよく使われる。

記事では、カスタムブリッジネットワークの作成と、そのネットワーク内でコンテナを実行する例が示されている。docker network create mynetというコマンドでmynetという名前のネットワークを作成し、docker runコマンドでwebという名前のNginxコンテナと、alpineという名前のAlpine Linuxコンテナを同じネットワークに参加させている。そして、alpineコンテナからping webを実行することで、コンテナ同士がネットワークを通じて通信できることを確認している。

次に、Dockerボリュームについて説明する。Dockerボリュームは、コンテナのライフサイクルとは独立してデータを保存するための仕組みだ。コンテナを削除しても、ボリュームに保存されたデータは保持される。これは、データベース、ログファイル、設定ファイルなど、永続化する必要があるデータを扱う場合に非常に重要となる。

Dockerボリュームには、名前付きボリューム、ホストマウント、匿名ボリュームという3つの種類がある。名前付きボリュームは、Dockerによって管理され、名前で識別される。ホストマウントは、ホストOS上のディレクトリをコンテナにマウントする。匿名ボリュームは、名前を持たず、コンテナの削除時に自動的に削除される。

記事では、名前付きボリュームの作成と、MySQLコンテナでそのボリュームを使用する例が示されている。docker volume create mydataというコマンドでmydataという名前のボリュームを作成し、docker runコマンドでMySQLコンテナを実行する際に、-v mydata:/var/lib/mysqlというオプションを指定している。これにより、MySQLのデータベースファイルがmydataボリュームに保存され、コンテナを削除してもデータが失われることはない。

Dockerネットワークとボリュームは、DevOpsの現場で様々な用途に活用できる。データベースコンテナのデータを永続化したり、バックエンドとフロントエンドのコンテナをネットワークで接続したり、設定ファイルを複数のサービス間で安全に共有したりすることが可能だ。

記事では、Dockerネットワークとボリュームを使用する際のプロのヒントも紹介されている。移植性を高めるために、ホストパスの代わりに名前付きボリュームを使用すること、docker network lsdocker network inspect mynetコマンドでネットワークを検査すること、docker volume prunedocker network pruneコマンドで未使用のボリュームやネットワークをクリーンアップすることなどが挙げられている。

最後に、記事では簡単なハンズオンミニラボが提供されている。devnetという名前のネットワークを作成し、NginxコンテナとRedisコンテナを同じネットワークに参加させ、NginxコンテナからRedisコンテナにpingを実行して接続を確認する。これにより、コンテナ同士がネットワークを通じて通信できることを実際に体験できる。

まとめとして、Dockerネットワークはコンテナ同士をミニインターネットのように接続し、Dockerボリュームはコンテナの再起動や削除を超えてデータを保持する。これらを組み合わせることで、Dockerは本番環境でも利用できる信頼性の高いプラットフォームとなる。

関連コンテンツ