web-dev-qa-db-ja.com

「docker create volume」コマンドのデフォルトの場所を変更するにはどうすればよいですか?

ボリュームAPIを使用してボリュームを作成する場合、つまり、コンテナーボリュームパターンは必ずしもベストプラクティスではなくなったため、次のようになりました。

# docker volume inspect test-data
[
    {
        "Name": "test-data",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/test-data/_data"
    }
]

たとえば、/ data(別の物理ボリュームにマウントされている)にdockerボリュームが存在するようにします。

これはシンボリックリンクではできません。バインドマウントではできますが、Dockerに個別のボリュームのデフォルトの場所を変更する構成があるのではないかと思います。

22
dukeofgaming

2017: 17.05.0-ce(2017-05-04) の場合、 PR 28696 は非推奨の--graphフラグまたは--data-root:- コミット1ecaed

名前「graph」は、昔のデフォルトの場所/var/lib/docker/graphにディレクトリがあったときの昔の言葉です。

ただし、フラグは、イメージデータだけでなく、ボリューム、コンテナ、およびネットワークのデータも含む「graph」ディレクトリの親ディレクトリのパスを示します。
最新バージョンのdockerでは、このディレクトリにはswarmクラスター状態とノード証明書も含まれています。

issue 5922 および PR 5978 により、ドキュメントが更新されました。

ExecStart=/usr/bin/dockerd -H fd:// --data-root=/mnt/ssd/lib/docker

2016(現在廃止予定)

/var/lib/docker自体を変更するdockerオプションのみを知っており、サブフォルダー(dockerデーモンストレージドライバーで使用される "graph")の一部

dockerデーモン "その他のオプション" を参照してください:

Dockerは、Dockerデータディレクトリ(/var/lib/docker)および/var/lib/docker/tmpのソフトリンクをサポートしています。
DOCKER_TMPDIRおよびdataディレクトリは次のように設定できます。

DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/docker daemon -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log 2>&1
# or
export DOCKER_TMPDIR=/mnt/disk2/tmp
/usr/local/bin/docker daemon -D -g /var/lib/docker -H unix:// > /var/lib/docker-machine/docker.log

ホストマシンのdockerイメージはどこにありますか? (およびコンテナー/ボリュームにも適用されます):

/var/lib/dockerディレクトリの内容は Dockerがストレージに使用しているドライバー上 によって異なります。

13
VonC

Dockerの スタートアップパラメーター--data-rootという名前のいずれかを変更することにより、Dockerがボリュームを含むファイルを保存する場所を変更できます。

サービス管理にsystemdを使用している場合、ファイルは通常/lib/systemd/system/docker.serviceにあります。ファイルを次のように編集します。

# Old - taken from the generated docker.service file in Ubuntu 16.04's docker.io package
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS

# New
ExecStart=/usr/bin/dockerd --data-root /new_location/ -H fd:// $DOCKER_OPTS

または、デフォルトで/etc/docker/daemon.jsonに設定されるDockerデーモン構成ファイルを編集できます。

Dockerデーモンを再起動すると、ボリュームは/new_location/volumes/{volume_name}/_dataになります

:本番およびローカルでも注意してください!また、既存のデータを/var/lib/docker/から新しい場所に移動して、Dockerインストールが正常に機能するようにする必要があります。

特定のフォルダーを特定の場所に配置する場合は、新しい場所からシンボリックリンクを使用できます。

14
Hugo R

/ var/lib/dockerのコンテンツを新しい場所に移動してdockerの保存場所を移動し、新しい場所を指すシンボリックリンクを配置しました(このソリューションはここから https:// askubuntu。 com/questions/631450/change-data-directory-of-docker ):

注意-これらの手順は、現在の/ var/lib/dockerが実際のディレクトリ(別の場所へのシンボリックリンクではない)であることに依存しています。

1)ドッカーを停止します:_service docker stop_。 Dockerプロセスが実行されていないことを確認します:_ps aux | grep -i [d]ocker_

2)ダブルチェックドッカーが実際に実行されていません。現在のdockerディレクトリを見てください:_ls /var/lib/docker/_

2b)バックアップを作成する- tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3)/ var/lib/dockerディレクトリを新しいパーティションに移動します:_mv /var/lib/docker /mnt/pd0/docker_

4)シンボリックリンクを作成します:_ln -s /mnt/pd0/docker /var/lib/docker_

5)ディレクトリ構造を覗いて、mv:_ls /var/lib/docker/_(末尾のスラッシュに注意)の前のように見えることを確認します。

6)ドッカーのバックアップを開始_service docker start_

7)コンテナを再起動します(シンボリックリンクを解決します)

Azure VM Docker 18.09.2でのUbuntu 18.04.1 LTSで作業しました

1
Codev