回答:
/var/lib/docker
ディレクトリの内容は、Dockerがストレージに使用しているドライバーによって異なります。
デフォルトでは、となりますaufs
が、にフォールバックすることができoverlay
、overlay2
、btrfs
、devicemapper
またはzfs
カーネルのサポートに応じ。ほとんどの場所でこれは行われますaufs
が、レッドハットはそれに伴いましたdevicemapper
。
-s
または--storage-driver=
Dockerデーモンのオプションを使用して、ストレージドライバーを手動で設定できます。
/var/lib/docker/{driver-name}
イメージのコンテンツ用のドライバー固有のストレージが含まれます。 /var/lib/docker/graph/<id>
json
とlayersize
ファイルに、画像に関するメタデータのみが含まれるようになりました。の場合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
メタデータdocker info
の実際の場所を使用して見つけます。
Docker for Mac
それぞれ1.5 GBの2つのイメージを使用し/var/lib
ており、ディレクトリがありませんdocker
。
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と、その中のすべてのイメージとコンテナが含まれています。
ubuntu
、などnginx
)の場所ですか、それともすべてのコンテナの場所ですか?元の質問は、コンテナではなく画像を要求します ...
Docker for Mac
それぞれ1.5 GBの2つのイメージを使用し~/Library/Containers/Data/com.docker.docker/Data
ていて、ディレクトリがなくcom.docker.driver.amd64-linux
、大きなファイルはvms/0/Docker.raw
3.6 GBだけです。
du -hd1 ~/Library/Containers/com.docker.docker/Data/
これは古いやり方でしたが、今は変更されました。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 .
%USERPROFILE%\.docker\machine\machines
(パスの完全なストップに注意してください)
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
実際には、Dockerイメージは次のコマンドで示すように2つのファイルに格納されています
$ docker info
データファイル:
/var/lib/docker/devicemapper/devicemapper/data
メタデータファイル:
/var/lib/docker/devicemapper/devicemapper/metadata
docker info
非常に便利ですが、出力Docker Root Dir: /var/lib/docker
はイメージの保存場所を示していません(上記のMac固有の回答を参照)。
Hyper-Vを使用する、新しくリリースされた「Docker for Windows」では、データはDocker仮想ハードディスクにあります。
C:\ Users \ Public \ Documents \ Hyper-V \ Virtual hard disks \ MobyLinuxVM.vhdx
「Hyper-Vマネージャー」を開いて、Docker / MobyLinuxVMにアクセスすることもできます。
C:\ProgramData\docker\windowsfilter
てくれます。詳細:stackoverflow.com/a/39971954/188740
画像はに保存され/var/lib/docker/graph/<id>/layer
ます。
画像は親画像とは異なる点に注意してください。親IDは画像のメタデータとともに保存され/var/lib/docker/graph/<id>/json
ます。
docker run
画像の場合。AUFSは、すべてのレイヤーを1つの使用可能なファイルシステムに「マージ」します。
Ubuntuでは、実行中の画像で「遊ぶ」ことができます
sudo baobab /var/lib/docker
実際には、画像は /var/lib/docker/aufs/diff
Dockerツールボックス(docker-machineを使用)を使用している人にとって、Mac OS Xのboot2dockerに関する回答は無効です。docker-machine VMは「デフォルト」と呼ばれ、/Users/<username>/.docker/machine/machines/default/
ディレクトリに存在します。
ではWindows用ドッカー(ネイティブのWindows)デフォルトのコンテナの保管はです:
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
docker build
コマンドを実行しましたが、イメージファイルと思われるファイルが表示されません。いくつかのフォルダーとテキストファイル(service.txtなど)が表示されます。docker build
作成するファイルの種類と拡張子は何ですか?
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
私は画像を見つけました。しかし、それはコンテナではありません。本当にこのデータディレクトリにそれらを参照してくださいしないでください...
ここで回答したように、Macを使用している場合は、次の場所にあります
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2
Tristanの答えを拡張すると、Hyper-Vを使用するWindowsでは、matthuismanから次の手順で画像を移動できます。
Windows 10では
- ドッカーなどを停止する
- タスクバーの検索ボックスに「Hyper-V Manager」と入力して実行します。
- 左側のペインでPCを選択します(私の名前はDESKTOP-CBP **と呼ばれます)
- 正しい仮想マシンを右クリックします(鉱山はMobyLinuxVMと呼ばれます)
- [オフにする]を選択します(実行中の場合)。
- もう一度右クリックして「移動」を選択します
- プロンプトに従います
docker build
コマンドで作成した画像を見つけようとしています。私はWindows 10コンピューターを使用しています。C:\ Users \ Public \ Documents \ Hyper-V \ Virtual hard diskを調べましたが、MobyLinuxVM.vhdxのみが表示されます。実際の画像はどこに保存されますか?
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フォルダーを一覧表示できるようになりました。
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"]]
のDockerフォルダを確認してください /var/lib
画像は以下の場所に保存されています:
/var/lib/docker/image/overlay2/imagedb/content
/var/lib/docker/image/overlay2/
。また、Dockerエンジンがoverlay2
ストレージドライバーとして使用しているため、これが当てはまることにも注意してください。
環境:Windows 10 Pro、Dockerデスクトップ2.0.3.0エッジ
システムトレイのDockerアイコンを右クリックし、設定を選択-詳細:
ディスクイメージの場所(ブラウザーで編集可能):
C:\ Users \ Public \ Documents \ Hyper-V \ Virtual Hard Disks \ DockerDesktop.vhdx
(そこにあります-ドキュメントディレクトリは非表示です)
docker build
コマンドによって作成されたイメージですか?
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などの互換性のあるパーティションマネージャーを使用する必要があります。
上記の回答を使用して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
これが他の人にも役立つことを願っています。
Docker Getting Startedガイドによると、「ビルドされたイメージ」は「マシンのローカルDockerイメージレジストリ内」にあります。
これは疑問につながるので、私にはまだ奇妙です。マシンのローカルDockerイメージレジストリはどこにありますか?
それにもかかわらず、私は間違いなくこの情報は答えとして共有する価値があると思います。
スクリプト作成の目的で必要な場合は、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コンテナ」モードDOCKER_ROOT_DIR="$(sudo docker info 2>&1 | grep -oP '(?<=Data loop file: ).*')"
がありましたが、最終的にはディレクトリではなくファイルです
sudo ls "$(docker info 2>&1 | grep -oP '(?<=^Docker Root Dir: ).*')"
このディレクトリの内容をリストします。