- Where are Docker Images Stored?
- Using Docker Info to Find the Docker Image Storage Location
- Where are Docker Images Stored on Linux
- Where are Docker Images Stored on Windows ?
- What about Mac ?
- Learning Docker?
- Где на хосте хранятся образы и контейнеры Docker? — CloudSavvy ИТ
- Разница между изображениями и контейнерами
- Работа с хранилищем образов Docker
- Работа с хранилищем контейнеров Docker
- Доступ к томам
- Изменение файловой системы контейнера Docker
Where are Docker Images Stored?
Where are Docker Images stored on your Docker host machine? This is a fairly common question and one I will aim to tackle here! The answer is that it depends on what system you are running docker on and which Docker storage driver you are using. You may be running Docker on Linux (which is what I’m using for this article) or Windows or other. This article will show you how to find where the docker images are stored on your docker host system by showing you what commands you can run to get the information you need.
To get started, check out what images you currently have. You can view what Docker images you have on your system by running the docker images command:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE python latest 9038c75f5336 12 hours ago 933MB nginx latest 5ad3bd0e67a9 2 days ago 127MB nginx 5a3221f0137b 5 months ago 126MB ubuntu latest a2a15febcdf3 5 months ago 64.2MB
Using Docker Info to Find the Docker Image Storage Location
To find where your images are stored, you can first run the Docker info command, which will list the location of your Docker root directory:
This will output quite a lot of information, but you can make it a little easier to find what we are looking for by searching specifically for the root directory line using grep:
$ docker info | grep "Docker Root Dir" Docker Root Dir: /var/lib/docker
Where are Docker Images Stored on Linux
As you can see from the output above, on my Centos 7 system, the Docker root directory is in /var/lib/docker. Looking inside, there will be a bunch of directories:
drwx------. 2 root root 23 Jan 16 2019 builder drwx------. 4 root root 87 Jan 16 2019 buildkit drwx------. 3 root root 19 Jan 16 2019 containerd drwx------. 3 root root 77 Aug 27 11:33 containers drwx------. 5 root root 50 Aug 20 14:03 devicemapper drwx------. 4 root root 35 Aug 20 13:36 image drwxr-x---. 3 root root 18 Jan 16 2019 network drwx------. 4 root root 30 Jan 16 2019 plugins drwx------. 2 root root 6 Jan 24 11:12 runtimes drwx------. 2 root root 6 Jan 16 2019 swarm drwx------. 2 root root 6 Jan 24 11:12 tmp drwx------. 2 root root 6 Jan 16 2019 trust drwx------. 2 root root 30 Aug 20 13:36 vfs drwx------. 2 root root 24 Jan 16 2019 volumes
Looking inside the images directory on my system, there are two subdirectories:
drwx------. 5 root root 77 Aug 27 11:21 devicemapper drwx------. 5 root root 77 Aug 20 13:36 vfs
These relate to the storage driver that Docker is using for storage. On my Centos system this is devicemapper, on the version of Docker that I am using. However, on a different host OS you may find this to be overlay, overlay2, btrfs, devicemapper or zfs. Note that you can manually set the driver – I’ve written an article covering this here. As mentioned in that article, you can easily check what driver you are currently using by running:
$ docker info | grep "Storage Driver"
Looking inside my /var/lib/docker/image/devicemapper directory I can see:
drwx------. 4 root root 56 Aug 20 14:03 distribution drwx------. 4 root root 35 Jan 16 2019 imagedb drwx------. 5 root root 42 Aug 20 14:03 layerdb -rw-------. 1 root root 1.5K Jan 24 11:39 repositories.json
Running a ‘du –summarize -h’ here shows that this isn’t the location of the image file data as the total storage used amounts to only 3.1M.
Instead, this location contains information about the docker images. The image data itself can be found under the folder corresponding to the storage driver being used. So, in my case, I need to look into /var/lib/docker/devicemapper. Navigating to this directory, then running ‘du’, gives the following output:
Of the subdirectories here, the data one stores the images and the metadata directory stores the image metadata.
/var/lib/docker/devicemapper/devicemapper/data - stores the images /var/lib/docker/devicemapper/devicemapper/metadata - contains the metadata
I ran through all the above on a Centos system. To summarise, the docker image locations on other popular Linux distributions are:
Where are Docker Images Stored on Windows ?
On windows, the default location for docker images is C:\ProgramData\DockerDesktop
What about Mac ?
On a Mac, the default location for Docker images is ~/Library/Containers/com.docker.docker/Data/vms/0/. Note than on Windows and Mac, Docker runs Linux containers in a virtual environment.
Hopefully this has helped you better understand how and where Docker stores its data, and helps answer the question of where Docker images are stored on your Docker host system.
Learning Docker?
If you are starting out, then I highly recommend this book.
Then it’s time to take your Docker skills to the next level with this book (It’s my favorite) and, check out my page on Docker Certification.
Где на хосте хранятся образы и контейнеры Docker? — CloudSavvy ИТ
Docker использует два типа форматов для представления запущенных процессов — образы и контейнеры, и оба хранят данные на диске вашего компьютера. Мы поговорим о командах, которые Docker предоставляет для обработки данных, и о том, как вы можете использовать их для доступа к файлам изображений и контейнеров.
Разница между изображениями и контейнерами
Образы — это то, что вы создаете, когда запускаете docker build; они хранятся в реестре контейнеров, таком как Docker Hub, и содержат все файлы и код для запуска приложения. Вы можете думать о них как о файлах ISO для операционной системы виртуальной машины.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Контейнеры создаются из образов, и они похожи на настоящую виртуальную машину, на которой выполняется приложение. У вас может быть несколько контейнеров, работающих параллельно с одним и тем же образом. Каждый контейнер будет иметь свою собственную файловую систему, необязательно созданную с помощью «монтирования томов», которые привязывают данные от хоста к контейнеру.
Работа с хранилищем образов Docker
Изображения хранят все содержимое изображения на вашем диске. Всякий раз, когда вы берете изображение из Интернета, оно загружается и сохраняется, обычно навсегда. Изображения могут быть очень большими, поэтому со временем они могут накапливаться, особенно для ноутбуков с ограниченным объемом памяти.
Если вы хотите получить прямой доступ к данным изображения, они обычно хранятся в следующих местах:
- Linux: / var / lib / docker /
- Windows: C: ProgramData DockerDesktop
- macOS: ~ / Библиотека / Контейнеры / com.docker.docker / Data / vms / 0 /
Однако трогать эти данные — плохая идея. Хранилище Docker сложное и на самом деле сильно различается в зависимости от какой драйвер памяти он использует. Linux теперь по умолчанию использует overlay2 в большинстве дистрибутивов, что даже недоступно для большинства конечных пользователей. Игнорирование этого может привести к потере данных.
Вместо этого Docker предоставляет управляемые команды для обработки изображений. Вы можете просмотреть все версии загруженных изображений с помощью простой команды:
К счастью, это не так плохо, как кажется, поскольку в образах Docker версии хранятся постепенно. Это означает, что всякий раз, когда вы загружаете новую версию, она заменяет только те части, которые были изменены. Если вы часто используете один и тот же образ снова и снова, вы, вероятно, не будете слишком дорого стоить для хранения.
Однако, если вы используете много разных изображений, у вас может быть сохранено много изображений, которые даже больше не используются. Чтобы очистить их, Docker предоставляет встроенную команду для запуска сборки мусора. Это приведет к удалению всех изображений, на которые нет ссылок, т. Е. Не отмеченных тегами или не упоминаемых каким-либо контейнером.
Чтобы удалить все старые образы, не используемые существующими контейнерами, запустите его с флагом -a:
Это охватывает основной вариант использования, но есть еще несколько полезных команд:
- inspect: отображает информацию о версии контейнера.
- save & load: сохраняет и загружает изображения в tar-архив.
- rm: удаляет изображение напрямую.
- pull / push: обновления из удаленного реестра.
- история: предоставляет журнал изменений.
Работа с хранилищем контейнеров Docker
Вы можете просмотреть всю информацию о контейнере с помощью docker inspect, который показывает драйверы и данные файловой системы, а также все существующие монтирования и тома.
докер проверяет идентификатор контейнера
Контейнеры хранят данные двумя способами. Во-первых, это базовая файловая система, которая копируется из образа и уникальна для каждого контейнера. Docker использует «нижний каталог» и «верхний каталог», которые представляют собой отдельные уровни, которые объединяются в одну гибридную файловую систему. Нижний каталог хранит данные базового образа, а верхний каталог хранит все, что было изменено во время выполнения, например файлы журнала. В любом случае их хранение зависит от того, какой драйвер файловой системы Docker настроен на использование.
Тогда есть горы, которые привязывают каталоги с хоста к контейнеру, обычно управляются автоматически с помощью функции Docker, называемой тома. Они обычно хранятся и доступны для конечных пользователей. Если вы выполняете какую-либо работу, требующую изменения данных в запущенных контейнерах, вам, вероятно, следует изменить том или привязать монтирование.
Доступ к томам
Доступ к монтированию привязки можно получить напрямую, и это отличный выбор, если вы хотите сохранить конфигурацию, которая используется для многих контейнеров, или хранить доступные данные, которые сохраняются при перезапуске контейнера.
Если вы хотите изменить данные, хранящиеся в томах, вы тоже можете это сделать. Они хранятся в стандартном формате, доступном из Linux:
/ вар / библиотека / докер / тома / volumeID / _data
Вы можете получить идентификатор тома и информацию с помощью docker volume inspect.
Как и изображения, тома могут устареть. Вы можете легко их удалить, но их резервное копирование и перенос — более сложный процесс.
объем докера удалить объем докера rm volumeID
Изменение файловой системы контейнера Docker
Если вы хотите изменить файловую систему контейнера, как и изображения, это плохая идея. В большинстве случаев вам следует создать новую версию контейнера с обновленными изменениями и развернуть обновление.
Однако, если вы хотите внести некоторые быстрые изменения, не останавливая контейнер, лучший способ — просто открыть оболочку bash внутри контейнера и изменить ее с помощью Docker. Сделать это очень просто — запустите docker exec в контейнере и передайте «bash» в качестве команды:
docker exec -it контейнер bash
Отсюда вы можете использовать обычные команды Linux. Если вы хотите сделать это удаленно, вы можете установить SSH-сервер в свой контейнер и привязать порт 22 к другому порту на хосте.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)