Где docker хранит контейнеры windows

SPBDEV Blog

Это последняя статья в этой серии о контейнерах Windows и Docker. Прежде чем углубиться в тему, мы хотим просто описать различные версии Docker, которые существуют сегодня, если вы не работали в сфере Docker, или если вы только что начали использовать Docker. 2 марта 2017 года Docker изменил формат своей версии, а также изменил название пакета Docker Engine на Docker Community Edition или Docker Enterprise Edition.

Установка Docker Community Edition в Windows 10

Первое издание называется Docker Community Edition (CE). Docker (CE) — новое название для бесплатных продуктов Docker. Docker CE совместим со следующей платформой ОС: Mac OS, Windows 10, Amazon AWS, Azure, CentOS, Debian, Fedora и Ubuntu. Вдобавок к этому, Docker CE поставляется в двух вариантах: Edge и Stable:

  • Edge предназначен для пользователей, которые хотят каждый месяц получать последние и самые лучшие функции
  • Stable выпускается ежеквартально и предназначен для пользователей, которым требуется более легкая в обслуживании скорость выпуска

Как заявляют Docker, Community Edition отлично подходит для разработчиков и команд ops, которые начинают создавать приложения для контейнеров. Если вы хотите загрузить эту версию, перейдите в Docker Store. После завершения загрузки и установки вы можете запустить пакет под названием Docker For Windows. На момент написания этой статьи был установлен Docker CE v18.03.

Убедитесь, что вы можете запустить простой контейнер:

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

Или через графический интерфейс:

Теперь используйте параметр platform=linux в режиме Windows Container для запуска образов Linux.

Если вы работаете с предыдущей версией Docker, она будет запускать контейнеры Linux по умолчанию. Таким образом, вы должны изменить этот параметр и переключиться в режим Windows Container с помощью меню лотка Docker:


или выполнив следующую команду в приглашении PowerShell

И это все. Docker CE работает и работает на Windows 10!

Теперь вы можете пойти в Docker Hub, чтобы узнать, какие изображения контейнера доступны. Например, вы можете запустить простой контейнер Windows, содержащий PowerShell Core:

И вы можете легко настроить свой движок Docker с помощью GUI Docker For Windows:

Установка Docker Enterprise Edition на Windows Server 2016

Второе издание называется Docker Enterprise Edition (EE) и является сертифицированной контейнерной платформой для: CentOS, Red Hat Enterprise Linux (RHEL), Ubuntu, SUSE Linux Enterprise Server (SLES), Oracle Linux, Windows Server 2016, IBM Z, Amazon AWS и Azure (Docker EE для Azure). Docker EE доступен в трех уровнях: базовом, стандартном и расширенном. Стандартные и расширенные уровни добавляют расширенное управление контейнерами (Docker Datacenter) и сканирование безопасности Docker. Вы можете найти дополнительную информацию о Docker EE в Docker Store и о том, как установить его в других операционных системах. В этом случае вам просто нужно запустить следующие команды в качестве администратора для установки Docker EE на Windows Server 2016:

Как вы можете заметить, параметр -Force используется для установки самой последней версии Docker EE. И затем выполняется перезапуск хоста Windows-контейнера Windows. В этой статье будет показано использование Docker EE v17.10 на Windows Server 2016.

Ниже приведен цикл выпуска для Docker в 2017 году. Например, v17.03 означает, что этот выпуск был выпущен в марте 2017 года.

Цикл выпуска Docker с веб-сайта Docker

Подводя итог, Docker CE имеет те же основные функции, что и Docker Enterprise Edition, поэтому не бойтесь, вы можете использовать Docker CE вместо Docker EE. Тем не менее, если вы хотите запустить Docker на производстве, мы рекомендуем установить как минимум Docker EE Basic.

Где мои данные?

Представьте, что вы запускаете Windows Container и имеете некоторые важные данные внутри контейнера. Да, контейнеры эфемерны, но вы можете сохранить эти данные за пределами контейнера по многим причинам. Ну, вы можете легко обмениваться данными между Container Host и Windows Container. Кроме того, вы можете также обмениваться данными между двумя контейнерами Windows, если вам нужно. Эта функция очень полезна для многоконтейнерных приложений. Например, приложения должны предоставлять доступ к данным или сохранять данные после удаления контейнера, например, для баз данных или файлов журналов. Эта функция называется Docker Volumes.

Читайте также:  При запуске компьютера восстановление после ошибок windows

В этом разделе я опишу, как работают Docker Volumes и объясняют четыре разных способа обмена данными с контейнерами:

  1. Создание независимого Docker Volume
  2. Совместное использование Docker Volume с несколькими контейнерами
  3. Копирование данных из Container Host в контейнер
  4. Создание Docker Volume из Dockerfile

При использовании контейнеров Windows по-прежнему рекомендуется использовать Docker Volumes для хранения данных на контейнерном хосте, а не на контейнере. Вы также можете создать несколько контейнеров, которые будут использовать один и тот же Docker Volume. Docker Volume будет отображаться как на хосте контейнера, так и на контейнере. Первое, что нужно знать, это то, что объемы докеров сохраняются в следующем скрытом пути на хосте контейнера:

Примечание. Учитывая, что мы переключаемся между хосте контейнера и контейнерами, мы добавим комментарий перед каждой командой.

Создание независимого Docker Volume

Чтобы создать Docker Volume, введите следующую команду:

Windows контейнеры и Docker

Начиная с Windows Server 2016 в операционной системе от Microsoft включена нативная поддержка контейнеров. Это не Linux контейнеры, это контейнеры, которые работают на Windows, и запускают Windows внутри себя.

Данный факт является результатом присоединения Microsoft к Open Container Initiative (OCI). Контейнеры в Windows позволяют запускать приложения, которые изолированы от остальной части системы в переносимых контейнерах. Эти контейнеры включают в себя все, чтобы ваше приложение было полностью функциональным. Так же как это произошло с Linux, Microsoft надеется, что контейнеры изменят характер поставки программного обеспечения для пользователей и в Windows.

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

Тем не менее, Google не был долгое время одинок в своем увлечении контейнерными вычислениями. В какой-то момент из ниоткуда появился Docker, который в отличии от Google стандартизировал процессы доставки контейнеров, а также управления ими. Более того, Docker развивался сообществом энтузиастов в мире открытого исходного кода, что сделало его простым и очень популярным решением. С развитием проекта Docker буквально у каждого желающего появилась возможность получить скорость, гибкость и простоту управления программным обеспечением и инфраструктурой, которую предоставляют контейнеры.

Docker революция стала настолько значительной, что даже Microsoft присоединился к этой инициативе в первую очередь за счет поддержки Docker и Linux в Azure, а теперь и за счет интеграции этой технологии в Windows Server 2016. Самое интересное это то, что контейнеры Windows Server не основаны на Linux, это нечто совершенно новое. Windows контейнеры — это контейнеры, которые работают в Windows и запускают Windows внутри себя.

Причем Microsoft настолько серьезно стала относится к контейнерам, что сейчас активно участвует в Open Container Initiative (OCI), пытаясь перетягивать одеяло на себя так, как будто бы она сама придумала эту технологию.

Контейнер в Windows имеет много общего с его аналогом в Linux. Оба обеспечивают изолированную среду для запуска приложений. И там и там контейнеры используют передовые технологии изоляции для обеспечения портативной, но одновременно ограниченной среды, которая включает в себя практически все, чтобы приложение могло быть полностью функциональным.

Контейнер очень похож на виртуальную машину (ВМ) и часто рассматривается как отдельный тип виртуализации, но это два совершенно разные понятия. Да, каждый работает под управлением операционной системы (ОС), предоставляет внутри себя локальную файловую систему и может быть доступен по сети так же как физический компьютер. Тем не менее, при использовании ВМ вы имеете дело с полной и независимой ОС вместе с виртуальными драйверами устройств, управлением памятью и другими компонентами, которые добавляют к накладные расходы.

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

Microsoft планирует предложить два типа контейнеров в Windows Server 2016: контейнер Windows Server и Hyper-V контейнер. Оба типа функционируют одинаковым образом, и могут быть созданы и управляются одинаково. Там, где они различаются — это в уровне изоляции, который каждый из них обеспечивает.

Контейнер Windows Server разделяет ядро с ОС работает на хост-машине, что означает, что все контейнеры, работающие на этой машине, разделяют одно и то же ядро. В то же время, каждый контейнер поддерживает свой собственный вид на операционную систему, реестр, файловую систему, IP-адреса и другие компоненты, сочетая это с изоляцией, предоставляемой каждому контейнеру при помощи процессов, пространства имен и технологий управления ресурсами.

Читайте также:  Репозиторий для suse linux

Контейнер Windows Server хорошо подходит для ситуаций, в которых и основная ОС, и приложения в контейнерах лежат в пределах той же зоны доверия, например для приложений, которые охватывают несколько контейнеров или образуют общую службу. Тем не менее, контейнеры Windows Server обсуждаются в связи с их зависимостью от процесса обновления ОС хост-системы, который может осложнить обслуживание и препятствовать процессам. Например, патч примененный к хосту может сломать приложение, работающее в контейнере. Что еще более важно, в таких ситуациях, как многопользовательские среды, модель разделяемого ядра может раскрыть систему для уязвимостей приложений и кросс-контейнерных атак.

Hyper-V контейнер решает эти проблемы, предоставляя виртуальную машину, в которой нужно запустить контейнер Windows. При таком подходе контейнер больше не разделяет ядро хост-машины и не имеет зависимости от патчей ОС этой машины. Конечно, такой подход означает некоторую потерю скорости и эффективности упаковки, которые вы получаете с обычным контейнером в Windows Server, но взамен вы получаете более изолированную и безопасную среду.

Вне зависимости от типа контейнера, который вы используете, теперь у вас есть возможность использовать контейнеры с такими технологиями Windows как .NET или PowerShell, что не было возможно раньше. Контейнер для Windows предоставляет все необходимое для обеспечения работы приложения на любом компьютере под управлением Windows Server 2016, давая вам тот уровень переносимости, который был не доступен на протяжении большей части истории Windows. Вы можете создавать свои контейнеры локально, делать их доступными процессов для тестирования и контроля качества, а затем отправить их в команде, занимающейся продуктивом, без необходимости беспокоиться о сложных установках и конфигурациях на каждом шаге этого пути.

Где docker хранит контейнеры windows

590053 просмотра

23 ответа

Мне удалось найти контейнеры в каталоге /var/lib/docker/containers , но я не могу найти изображения.

Под какими каталогами и файлами /var/lib/docker ?

Ответы (23)

506 плюса

Содержимое /var/lib/docker каталога различается в зависимости от драйвера, который Docker использует для хранения .

По умолчанию это будет , aufs но может упасть обратно overlay , overlay2 , btrfs , devicemapper или в zfs зависимости от вашей поддержки ядра. В большинстве мест это будет, aufs но RedHats пошел с devicemapper .

Вы можете вручную установить драйвер хранилища с помощью опции -s или —storage-driver= для демона Docker .

  • /var/lib/docker/ будет содержать специфичное для драйвера хранилище для содержимого изображений.
  • /var/lib/docker/graph/ теперь только содержит метаданные об изображении, в json и layersize файлах.
  • /var/lib/docker/aufs/diff/ содержит содержимое файла изображений.
  • /var/lib/docker/repositories-aufs файл JSON, содержащий локальную информацию об изображении Это можно посмотреть с помощью команды docker images .

В случае devicemapper :

  • /var/lib/docker/devicemapper/devicemapper/data хранит изображения
  • /var/lib/docker/devicemapper/devicemapper/metadata метаданные
  • Обратите внимание, что эти файлы являются «разреженными» файлами с тонкой подготовкой, поэтому они не такие большие, как кажутся.

Автор: Air Размещён: 22.09.2014 04:31

253 плюса

При использовании Docker для Mac Application создается впечатление, что контейнеры хранятся в виртуальной машине, расположенной по адресу:

ОБНОВЛЕНИЕ (Предоставлено mmorin ):

По состоянию на 15 января 2019 года, кажется, есть только этот файл:

который содержит Docker Disk и все образы и контейнеры внутри него.

119 плюса

В особом случае Mac OS X или Windows, используя boot2docker, ваши образы Docker хранятся в виртуальной машине VirtualBox, управляемой boot2docker.

Эта виртуальная машина будет храниться в обычном месте образов VirtualBox:

Окна: %USERPROFILE%/VirtualBox VMs/boot2docker-vm

Вы можете сбросить его, запустив (ВНИМАНИЕ: это уничтожит все изображения, которые вы создали и загрузили до сих пор):

Это особенно полезно, если вы сохранили тонны промежуточных изображений при сборке / отладке сборки без полезных опций —rm, я приведу их здесь для справки: Использование:

Автор: Phil L. Размещён: 06.08.2014 08:54

87 плюса

На самом деле, изображения Docker хранятся в двух файлах, как показано следующей командой

Файл данных: /var/lib/docker/devicemapper/devicemapper/data

Файл метаданных: /var/lib/docker/devicemapper/devicemapper/metadata

68 плюса

Изображения хранятся в /var/lib/docker/graph/ /layer .

Обратите внимание, что изображения просто отличаются от родительского изображения. Родительский идентификатор хранится вместе с метаданными изображения /var/lib/docker/graph/ /json .

Когда вы docker run изображение. AUFS объединит все слои в одну используемую файловую систему.

Автор: creack Размещён: 07.10.2013 09:29

58 плюса

На недавно выпущенном Docker для Windows, который использует Hyper-V, данные находятся на виртуальном жестком диске Docker:

Вы также можете открыть «Диспетчер Hyper-V» для доступа к Docker / MobyLinuxVM.

Автор: Tristan Размещён: 17.07.2016 08:40

46 плюса

Для тех, кто использует панель инструментов Docker (которая использует docker-machine), ответы относительно boot2docker в Mac OS X недопустимы. Виртуальная машина Docker называется «по умолчанию» и существует в /Users/ /.docker/machine/machines/default/ каталоге.

Автор: mbbce Размещён: 17.09.2015 10:24

37 плюса

В Ubuntu вы можете «играть» с изображениями, запущенными

На самом деле, изображения хранятся в /var/lib/docker/aufs/diff

Автор: test30 Размещён: 13.05.2014 01:13

20 плюса

В Docker для Windows (собственная Windows) контейнерное хранилище по умолчанию находится по адресу:

20 плюса

Если вы используете Docker для MAC (не boot2docker ), то местоположение /Users/ UserName> /Library/Containers/com.docker.docker/Data/

6 плюса

Как ответили здесь , если вы находитесь на Mac, он находится по адресу

5 плюса

Более подробно об ответе Тристана, в Windows с Hyper-V вы можете переместить изображение с помощью следующих шагов из matthuisman:

  1. Стоп докер и т. Д.
  2. Введите «Диспетчер Hyper-V» в поле поиска панели задач и запустите его.
  3. Выберите свой ПК в левой панели (мой называется DESKTOP-CBP **)
  4. Щелкните правой кнопкой мыши на правильной виртуальной машине (моя называется MobyLinuxVM)
  5. Выберите «Выключить» (если он запущен)
  6. Щелкните правой кнопкой мыши еще раз и выберите «Переместить»
  7. Следуйте инструкциям

3 плюса

Я использую boot2docker для Docker на Mac OSX, поэтому изображения сохраняются в /Users/ /VirtualBox VMs/boot2docker-vm/boot2docker-vm.vmdk .

3 плюса

Я могу ответить на этот вопрос только для пользователей Ubuntu:

Корневой каталог докера можно найти при запуске команды docker info

Каталог Docker будет указан в этой строке: » Docker Root Dir: /var/lib/docker «

Об образах докеров они хранятся в каталоге докеров: /var/lib/docker/aufs/diff/

Помните, что эти вещи не одинаковы во всех версиях докера. В настоящее время я использую 1.12.3.

Автор: Arif A. Размещён: 08.12.2016 03:42

3 плюса

Если вы помните, что Docker все еще работает в ВМ, системные пути относятся к ВМ, а не из системы Mac Osx. Как говорится, все содержится в файле VM:

Попробуйте запустить Alpine образ с этим параметром тома и командой ls, вы можете перечислить хост VM:

docker run —rm -it -v /: / vm-root alpine: край ls -l / vm-root

После этого просто попробуйте:

запустить docker —rm -it -v /: / vm-root alpine: край ls -l / vm-root / var / lib / docker

Теперь вы можете перечислить папку докера с хоста WM

2 плюса

В Docker для Windows журналы находятся здесь: %USERPROFILE%\AppData\Local\Docker

Автор: omasoud Размещён: 30.07.2016 08:42

2 плюса

проверьте папку докера в /var/lib

изображения хранятся в расположении ниже:

0 плюса

В Fedora Docker использует LVM для хранения, если доступно. На моей системе docker info показывает:

В этом случае, чтобы увеличить объем хранилища, вам придется использовать инструменты командной строки LVM или совместимые менеджеры разделов, такие как blivet .

0 плюса

На Debian Unstable / Sid,

docker info найти общесистемную информацию.

изображения хранятся в /var/lib/docker/image/overlay2/imagedb/content и

контейнеры хранятся в /var/lib/docker/containers

версия докера, версия 18.06.0-ce API 1.38

Автор: Dhanuka Размещён: 14.09.2018 04:55

0 плюса

Используйте docker info команду для отображения общесистемной информации, и ее местоположение может отличаться.

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

В файле данных хранятся изображения, а в файле метаданных хранятся метаданные, относящиеся к этим изображениям. При первом запуске Docker выделяет определенное количество пространства данных и пространства метаданных из пространства, доступного на томе, где /var/lib/docker смонтирован.

Вот пример на Ubuntu (проверьте Root Dir ):

И вот пример на Travis CI (см. Docker Root Dir ):

Вы можете использовать —format параметр, чтобы извлечь эту информацию в один файл, например

Автор: kenorb Размещён: 13.01.2019 06:53

0 плюса

В Windows 2016 докер (DockerMsftProvider) использует папку «windowsfilter» в корневом каталоге докера.

Он использует папку «tmp» в корневом каталоге докера для загрузки файлов и удаляет файлы после извлечения загруженных файлов в папку «windowsfilter».

0 плюса

Я не смог решить вопрос с Docker версии 18.09 на macos, используя приведенные выше ответы, и попытался снова.

Единственным реальным решением для меня было использование этой docker-compose.yml конфигурации:

После запуска docker-compose up я наконец-то получил /tmp/host-volume от macos общий доступный для записи том из контейнера:

Надеюсь, что это помогает другим.

0 плюса

Окружающая среда: Windows 10 Pro, Docker Desktop 2.0.3.0 край

щелкните правой кнопкой мыши значок докера в системном трее, выберите настройки — дополнительно:

Читайте также:  Access windows from android
Оцените статью