GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerボリュームを理解する

Dockerコンテナ内に保存されているファイル(およびその他のデータ)は、コンテナが削除されても保持されません。これを克服するために、Dockerボリューム およびバインドマウント に使える。このガイドでは、永続データを保存する方法としてDockerボリュームを使用する方法について説明します。ボリュームを外付けハードドライブと考えてください。内蔵ハードドライブが消去されても、外付けハードドライブはそれ自体のデータを保持します。ボリュームはホストに保存され、コンテナやイメージから独立しています。必要に応じてさまざまなコンテナにマウントできます。ボリュームはイメージから分離されているため、イメージのサイズが大きくなることはありません。

始める前に

  1. まだ行っていない場合は、Linodeアカウントとコンピュートインスタンスを作成します。 Linode入門とコンピューティングインスタンスの作成ガイドをご覧ください。

  2. コンピューティングインスタンスのセットアップと保護ガイドに従って、システムを更新してください。また、タイムゾーンの設定、ホスト名の構成、制限付きユーザーアカウントの作成、SSHアクセスの強化を行うこともできます。

  3. システムにDockerをインストールします。

  4. このガイドは、Linuxコマンドラインの使用に慣れていることを前提としています。ターミナルの使用を参照してください。

  5. このガイドは、Dockerの基本的な知識があることを前提としています。さらに、サーバーにDockerをインストールし、Dockerイメージをデプロイしておく必要があります。 Dockerの概要を参照してください。

Dockerボリュームの作成

Dockerボリュームの理解を始めるには、作業するボリュームが必要です。

  1. SSHまたはLishのいずれかを介してLinode(または他のLinuxサーバー)にログインします。

  2. example_volume を置き換えて、次のコマンドを入力してボリュームを作成します ボリュームのラベル付き。

    docker volume create example_volume
    
  3. ボリュームが作成されたことを確認します。

    docker volume list
    

    出力は次のようになります。

    [[email protected] ~]$ docker volume list
    DRIVER    VOLUME NAME
    local     example_volume
    [[email protected] ~]$

Dockerボリュームの検査

ボリュームの詳細を確認したい場合は、docker volume inspectを使用できます。 コマンド:

docker volume inspect example_volume

出力は次のようになります。

[[email protected] ~]$ docker volume inspect example_volume
[
    {
        "CreatedAt": "2021-05-19T15:27:27Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/example_volume/_data",
        "Name": "example_volume",
        "Options": {},
        "Scope": "local"
    }
]
[[email protected] ~]$

Dockerボリュームをコンテナーにマウントする

コンテナのデータを保持するには、--mount flagを使用してDockerボリュームをマウントする必要があります docker runで 指図。 [volume_name]を置き換えます ボリュームの名前、 [path] ボリュームをコンテナ内にマウントする絶対パスと、 [docker_image] 画像の名前で。

docker run --mount source=[volume_name],destination=[path] [docker_image]

例として、次のコマンドは example_volumeという名前のボリュームをマウントします パス/example_volumeubuntuを使用してコンテナ内 画像。

docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu

このコマンドは、イメージを実行し、ボリュームをマウントし、Ubuntuイメージにrootとしてユーザーをログインさせます。ルートとして入力すると、「example_volume」がlsだけでマウントされていることを確認できます。 。これらすべての出力は次のようになります。

[[email protected] ~]$ docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
[email protected]:/# ls
bin   dev  example_volume  lib    lib64   media  opt   root  sbin  sys  usr
boot  etc  home            lib32  libx32  mnt    proc  run   srv   tmp  var
[email protected]:/#

コンテナ間でのファイルのコピーと共有

Dockerボリュームを使用すると、コンテナー間で共有することもできます。

  1. Dockerボリュームのコンテナーへのマウント内の指示に従ってボリュームをマウントします。以前に使用した例は次のとおりです。

    docker run -it --name=example --mount source=example_volume,destination=/example_volume ubuntu
    
  2. ディレクトリをexample_dataに変更します ディレクトリ。

    cd example_data
    
  3. 次のtouchを入力して、ボリュームにテストファイルを作成します コマンド。

    touch example_file.txt
    
  4. 次に、コンテナを終了します。

    exit
    
  5. 次に、同じボリュームをマウントして別のDockerイメージを実行します。 debian 以下の例では画像を使用しています。

    docker run -it --name=example_2 --mount source=example_volume,destination=/example_volume debian
    
  6. 新しいコンテナ(上記のようなコマンドを使用する場合は「example_2」と呼ばれます)コンテナ内で、ボリュームのディレクトリに移動します。

     cd example_volume
    
  7. lsと入力します ファイルを表示します。

    ls
    

ディレクトリをLinodeからコンテナにマウントする

新しいボリュームを作成する代わりに、Linode(または他のシステム)からDockerコンテナにディレクトリをマウントすることもできます。これはバインドマウントによって実現され、システムから直接コンテナのファイルを保存してアクセスする場合に役立ちます。ボリュームと比較して、バインドマウントの機能は制限されています。

  1. SSHまたはLishのいずれかを介してLinode(または他のLinuxサーバー)にログインします。

  2. 次のコマンドを使用してDockerを実行し、 [local-directory]を置き換えます マウントするLinode内のディレクトリへの絶対パスを使用します($(pwd)を使用します) 現在のディレクトリをマウントします)。次に、 [mount-directory]を置き換えます ローカルファイルにアクセスして[image]を置き換えるコンテナの絶対パスを使用します 使用するDockerイメージを使用します。

    docker run --rm -it -v [local-directory]:[mount-directory] [image]
    
  3. コンテナに自動的にログインします。マウントディレクトリに移動して、ファイルを表示します。

    ls
    

    ローカルディレクトリ内に保存したファイルが表示されます。

さらに読む

Docker Volumesには、ここで説明できる以上のことがたくさんあり、ユースケースは人によって異なります。ただし、これについて詳しく確認する2つの優れた場所は、Dockerのドキュメントサイト自体です。

  • DockerDocsでボリュームを使用する

  • DockerDocsでのボリュームエラーのトラブルシューティング

詳細情報

このトピックの詳細については、次のリソースを参照してください。これらは有用であることを期待して提供されていますが、外部でホストされている資料の正確性や適時性を保証することはできません。

  • DockerDocsでボリュームを使用する
  • DockerDocsでのボリュームエラーのトラブルシューティング

Docker
  1. Ubuntuの空き容量/ボリュームを理解していますか?

  2. Ubuntu22.04のDockerコンテナ間でデータを共有する方法

  3. Docker 内の Docker はボリュームをマウントできません

  1. LVMを使用したLinuxでの論理ボリュームの作成

  2. Docker

  3. Dockerの概要

  1. 「docker stats」コマンド出力について

  2. docker でのユーザー ファイルの所有権を理解する:リンクされたボリュームのアクセス許可を変更しないようにする方法

  3. Docker でディレクトリとしてマウントされた単一のファイル ボリューム