Это действительно зависит от драйвера хранилища Docker.Для последнего рекомендованного overlay2
это можно сделать следующим образом:
Например, у меня есть работающий контейнер Ubuntu:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2bfe549061f0 ubuntu "/bin/bash" 6 seconds ago Up 5 seconds keen_lewin
Далее вы можете проверить свой контейнер на предмет поиска его данных:
$ docker inspect 2bfe549061f0
...
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/39d10569b3d2543b9517c008e2244e1abde19aa3ec482ba0854cbdd332441e28-init/diff:/var/lib/docker/overlay2/32515dae6c1711b05d726b1cd4856f7df3a24a5beb36b412eec7713e1965ce7a/diff:/var/lib/docker/overlay2/b74326fdacfa1e713b567d286e76077f12f357d92a7c5418a850db5b78fb9d2b/diff:/var/lib/docker/overlay2/b14f98b9aefba75ba8d36005833eb4a9ec9aea84358756e753f7cd480d2c7c1a/diff:/var/lib/docker/overlay2/c3432c55caac2d52d2715624bece08daa309e8df0ba5207399b369d09bd6b360/diff:/var/lib/docker/overlay2/b81022c8b19d25f3bd88329ddade8dab337809fc90429c691df5e314bc773320/diff",
"MergedDir": "/var/lib/docker/overlay2/39d10569b3d2543b9517c008e2244e1abde19aa3ec482ba0854cbdd332441e28/merged",
"UpperDir": "/var/lib/docker/overlay2/39d10569b3d2543b9517c008e2244e1abde19aa3ec482ba0854cbdd332441e28/diff",
"WorkDir": "/var/lib/docker/overlay2/39d10569b3d2543b9517c008e2244e1abde19aa3ec482ba0854cbdd332441e28/work"
...
Короче говоря: «чистое» изображение будет сохранено по последнему пути в ключе LowerDir
.В моем случае это путь:
$ sudo ls -l /var/lib/docker/overlay2/b81022c8b19d25f3bd88329ddade8dab337809fc90429c691df5e314bc773320/diff
total 76
drwxr-xr-x 2 root root 4096 мая 26 06:45 bin
drwxr-xr-x 2 root root 4096 апр 24 14:34 boot
drwxr-xr-x 4 root root 4096 мая 26 06:44 dev
drwxr-xr-x 29 root root 4096 мая 26 06:45 etc
drwxr-xr-x 2 root root 4096 апр 24 14:34 home
drwxr-xr-x 8 root root 4096 мая 26 06:44 lib
drwxr-xr-x 2 root root 4096 мая 26 06:44 lib64
drwxr-xr-x 2 root root 4096 мая 26 06:44 media
drwxr-xr-x 2 root root 4096 мая 26 06:44 mnt
drwxr-xr-x 2 root root 4096 мая 26 06:44 opt
drwxr-xr-x 2 root root 4096 апр 24 14:34 proc
drwx------ 2 root root 4096 мая 26 06:45 root
drwxr-xr-x 4 root root 4096 мая 26 06:44 run
drwxr-xr-x 2 root root 4096 мая 26 06:45 sbin
drwxr-xr-x 2 root root 4096 мая 26 06:44 srv
drwxr-xr-x 2 root root 4096 апр 24 14:34 sys
drwxrwxrwt 2 root root 4096 мая 26 06:45 tmp
drwxr-xr-x 10 root root 4096 мая 26 06:44 usr
drwxr-xr-x 11 root root 4096 мая 26 06:45 var
# Enusre it is Ubuntu 18.04
$ sudo cat /var/lib/docker/overlay2/b81022c8b19d25f3bd88329ddade8dab337809fc90429c691df5e314bc773320/diff/etc/os-release
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
Если я создаю что-то внутри контейнера, например,
root@2bfe549061f0:/# echo 123 > check_file.txt
Изменения могут быть найдены в UpperDir
:
$ sudo ls -l /var/lib/docker/overlay2/39d10569b3d2543b9517c008e2244e1abde19aa3ec482ba0854cbdd332441e28/diff
total 4
-rw-r--r-- 1 root root 4 окт 23 15:25 check_file.txt
$ sudo cat /var/lib/docker/overlay2/39d10569b3d2543b9517c008e2244e1abde19aa3ec482ba0854cbdd332441e28/diff/check_file.txt
123
Подобные вещи могут быть выполнены без каких-либо работающих контейнеров через
docker image inspect <IMAGE>
Дополнительная информация:
https://docs.docker.com/storage/storagedriver/overlayfs-driver/#image-and-container-layers-on-disk