Ubuntu14.04でDockerデータボリュームを使用する方法

前書き ##

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

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

準備 ##

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

サーバーをお持ちでない学生は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs/lab/10054?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。

**注:**前提条件は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イメージと / tmpディレクトリに基づいて datacontainerという名前のコンテナが作成されます。

ここで、 --volumes-fromフラグを指定して新しいUbuntuコンテナを実行し、以前と同じように bashを再度実行すると、 / tmpディレクトリに書き込んだものはすべて datacontainerコンテナに保存されます。 / tmp`ボリューム。

まず、 ubuntuイメージを開始します。

docker run -t -i --volumes-from datacontainer ubuntu /bin/bash

- tコマンドラインオプションは、コンテナ内から端末を呼び出します。 -iフラグは、接続をインタラクティブにします。

ubuntuコンテナのbashプロンプトで、 / tmpの場所にファイルを作成します。

echo "I'm not going anywhere">/tmp/hi

先に進み、「exit」と入力してホストのシェルに戻ります。ここで、同じコマンドを再度実行します。

docker run -t -i --volumes-from datacontainer ubuntu /bin/bash

今回は hiファイルがすでに存在します:

cat /tmp/hi

見るべき:

I'm not going anywhere

必要な数の --volumes-fromフラグを追加できます(たとえば、複数のデータコンテナからのデータを使用するコンテナをアセンブルする場合)。必要な数のデータボリュームコンテナを作成することもできます。

この方法の唯一の注意点は、データボリュームコンテナ(この例では / tmp)を作成するときに、コンテナ内のマウントパスしか選択できないことです。

ホストとDockerコンテナ間でデータを共有する

Dockerコンテナのもう1つの一般的な使用法は、ホストとDockerコンテナ間でファイルを共有することです。これは、前の例の動作とは異なります。最初に「データのみ」のコンテナを作成する必要はありません。 Dockerイメージコンテナを実行して、ディレクトリの1つをホストシステム上のディレクトリの内容で上書きするだけです。

簡単な実例として、公式のDocker Nginxイメージを使用したいが、後で分析するためにNginxログファイルの永続的なコピーを保持したいとします。デフォルトでは、 nginxDockerイメージは / var / log / nginxディレクトリに記録されますが、これはDockerNginxコンテナの / var / log / nginxです。通常、ホストファイルシステムからはアクセスできません。

ログを保存するフォルダーを作成し、共有ボリュームを使用してNginxイメージのコピーを実行し、Nginxがコンテナー内の / var / log / nginxではなくホストのファイルシステムにログを書き込むようにします。

mkdir ~/nginxlogs

次に、コンテナを起動します。

docker run -d -v ~/nginxlogs:/var/log/nginx -p 5000:80-i nginx

この runコマンドは、これまで使用してきたコマンドとは少し異なるので、少しずつ分解してみましょう。

注意を払うと、前の「run」コマンドとは別の違いに気付くかもしれません。これまで、すべての runステートメント(通常は / bin / bash)の最後にコマンドを指定して、コンテナーで実行するコマンドをDockerに指示してきました。 Nginxイメージは公式のDockerイメージであるため、Dockerのベストプラクティスに従い、イメージの作成者は、Nginxを自動的に起動するコマンドを実行するようにイメージを設定します。ここで通常の / bin / bashを破棄し、イメージの作成者にコンテナで実行するコマンドを選択させることができます。

これで、マシンのDockerコンテナ内でNginxのコピーが実行され、ホストポート5000がNginxポート80のコピーに直接マップされます。 curlを使用して簡単なテストリクエストを作成しましょう。

curl localhost:5000

Nginxが稼働中であることを示す画面表示HTMLがNginxから取得されます。しかし、さらに興味深いことに、ホストの 〜/ nginxlogsフォルダーと access.logファイルを見ると、Nginxからの要求を示すログメッセージが表示されます。

cat ~/nginxlogs/access.log

次のようなものが表示されます。

172.17.42.1- - [23 /Oct/2015:05:22:51+0000]"GET / HTTP/1.1"200612"-""curl/7.35.0""-"

〜/ nginxlogsフォルダーに変更を加えると、Dockerコンテナーからリアルタイムでそれらを表示することもできます。

結論として ##

結論として!ここでは、他のコンテナにデータを格納する方法として容量を使用できるデータボリュームコンテナを作成する方法と、ホストファイルシステムとDockerコンテナの間でフォルダを共有する方法を紹介しました。 Dockerデータボリュームに関しては、これは最も高度なユースケースを除くすべてのユースケースをカバーします。

Docker Composeを使用している場合は、 docker-compose.ymlファイルでDockerデータボリュームを構成できます。詳細については、[Ubuntu14.04にDockerComposeをインストールして使用する方法](https://cloud.tencent.com/developer/article/1352212?from=10680)を参照してください。

頑張って幸せなドッカー!

Dockerデータボリューム関連のチュートリアルの使用の詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。


参照:「Ubuntu14.04でDockerデータボリュームを操作する方法」

Recommended Posts

Ubuntu14.04でDockerデータボリュームを使用する方法
Ubuntu20.04にDockerをインストールして使用する方法
Ubuntu16.04にDockerをインストールして使用する方法
Ubuntu18.04にDockerComposeをインストールする方法
Ubuntu16.04でSambaサーバーを使用する方法
Ubuntu14.04にDockerを使用してPrometheusをインストールする方法
CentOS7にDockerをインストールして使用する方法
Ubuntu18.04にComposerをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Jenkinsを使用してUbuntuで自動的にビルドする方法
Ubuntu16.04にPostgreSQLをインストールして使用する方法
LVMを使用してUbuntu18.04でストレージデバイスを管理する方法
Ubuntu14.04でRedisデータをバックアップおよび復元する方法
Ubuntu18.04にMySQLWorkbenchをインストールして使用する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にJavaをインストールする方法
ubuntuでhanlpを使用する方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu14.04でPHP7にアップグレードする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu14.04にDjangoをデプロイする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にRをインストールする方法
Ubuntu16.04にMoodleをインストールする方法
Ubuntu14.04にSolr5.2.1をインストールする方法
Ubuntu16.04にTeamviewerをインストールする方法
Ubuntu14.04でNginxを保護する方法
Ubuntu20.04にMariaDBをインストールする方法
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にMonoをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu20.04にZoomをインストールする方法
Ubuntuでソフトウェアをアンインストールする方法