Где лежат контейнеры docker linux

Где на хосте хранятся образы и контейнеры 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 /
Читайте также:  What is dovecot in linux

Однако трогать эти данные — плохая идея. Хранилище Docker сложное и на самом деле сильно различается в зависимости от какой драйвер памяти он использует. Linux теперь по умолчанию использует overlay2 в большинстве дистрибутивов, что даже недоступно для большинства конечных пользователей. Игнорирование этого может привести к потере данных.

Вместо этого Docker предоставляет управляемые команды для обработки изображений. Вы можете просмотреть все версии загруженных изображений с помощью простой команды:

К счастью, это не так плохо, как кажется, поскольку в образах Docker версии хранятся постепенно. Это означает, что всякий раз, когда вы загружаете новую версию, она заменяет только те части, которые были изменены. Если вы часто используете один и тот же образ снова и снова, вы, вероятно, не будете слишком дорого стоить для хранения.

Однако, если вы используете много разных изображений, у вас может быть сохранено много изображений, которые даже больше не используются. Чтобы очистить их, Docker предоставляет встроенную команду для запуска сборки мусора. Это приведет к удалению всех изображений, на которые нет ссылок, т. Е. Не отмеченных тегами или не упоминаемых каким-либо контейнером.

Чтобы удалить все старые образы, не используемые существующими контейнерами, запустите его с флагом -a:

Это охватывает основной вариант использования, но есть еще несколько полезных команд:

  • inspect: отображает информацию о версии контейнера.
  • save & load: сохраняет и загружает изображения в tar-архив.
  • rm: удаляет изображение напрямую.
  • pull / push: обновления из удаленного реестра.
  • история: предоставляет журнал изменений.

Работа с хранилищем контейнеров Docker

Вы можете просмотреть всю информацию о контейнере с помощью docker inspect, который показывает драйверы и данные файловой системы, а также все существующие монтирования и тома.

докер проверяет идентификатор контейнера

Контейнеры хранят данные двумя способами. Во-первых, это базовая файловая система, которая копируется из образа и уникальна для каждого контейнера. Docker использует «нижний каталог» и «верхний каталог», которые представляют собой отдельные уровни, которые объединяются в одну гибридную файловую систему. Нижний каталог хранит данные базового образа, а верхний каталог хранит все, что было изменено во время выполнения, например файлы журнала. В любом случае их хранение зависит от того, какой драйвер файловой системы Docker настроен на использование.

Читайте также:  Linux mint переустановка grub

Тогда есть горы, которые привязывают каталоги с хоста к контейнеру, обычно управляются автоматически с помощью функции Docker, называемой тома. Они обычно хранятся и доступны для конечных пользователей. Если вы выполняете какую-либо работу, требующую изменения данных в запущенных контейнерах, вам, вероятно, следует изменить том или привязать монтирование.

Доступ к томам

Доступ к монтированию привязки можно получить напрямую, и это отличный выбор, если вы хотите сохранить конфигурацию, которая используется для многих контейнеров, или хранить доступные данные, которые сохраняются при перезапуске контейнера.

Если вы хотите изменить данные, хранящиеся в томах, вы тоже можете это сделать. Они хранятся в стандартном формате, доступном из Linux:

/ вар / библиотека / докер / тома / volumeID / _data

Вы можете получить идентификатор тома и информацию с помощью docker volume inspect.

Как и изображения, тома могут устареть. Вы можете легко их удалить, но их резервное копирование и перенос — более сложный процесс.

объем докера удалить объем докера rm volumeID

Изменение файловой системы контейнера Docker

Если вы хотите изменить файловую систему контейнера, как и изображения, это плохая идея. В большинстве случаев вам следует создать новую версию контейнера с обновленными изменениями и развернуть обновление.

Однако, если вы хотите внести некоторые быстрые изменения, не останавливая контейнер, лучший способ — просто открыть оболочку bash внутри контейнера и изменить ее с помощью Docker. Сделать это очень просто — запустите docker exec в контейнере и передайте «bash» в качестве команды:

docker exec -it контейнер bash

Отсюда вы можете использовать обычные команды Linux. Если вы хотите сделать это удаленно, вы можете установить SSH-сервер в свой контейнер и привязать порт 22 к другому порту на хосте.

Читайте также:  Intel i219 driver linux

Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)

Источник

Как узнать где лежат Docker контейнеры и их логи (Linux)?

Собрал два конйтнера, но их нет в
/var/lib/docker/containers
При этом в списке docker images они есть и в docker logs я вижу логи.
Сборка происходит через композ (версия 3 и 3.9).
Через find по id или имя контейнера ничего не нашел.
Вопрос — куда Докер собирает и размещает мои собранные контейнеры, а также их логи (Linux)?

Средний 6 комментариев

Maksclub

sergueik

sudo ls /var/lib/docker/overlay2

sudo ls /var/lib/docker/containers

— это containers
но вероятно удален после завершения
docker container ls -a

если помогло — я положу в ответы вы отметите решением

chupasaurus

сергей кузьмин, Поправки: overlay2/ — слои образов и контейнеров, containers/ — конфиги, файловые логи и точки монтирования каждого контейнера. docker images берёт данные из image/

А ещё docker info, где есть информация по storage driver. И вообще, /var/lib/docker легко переопределить через конфиг (многие перекидывают на отдельный диск, чтобы не забивать место в разделе с системой).

sudo ls /var/lib/docker/containers

2dbfbdd6094e345c1f5e04cca13cd2a1f282aee2a1987e6eb45b65f02a6b36aa a1fbf3cf03733eaa25d087d1df13586e77ca3b263920e241b20f10011d49eb59 ce9d1a0078fa19b1bac9c65f84ebb3b1b34eb91a46f283298284b025c67160c9 7352fe7d6685f173cf276155ecbaee5d59911ec3eba249fd58c1b6c4f09a620d cc4dce4bf6c81646b8d5628c885acfb701b1b216d29da2eb4213bcf6f3814cfb

Но в списке docker container их нет:

CONTAINER ID STATUS 8ef719b7616d Exited (1) 4 hours ago 5926dcc2c8db Up 5 hours c71b890073e7 Up 5 hours (healthy) d61d4fe9ec4f Up 5 hours dfbb84ade456 Up 5 hours 691dd11b54b6 Exited (130) 2 days ago 87dc514e4794 Exited (0) 2 days ago 1899f1df359c Exited (0) 2 days ago 857d9987e7f8 Exited (0) 2 days ago

Все нужные контейнеры запущены.

Источник

Оцените статью
Adblock
detector