web-dev-qa-db-ja.com

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

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

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

679
nemo

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

デフォルトではこれはaufsになりますが、カーネルサポートに応じてoverlayoverlay2btrfsdevicemapperまたはzfsにフォールバックできます。ほとんどの場所でこれはaufsになりますが、 RedHatsはdevicemapper と共に使用されます。

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

  • /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
  • これらのファイルはシンプロビジョニングされた「スパース」ファイルなので、見かけほど大きくはありません。
501
Air

Macアプリケーション用のDockerを使用する場合、コンテナは次の場所にあるVM内に格納されているようです。

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

_ update _ mmorin の厚意による):

2019年1月15日現在、このファイルしかないようです。

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

これにはDockerディスクとその中のすべてのイメージとコンテナーが含まれています。

252
mirosval

Mac OS XまたはWindowsの特別な場合、boot2dockerを使用すると、Dockerイメージはboot2dockerによって管理されるVirtualBox VM内に格納されます。

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

OS X:~/VirtualBox VMs/boot2docker-vm

Windows:%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 .
119
Phil L.

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

$ docker info

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

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

85
Marc Rechté

画像は/var/lib/docker/graph/<id>/layerに格納されています。

画像は親画像との差分です。親IDは画像のメタデータ/var/lib/docker/graph/<id>/jsonと共に保存されます。

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

68
creack

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

C:\ Users\Public\Documents\Hyper-V \バーチャルハードディスク\ MobyLinux VM.vhdx

Docker/MobyLinux VMにアクセスするために「Hyper-Vマネージャー」を開くこともできます。

58
Tristan

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

45
mbbce

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

Sudo baobab /var/lib/docker

実際には、画像は/var/lib/docker/aufs/diff内に格納されています

screenshot showing disk analyzer tool baobab running on /var/lib/docker

37
test30

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

20
Sunil Fernandes

Docker for Windows (ネイティブWindows)では、デフォルトのコンテナー格納場所は次のとおりです。

   > docker info
   ...
   Docker Root Dir: C:\ProgramData\Docker
   ...
20
Tormod Haugene

答えました ここ あなたがMacを使っているのならば 

/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2
6
Ricardo Martins

トリスタンの答えを拡張して、WindowsのHyper-Vでは、matthuismanから ステップ でイメージを移動できます。

Windows 10では、

  1. 港湾労働者などを停止
  2. タスクバーの検索ボックスに「Hyper-Vマネージャ」と入力して実行してください。
  3. 左側のペインでPCを選択します(Mineは DESKTOP-CBP **と呼ばれます)。
  4. 正しい仮想マシンを右クリックします(私のものは[MobyLinux VM]という名前です)。
  5. 「無効にする」を選択します(実行中の場合)
  6. もう一度右クリックして「移動」を選択します
  7. プロンプトに従ってください
5
boni

私はMac OSX上のDockerにboot2dockerを使っているので、画像は/Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdkに保存されています。

3
Chu-Siang Lai

私はUbuntuユーザーのためだけにこの質問に答えることができます:

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

Dockerディレクトリは、 "Docker Root Dir: /var/lib/docker"の行で与えられます。

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

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

3
Arif A.

DockerがまだVM内で実行されていることを念頭に置いていると、システムパスはVMからの相対パスであり、Mac Osxシステムからではありません。 言うとおり、すべてがVMファイルに含まれています。 

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

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

docker run --rm -it -v /:/ vm-rootアルパイン:Edge ls -l/vm-root

この後に試してみてください。 

docker run --rm -it -v /:/ vm-rootアルパイン:Edge ls -l /vm-root/var/lib/docker

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

3
user1842947

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

2
omasoud

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

画像は以下の場所に保存されます。

/var/lib/docker/image/overlay2/imagedb/content
2
Chandra Pal

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 のような互換性のあるパーティションマネージャを使用する必要があります。

0
eddygeek

画像は/var/lib/dockerの中に保存され、次に該当するstorage driverディレクトリの下に保存されます。

使用されているストレージドライバは、docker infoコマンドを実行することによって決定できます。

0
anshul

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
Dhanuka

Docker Getting Startedガイドによると "あなたのビルドされたイメージ"は "あなたのマシンのローカルDockerイメージレジストリにある"ということです。

enter image description here

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

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

0
user3731622

上記の回答を使用して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で起動した後、私はついにmacosからの/tmp/Host-volumeをコンテナ内から書き込み可能なボリュームとして共有させました。

> 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
axelrose

Windows 2016では、docker(DockerMsftProvider)はdocker rootの下のフォルダー "windowsfilter"を使用します

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

これはdocker rootの下の "tmp"フォルダを使ってファイルをダウンロードし、ダウンロードしたファイルを "windowsfilter"フォルダに展開した後にファイルを削除します。

0
shanmuga raja

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

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

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

これはUbuntuの例です(check Root Dir ):

$ 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"]]
0
kenorb

docker inspect container_idを使用します
MergedDirの下のフォルダーを見つける

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

環境:Windows 10 Pro、docker desktop 2.0.3.0 Edge

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

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

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

(そこにあります - Documentsディレクトリは隠されています)

0
theRiley