私はなんとか/var/lib/docker/containers
ディレクトリの下にコンテナを見つけることができましたが、画像が見つかりません。
/var/lib/docker
の下のディレクトリとファイルは何ですか?
/var/lib/docker
ディレクトリの内容は、Dockerがストレージに使用している ドライバによって異なります 。
デフォルトではこれはaufs
になりますが、カーネルサポートに応じてoverlay
、overlay2
、btrfs
、devicemapper
またはzfs
にフォールバックできます。ほとんどの場所でこれはaufs
になりますが、 RedHatsはdevicemapper
と共に使用されます。
Dockerデーモン の -s
または--storage-driver=
オプションを使用して手動でストレージドライバを設定できます。
/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
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ディスクとその中のすべてのイメージとコンテナーが含まれています。
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 .
実際には、Dockerイメージは次のコマンドで示すように2つのファイルに保存されています。
$ docker info
データファイル:
/var/lib/docker/devicemapper/devicemapper/data
メタデータファイル:
/var/lib/docker/devicemapper/devicemapper/metadata
画像は/var/lib/docker/graph/<id>/layer
に格納されています。
画像は親画像との差分です。親IDは画像のメタデータ/var/lib/docker/graph/<id>/json
と共に保存されます。
あなたが画像をdocker run
する時。 AUFSはすべてのレイヤーを1つの使用可能なファイルシステムに「マージ」します。
Hyper-Vを使用する、新しくリリースされた「Docker for Windows」では、データはDocker仮想ハードディスクにあります。
C:\ Users\Public\Documents\Hyper-V \バーチャルハードディスク\ MobyLinux VM.vhdx
Docker/MobyLinux VMにアクセスするために「Hyper-Vマネージャー」を開くこともできます。
Dockerツールボックスを使用している(docker-machineを使用している)人にとって、Mac OS X上のboot2dockerに関する回答は無効です。 docker-machine VMは "default"と呼ばれ、/Users/<username>/.docker/machine/machines/default/
ディレクトリにあります。
Ubuntuでは、実行中の画像で「遊ぶ」ことができます
Sudo baobab /var/lib/docker
実際には、画像は/var/lib/docker/aufs/diff
内に格納されています
MACにDockerを使用している場合(boot2docker
ではない)、場所は/Users/<</>UserName></>/Library/Containers/com.docker.docker/Data/
です。
Docker for Windows (ネイティブWindows)では、デフォルトのコンテナー格納場所は次のとおりです。
> docker info
...
Docker Root Dir: C:\ProgramData\Docker
...
答えました ここ あなたがMacを使っているのならば
/Users/MyUserName/Library/Containers/com.docker.docker/Data/com.docker.driver.AMD64-linux/Docker.qcow2
トリスタンの答えを拡張して、WindowsのHyper-Vでは、matthuismanから ステップ でイメージを移動できます。
Windows 10では、
- 港湾労働者などを停止
- タスクバーの検索ボックスに「Hyper-Vマネージャ」と入力して実行してください。
- 左側のペインでPCを選択します(Mineは DESKTOP-CBP **と呼ばれます)。
- 正しい仮想マシンを右クリックします(私のものは[MobyLinux VM]という名前です)。
- 「無効にする」を選択します(実行中の場合)
- もう一度右クリックして「移動」を選択します
- プロンプトに従ってください
私はMac OSX上のDockerにboot2dockerを使っているので、画像は/Users/<USERNAME>/VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk
に保存されています。
私はUbuntuユーザーのためだけにこの質問に答えることができます:
Dockerのルートディレクトリは、docker info
コマンドを実行すると見つかります。
Dockerディレクトリは、 "Docker Root Dir: /var/lib/docker
"の行で与えられます。
Dockerイメージについては、それらはdockerディレクトリの中に保存されています: /var/lib/docker/aufs/diff/
これらのことがdockerのすべてのバージョンで同じというわけではないことを忘れないでください。現在、私は1.12.3を使用しています。
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フォルダを一覧表示できるようになりました
Docker for Windowsでは、ログは次のとおりです。%USERPROFILE%\AppData\Local\Docker
/var/lib
でdockerフォルダを確認してください
画像は以下の場所に保存されます。
/var/lib/docker/image/overlay2/imagedb/content
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 のような互換性のあるパーティションマネージャを使用する必要があります。
画像は/var/lib/docker
の中に保存され、次に該当するstorage driver
ディレクトリの下に保存されます。
使用されているストレージドライバは、docker info
コマンドを実行することによって決定できます。
Debian Unstable/Sidについて、
システム全体の情報を見つけるためのdocker info
。
画像は/var/lib/docker/image/overlay2/imagedb/content
と
コンテナは/var/lib/docker/containers
に格納されています
dockerのバージョン18.06.0-ce
、APIのバージョン1.38
Docker Getting Startedガイドによると "あなたのビルドされたイメージ"は "あなたのマシンのローカルDockerイメージレジストリにある"ということです。
今度はそれが質問につながるので、これはまだ私には奇妙です。私のマシンのローカルDockerイメージレジストリはどこにありますか?
それにもかかわらず、私は間違いなくこの情報は答えとして共有する価値があると思います。
上記の回答を使用して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
これが他の人にも役立つことを願っています。
Windows 2016では、docker(DockerMsftProvider)はdocker rootの下のフォルダー "windowsfilter"を使用します
>docker info
...
Storage Driver: windowsfilter
...
Docker Root Dir: C:\ProgramData\docker
...
これはdocker rootの下の "tmp"フォルダを使ってファイルをダウンロードし、ダウンロードしたファイルを "windowsfilter"フォルダに展開した後にファイルを削除します。
システム全体の情報を表示するには 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"]]
docker inspect container_id
を使用します
MergedDirの下のフォルダーを見つける
# example.
"MergedDir": "/var/lib/docker/overlay2/f40cc2ea8912ec3b32deeef5a1542a132f6e918acb/merged
環境:Windows 10 Pro、docker desktop 2.0.3.0 Edge
システムトレイのdockerアイコンを右クリックし、設定を選択します - 詳細:
ディスクイメージの場所(ブラウザから編集可能):
C:\ Users\Public\Documents\Hyper-V\Virtual Hard Disk\DockerDesktop.vhdx
(そこにあります - Documentsディレクトリは隠されています)