Docker:特定のディレクトリに永続的なボリュームを作成する


13

Docker用の永続ボリュームを作成する必要があります。ボリュームには、名前を付けextra-addonsてに配置する必要があります/mnt/

私はこのコマンドを実行します:

sudo docker volume create /mnt/extra-addons

私はこのエラーメッセージを受け取りました:

Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path

単に実行する場合:sudo docker volume create extra-addons、この問題に直面することはありませんが、を使用して問題のボリュームを検査する場合sudo docker inspect extra-addons、それは望ましくない場所にあることがわかります:

[
    {
        "CreatedAt": "2018-04-21T14:40:25+03:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/extra-addons/_data",
        "Name": "extra-addons",
        "Options": {},
        "Scope": "local"
    }
]

私はこのようなボリュームを見たいと思っています: /mnt/extra-addons

何か案が?

回答:


11

私は解決策を見つけました:

ローカル永続プラグインをインストールする必要がありました。

次のようにマウントポイントに作成するには、ボリュームをマウントする必要がありました。

 sudo docker volume create -d local-persist -o mountpoint=/mnt/ --name=extra-addons

期待した結果を得たかどうかを確認します。

sudo docker volume inspect extra-addons

結果:

[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local-persist",
        "Labels": {},
        "Mountpoint": "/mnt/",
        "Name": "extra-addons",
        "Options": {
            "mountpoint": "/mnt/"
        },
        "Scope": "local"
    }
]

それが私が探しているものでした。


6

ドッカーにプラグインをインストールしたくない場合は、ボリュームのシンボリックリンクを作成することをお勧めします。

$ docker volume create <myVolume>
$ docker volume inspect <myVolume> 
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/<myVolume>/_data",
        "Name": "<myVolume>",
        "Options": {},
        "Scope": "local"
    }
]
$ mkdir /mnt/<myVolume>
# if you already have data in your volume, you should copy it to `/mnt/<myVolume>` now
$ sudo rm -rf /var/lib/docker/volumes/<myVolume>/_data
$ sudo ln -s /mnt/<myVolume> /var/lib/docker/volumes/<myVolume>/_data

これで、通常どおりボリュームを自由に使用できます(必要に応じてすべてのデータが入っ/mntています)


docker管理対象ボリュームを削除するのは良い考えだとは思わないでください。代わりにマウントを使用して、ホストディレクトリをdockerにマウントします。
レックス

3

local-persistドライバーを使用することが道だとは思いません。しばらく更新されていません。docker mountを使用して、ローカル(ホスト)ディレクトリをdockerコンテナーにマウントできます。

次を実行すると、デスクトップにマップされたマウントされたディレクトリを持つ新しいコンテナが作成されます。

mkdir extra-addons
docker run -it -v /Users/me/Desktop/extra-addons:/mnt/extra-addons busybox /bin/sh
ls

これmntで、コンテナのルートにフォルダーが表示されます。

bin dev etc home mnt proc root sys tmp usr var

コンテナに新しいファイルを作成する

touch /mnt/extra-addons/test.txt

ホストマシンにtest.txtファイルを作成します。指定されたパス。これは、双方向の読み取り/書き込み共有フォルダーになりました。複数のコンテナが同じフォルダをマウントできます。そして、コンテナをシャットダウンすると持続します。

ここに画像の説明を入力してください


おかげで、これは私を一歩助けてくれました。ボリュームを追加しようとしていました。ちょうどディレクトリをマウント
Chaim Eliyah
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.