序章

この記事では、Dockerデータボリュームの概念、つまり、それらが何であるか、なぜそれらが役立つのか、さまざまなタイプのボリューム、それらの使用方法、およびそれぞれをいつ使用するかについて説明します。 また、dockerコマンドラインツールを使用してDockerボリュームを使用する方法の例もいくつか紹介します。

記事の最後に到達するまでに、あらゆる種類のDockerデータボリュームの作成と使用に慣れているはずです。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • Ubuntu14.04ドロップレット
  • sudo権限を持つroot以外のユーザー( Ubuntu 14.04 を使用した初期サーバーセットアップでは、これをセットアップする方法について説明しています。)
  • Ubuntu14.04にDockerComposeをインストールして使用する方法のステップ1の手順でインストールされたDocker

注:前提条件にUbuntu 14.04にDockerをインストールする手順が記載されていますが、この記事のDockerデータボリュームのdockerコマンドは、Dockerがインストールされている限り他のオペレーティングシステムでも機能します。

Dockerコンテナの説明

Dockerを使用するには、Docker固有の概念をかなり理解する必要があります。ほとんどのドキュメントでは、Dockerのツールセットの使用方法を説明することに重点を置いており、これらのツールを使用する理由についてはあまり説明していません。 Dockerを初めて使用する場合、これは混乱を招く可能性があるため、まずいくつかの基本事項を確認してから、Dockerコンテナーの操作に進みます。 以前にDockerを使用したことがあり、データボリュームの使用を開始する方法を知りたい場合は、次のセクションに進んでください。

Dockerコンテナーは、仮想マシンに似ています。 基本的に、コンテナ内で事前にパッケージ化された「Linuxボックス」を実行できます。 Dockerコンテナと一般的な仮想マシンの主な違いは、Dockerは通常の仮想マシンほど周囲の環境から分離されていないことです。 DockerコンテナはLinuxカーネルをホストオペレーティングシステムと共有します。つまり、仮想マシンのように「起動」する必要はありません。

共有されるものが非常に多いため、Dockerコンテナーの起動は迅速で安価な操作です。ほとんどの場合、通常の実行にかかる時間と同じ時間で、完全なDockerコンテナー(通常の仮想マシンに相当)を起動できます。コマンドラインプログラム。 これは、複雑なシステムの展開をはるかに簡単でモジュール化されたプロセスにするので素晴らしいですが、通常の仮想マシンのアプローチとは異なるパラダイムであり、仮想化の世界から来る人々に予期しない副作用があります。

Dockerデータボリュームの種類を学ぶ

Dockerデータボリュームの主なユースケースは3つあります。

  1. コンテナが削除されたときにデータを保持するため
  2. ホストファイルシステムとDockerコンテナ間でデータを共有するには
  3. 他のDockerコンテナとデータを共有するには

3番目のケースはもう少し高度なため、このチュートリアルでは取り上げませんが、最初の2つは非常に一般的です。

最初の(そして最も単純な)ケースでは、コンテナーを削除してもデータをそのままにしておきたいので、データの保存場所をDockerに管理させるのが最も簡単な場合がよくあります。

データを永続的に保つ

Dockerで「データボリューム」を直接作成する方法はないため、代わりに、ボリュームが接続されたデータボリュームコンテナを作成します。 このデータボリュームコンテナーに接続する他のコンテナーの場合は、Dockerの--volumes-fromオプションを使用して、このコンテナーからボリュームを取得し、現在のコンテナーに適用します。 これは一見少し珍しいので、このアプローチを使用して、コンテナが削除された場合でもbyebyeファイルを固定する方法の簡単な例を見てみましょう。

まず、ボリュームを保存するための新しいデータボリュームコンテナを作成します。

docker create -v /tmp --name datacontainer ubuntu

これにより、ubuntuイメージに基づいて、ディレクトリ/tmpdatacontainerという名前のコンテナが作成されました。

ここで、--volumes-fromフラグを指定して新しいUbuntuコンテナーを実行し、前と同じようにbashを再度実行すると、/tmpディレクトリに書き込んだものはすべて[ X172X]