Dockerイメージはホストマシンのどこに保存されますか?


875

私はなんとかディレクトリの下でコンテナを見つけました/var/lib/docker/containersが、イメージを見つけることができません。

下のディレクトリとファイルは/var/lib/docker何ですか?


2
このような場合は、質問のタイトルや質問文にオペレーティングシステムの詳細を記載するのが最善です。linuxとmacOS(Mac OS X)には2つの良い答えが提供されました。
Webel IT Australia-18年

回答:


637

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

デフォルトでは、となりますaufsが、にフォールバックすることができoverlayoverlay2btrfsdevicemapperまたはzfsカーネルのサポートに応じ。ほとんどの場所でこれは行われますaufsが、レッドハットはそれに伴いましたdevicemapper

-sまたは--storage-driver=Dockerデーモンのオプションを使用して、ストレージドライバーを手動で設定できます

  • /var/lib/docker/{driver-name} イメージのコンテンツ用のドライバー固有のストレージが含まれます。
  • /var/lib/docker/graph/<id>jsonlayersizeファイルに、画像に関するメタデータのみが含まれるようになりました。

の場合aufs

  • /var/lib/docker/aufs/diff/<id> 画像のファイル内容があります。
  • /var/lib/docker/repositories-aufsローカル画像情報を含むJSONファイルです。これは、コマンドで表示できますdocker images

の場合devicemapper

  • /var/lib/docker/devicemapper/devicemapper/data 画像を保存します
  • /var/lib/docker/devicemapper/devicemapper/metadata メタデータ
  • これらのファイルはシンプロビジョニングされた「スパース」ファイルであるため、見かけほど大きくないことに注意してください。

1
何らかの方法でマウントすることで、中身を見ることができますか?
rv 2015年

1
ストレージドライバーが既に実行されていて、イメージを含む実行中のコンテナーがいくつかある場合、ストレージドライバーを設定すると、デーモンの次の再起動時に日付が移行されますか?そうでない場合、この場合ストレージドライバを変更するにはどうすればよいですか?
BTRナイドゥ


92
自分でお願いして、「デフォルトをチェック」しないでください。セットアップに固有docker infoの実際の場所を使用して見つけます
Bruno Bronosky

5
これは変わったようです。Docker for Macそれぞれ1.5 GBの2つのイメージを使用し/var/libており、ディレクトリがありませんdocker
miguelmorin

298

Docker for Mac Applicationを使用している場合、コンテナは次の場所にあるVM内に格納されているようです。

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

更新mmorin提供):

2019年1月15日の時点で、このファイルのみがあるようです:

~/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw

Docker Diskと、その中のすべてのイメージとコンテナが含まれています。


7
これはすべての画像(ubuntu、などnginx)の場所ですか、それともすべてのコンテナの場所ですか?元の質問は、コンテナではなく画像を要求します ...
Siu Ching Pong -Asuka Kenji- 2017

2
DockerがまだVMで実行されていることを覚えておくと、システムパスはMac Osxシステムからではなく、VMを基準にしています。このコマンドを試してください:docker run --rm -it -v /:/ vm-root alpine:edge ls -l / vm-root nad this after:docker run --rm -it -v /:/ vm-root alpine: edge ls -l / vm-root / var / lib /
docker

3
これは変わったようです。Docker for Macそれぞれ1.5 GBの2つのイメージを使用し~/Library/Containers/Data/com.docker.docker/Dataていて、ディレクトリがなくcom.docker.driver.amd64-linux、大きなファイルはvms/0/Docker.raw3.6 GBだけです。
miguelmorin

1
qcow2とrawのどちらを使用するかは、APFS以下のMacOS High Sierraにいるかどうかによって異なります。docs.docker.com
Peter

1
Mac用のチェックサイズ:du -hd1 ~/Library/Containers/com.docker.docker/Data/
エフレン

122

これは古いやり方でしたが、今は変更されました。2019年現在、この回答は無視してください

Mac OS XまたはWindowsの特殊なケースでは、boot2dockerを使用して、Dockerイメージはboot2dockerによって管理されるVirtualBox VM内に保存されます。

このVMは、VirtualBoxイメージの通常の場所に保存されます。

      OS X: ~/VirtualBox VMs/boot2docker-vm

      ウィンドウズ: %USERPROFILE%/VirtualBox VMs/boot2docker-vm

次のコマンドを実行してリセットできます(警告:これにより、これまでにビルドおよびダウンロードしたすべてのイメージが破棄されます)。

boot2docker down
boot2docker destroy
boot2docker init
boot2docker up

これは、有用な--rmオプションを使用せずにビルドをビルド/デバッグするときに大量の中間イメージを保持している場合に特に便利です。参考のためにここで引用します。使用:

docker build -t webapp --rm=true --force-rm=true .

の代わりに:

docker build -t webapp .

16
Windows 10へのDockerの新規インストールに続いて、Dockerクイックスタートターミナルショートカットを初めてクリックした結果、「デフォルト」と呼ばれる仮想マシン(VM)が作成されることを確認できます(数回の失敗した起動後-実行を続けるまでできます)。この「デフォルト」のVMは、Windows内の次の場所に配置できます %USERPROFILE%\.docker\machine\machines (パスの完全なストップに注意してください)
AnotherLongUsername

6
新しいリリースでは、boot2dockerdocker -machineになりましたdocs.docker.com/machine/migrate-to-machine
khyloを

3
その場所を変更することは可能ですか?
dhblah

13
答えは、参照@tristanから新しい答えを参照、代わりのWindows 10のために、もはや正しくありませんC:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
aaronsteers

5
%USERPROFILE%\。dockerは、win7セットアップではまだ正しいです。
RMorrisey 2017年

119

実際には、Dockerイメージは次のコマンドで示すように2つのファイルに格納されています

$ docker info

データファイル: /var/lib/docker/devicemapper/devicemapper/data

メタデータファイル: /var/lib/docker/devicemapper/devicemapper/metadata



8
はい、残念ながら、これらの2行「(メタ)データファイル」はすべてのドッカーに表示されるわけではありません。これは、使用するドライバに依存
Orabîg


8
適切な答えは、「これが私のマシンのどこにあるか」ではありません。正しい答えは、「あなたのマシンでこれを見つける方法です」です。これは正解です。私は、Dockerイメージでいっぱいの11の異なるEBSボリュームを持つ会社に参加しました。この答えにより、現在の「ルートディレクトリ」がどれであるかを知ることができました。
Bruno Bronosky

Mac OS X(少なくともYosemite、つまりEOL wrt Docker)ではdocker info非常に便利ですが、出力Docker Root Dir: /var/lib/dockerはイメージの保存場所を示していません(上記のMac固有の回答を参照)。
Webel IT Australia-18年

70

Hyper-Vを使用する、新しくリリースされた「Docker for Windows」では、データはDocker仮想ハードディスクにあります。

C:\ Users \ Public \ Documents \ Hyper-V \ Virtual hard disks \ MobyLinuxVM.vhdx

「Hyper-Vマネージャー」を開いて、Docker / MobyLinuxVMにアクセスすることもできます。


13
Windows 10 Anniversary Update上のDockerは画像ファイルを入れC:\ProgramData\docker\windowsfilterてくれます。詳細:stackoverflow.com/a/39971954/188740
Johnny Oshika

1
「Hyper-Vマネージャー」が答えです!
Reza

68

画像はに保存され/var/lib/docker/graph/<id>/layerます。

画像は親画像とは異なる点に注意してください。親IDは画像のメタデータとともに保存され/var/lib/docker/graph/<id>/jsonます。

docker run画像の場合。AUFSは、すべてのレイヤーを1つの使用可能なファイルシステムに「マージ」します。


11
この答えは古くなり、物事を移動しました。
エア

7
@Air移動したものを投稿できますか?
Elijah Lynn

1
グラフフォルダはもうありません
Paddy

49

Ubuntuでは、実行中の画像で「遊ぶ」ことができます

sudo baobab /var/lib/docker

実際には、画像は /var/lib/docker/aufs/diff

/ var / lib / dockerで実行されているディスクアナライザーツールbaobabを示すスクリーンショット


いいね。MacのDaisyDiskも同様です(ホイール表示)。GrandPerspectiveも便利です(長方形)。
Webel IT Australia-18年

それを見つける唯一の信頼できる方法のようです。
Alexandr

48

Dockerツールボックス(docker-machineを使用)を使用している人にとって、Mac OS Xのboot2dockerに関する回答は無効です。docker-machine VMは「デフォルト」と呼ばれ、/Users/<username>/.docker/machine/machines/default/ディレクトリに存在します。


3
そのディレクトリ内にコンテナや画像フォルダが見つかりません。
lvarayut 2016年

3
そのディレクトリでdisk.vmdkを探します
lukeaus

1
$ docker images -aは約1ギガのイメージを生成しますが、〜/ .dockerのdisk.vmdkは約20ギガです。どうして?
Grav 2016

Windowsのどこに保存されていますか?
Shreyas、

@Grav:仮想マシンは将来の使用のために20ギガを割り当てますが、イメージには1ギガのみを使用します。
primavera133 2016年

22

ではWindows用ドッカー(ネイティブのWindows)デフォルトのコンテナの保管はです:

   > docker info
   ...
   Docker Root Dir: C:\ProgramData\Docker
   ...

docker buildコマンドを実行しましたが、イメージファイルと思われるファイルが表示されません。いくつかのフォルダーとテキストファイル(service.txtなど)が表示されます。docker build作成するファイルの種類と拡張子は何ですか?
user3731622

22

Docker for MAC(をではなくboot2docker)を使用している場合、場所は/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/


ええ、私がしたとき:jasper@~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux $ ls -lh | grep Docker -rw-r--r--@ 1 jasper staff 6.3G May 25 19:20 Docker.qcow2私は画像を見つけました。しかし、それはコンテナではありません。本当にこのデータディレクトリにそれらを参照してくださいしないでください...
rhand

1
しかし、ここで先に述べたように、stackoverflow.com / a / 37642236/460885は、コンテナーが配置されているのがこのイメージ内です。
rhand

7

ここで回答したように、Macを使用している場合は、次の場所にあります

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

2
Docker.qcow2?それから特定のDockerイメージをプルするにはどうすればよいですか?
AlxVallejo

7

Tristanの答えを拡張すると、Hyper-Vを使用するWindowsでは、matthuismanから次の手順で画像を移動できます

Windows 10では

  1. ドッカーなどを停止する
  2. タスクバーの検索ボックスに「Hyper-V Manager」と入力して実行します。
  3. 左側のペインでPCを選択します(私の名前はDESKTOP-CBP **と呼ばれます)
  4. 正しい仮想マシンを右クリックします(鉱山はMobyLinuxVMと呼ばれます)
  5. [オフにする]を選択します(実行中の場合)。
  6. もう一度右クリックして「移動」を選択します
  7. プロンプトに従います

2
これはHyper-Vマシンを移動するだけで、イメージは移動しません。イメージはVHDの場所に保存されます。
olive_tree 2017

@olive_tree docker buildコマンドで作成した画像を見つけようとしています。私はWindows 10コンピューターを使用しています。C:\ Users \ Public \ Documents \ Hyper-V \ Virtual hard diskを調べましたが、MobyLinuxVM.vhdxのみが表示されます。実際の画像はどこに保存されますか?
user3731622

5

Dockerが引き続きVMで実行されていることを覚えておくと、システムパスはMac Osxシステムからではなく、VMを基準にしています。言う通り、すべてがVMファイルに含まれています:

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

このボリュームオプションと、VMホストを一覧表示できるlsコマンドを使用して、Alpineイメージを実行してみます。

docker run --rm -it -v /:/ vm-root alpine:edge ls -l / vm-root

この後、試してみてください:

docker run --rm -it -v /:/ vm-root alpine:edge ls -l / vm-root / var / lib / docker

これで、VMホストからdockerフォルダーを一覧表示できるようになりました。


ありがとう!これは、Hyper-vを使用するWindows 10で私にとってうまくいった唯一の答えです。とらえどころのない/ var / lib / docker / overlay2フォルダーの下の破損したファイルをクリーンアップすることができました。
Ali Cheaito

4

Mac OSXのDockerにはboot2dockerを使用しているため、イメージはに保存されます/Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk


4

この質問にはUbuntuユーザーのみが回答できます。

コマンドを実行すると、Dockerのルートディレクトリが見つかります。 docker info

Dockerディレクトリは次の行で指定されます: " Docker Root Dir: /var/lib/docker"

Dockerイメージについては、Dockerディレクトリ内に保存されています。 /var/lib/docker/aufs/diff/

これらのことはすべてのバージョンのdockerで同じではないことに注意してください。現在、私は1.12.3を使用しています。


4

docker infoコマンドを使用してシステム全体の情報を表示すると、場所が異なる場合があります。

使用中のストレージドライバーに応じて、プール名、データファイル、メタデータファイル、使用データスペース、合計データスペース、使用メタデータスペース、合計メタデータスペースなどの追加情報を表示できます。

データファイルは画像が保存される場所で、メタデータファイルはそれらの画像に関するメタデータが保存される場所です。Dockerを初めて実行すると、/var/lib/dockerマウントされているボリュームで使用可能なスペースから、一定量のデータスペースとメタデータスペースが割り当てられます。

Ubuntuでの例を次に示します(ルートディレクトリを確認してください)。

$ docker info
...
Server Version: 18.06.1-ce
Storage Driver: aufs
 Root Dir: /var/snap/docker/common/var-lib-docker/aufs
...
Docker Root Dir: /var/snap/docker/common/var-lib-docker
...

そして、これがTravis CIの例です(Docker Root Dirを参照)。

$ docker info
Server Version: 17.09.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
...
Docker Root Dir: /var/lib/docker
...

--formatパラメータを使用して、その情報を単一のファイルに抽出できます。たとえば、

$ docker info --format '{{.DriverStatus}}'
[[Root Dir /var/snap/docker/common/var-lib-docker/aufs] [Backing Filesystem extfs] [Dirs 265] [Dirperm1 Supported true]]

または:

$ docker info --format '{{json .DriverStatus}}'
[["Root Dir","/var/snap/docker/common/var-lib-docker/aufs"],["Backing Filesystem","extfs"],["Dirs","265"],["Dirperm1 Supported","true"]]

3

Docker for Windowsでは、ログは次のとおりです。 %USERPROFILE%\AppData\Local\Docker


3

のDockerフォルダを確認してください /var/lib

画像は以下の場所に保存されています:

/var/lib/docker/image/overlay2/imagedb/content

4
これにはsha256フォルダーしかない
toto '

私はあなたが単純にするためのものだと思います:/var/lib/docker/image/overlay2/。また、Dockerエンジンがoverlay2ストレージドライバーとして使用しているため、これが当てはまることにも注意してください。
Guy Avraham

3

docker inspect container_id
MergedDirの下の検索フォルダーを使用する

# example. 
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged 

3

「Dockerデスクトップ」の場合は、Dockerシステムトレイアイコンをクリックし、[設定]をクリックします。 ここに画像の説明を入力してください

[詳細設定]タブで、ディスクイメージの場所を確認できます。

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


2

環境:Windows 10 Pro、Dockerデスクトップ2.0.3.0エッジ

システムトレイのDockerアイコンを右クリックし、設定を選択-詳細:

ディスクイメージの場所(ブラウザーで編集可能):

C:\ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx

(そこにあります-ドキュメントディレクトリは非表示です)


C:\ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdxは、docker buildコマンドによって作成されたイメージですか?
user3731622


1

Fedoraでは、Dockerは利用可能な場合、ストレージにLVMを使用します。私のシステムでdocker infoは:

Storage Driver: devicemapper
 Pool Name: vg01-docker--pool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 9.622 GB
 ...

その場合、ストレージを増やすには、LVMコマンドラインツールまたはblivetなどの互換性のあるパーティションマネージャーを使用する必要があります。


1

Windows 2016では、Docker(DockerMsftProvider)は、Dockerルートの下の「windowsfilter」フォルダを使用します

>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...

Dockerルートの下の「tmp」フォルダーを使用してファイルをダウンロードし、ダウンロードしたファイルを「windowsfilter」フォルダーに抽出した後、ファイルを削除します。


0

Debian Unstable / Sidでは、

docker info システム全体の情報を検索します。

画像はに保存されています /var/lib/docker/image/overlay2/imagedb/contentています

コンテナは /var/lib/docker/containers

Dockerバージョン18.06.0-ce、APIバージョン1.38


0

上記の回答を使用してmacosのDockerバージョン18.09で問題を解決できなかったため、再試行しました。

私のための唯一の実際の解決策はこのdocker-compose.yml構成を使用することでした:

version: '3.7'
...
  services:
    demo-service:
      volumes:
        - data-volume:/var/tmp/container-volume

volumes:
  data-volume:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /tmp/host-volume

で起動した後、docker-compose up私は最終的に持っていた/tmp/host-volumeコンテナ内から書き込み可能なボリュームとして共有MacOSからの:

> docker exec -it 1234 /bin/bash
bash-4.4$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
...
osxfs                488347692 464780044  21836472  96% /var/tmp/container-volume

これが他の人にも役立つことを願っています。


0

画像は内部に保存され/var/lib/docker、適切なstorage driverディレクトリに保存されます。

使用中のストレージドライバは、docker infoコマンドを実行することで判別できます。


0

Docker Getting Startedガイドによると、「ビルドされたイメージ」は「マシンのローカルDockerイメージレジストリ内」にあります。

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

これは疑問につながるので、私にはまだ奇妙です。マシンのローカルDockerイメージレジストリはどこにありますか?

それにもかかわらず、私は間違いなくこの情報は答えとして共有する価値があると思います。


はははTBH私はこれはせいぜいコメントだと思います。素晴らしいコメントになるでしょう!
Mong H. Ng

0

スクリプト作成の目的で必要な場合は、1行のソリューションを使用してください。

PCREが有効になっているPOSIXシェルで、次のことgrepを試してください。

DOCKER_ROOT_DIR="$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"

PowerShellの場合:

$DOCKER_ROOT_DIR="$(docker info 2>&1 | foreach {if($_ -match "Docker Root Dir"){$_.TrimStart("Docker Root Dir: ")}})"

Windows 10(の時点10.0.18999.1)の場合、デフォルトの構成では次を返します:

  • C:\ProgramData\Docker 「Windowsコンテナ」モード
  • /var/lib/docker、「Linuxコンテナ」モード

CentOSではを使用する必要DOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"がありましたが、最終的にはディレクトリではなくファイルです
HairOfTheDog

ディレクトリではありませんか?私にとっては、sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"このディレクトリの内容をリストします。
バルカンレイヴン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.