Оглавление |
---|
Информацию о применении системы изоляции приложений docker в ОС Astra Linux Special Edition 1.7 см. в статье Установка и администрирование Docker в Astra Linux Special Edition.
Информация | ||
---|---|---|
|
- ОС СН Смоленск 1.7
Информация | ||
---|---|---|
| ||
|
Аннотация
Информация | ||
---|---|---|
| ||
В ОС реализован механизм контейнеризации, обеспечивающий режим виртуализации и изоляции ресурсов на уровне ядра операционной системы. Использование данного механизма позволяет запускать приложение и необходимый ему минимум системных библиотек в полностью стандартизованном контейнере, соединяющемся с хостовой машиной при помощи определенных интерфейсов. Контейнеры используют ядро операционной системы хостовой машины и, в отличие от полной виртуализации, не требуют эмуляции аппаратного обеспечения. Приложения, запущенные внутри разных контейнеров, изолированы и не могут влиять друг на друга. |
В статье рассматриваются базовые отличия системы изоляции приложений docker и системы виртуализации (см. Виртуализация QEMU/KVM в Astra Linux), и вытекающие из этих отличий ограничения применения, разъясняется базовая терминология, применяемая к объектам docker.
Ограничения применения
Предупреждение |
---|
|
Якорь | ||||
---|---|---|---|---|
|
Виртуализация —
Термины
Виртуализация - технология, позволяющая запускать экземпляры операционных систем (гостевые машины) параллельно и изолированно на единственной хост-машине. При этом каждой гостевой машине предоставляются собственные ресурсы, операционной системе предоставляется полноценная виртуальная машина, имеющая собственные виртуальные аппаратные ресурсы, и гостевая операционная система использует собственное ядро. При этом гостевая виртуальная машина может отличаться по архитектуре от хост-машины, а гостевая операционная система может быть полностью отличной от операционной системы хост-машины. Виртуализация обеспечивает полное моделирование используемого оборудования полностью индивидуальное для каждой гостевой ОС. Гостевые ОС полностью изолированы друг от друга, и каждая гостевая ОС работает в собственной виртуальной программно-аппаратной среде, полностью копирующей реальное оборудование и содержащей полную копию всех необходимых ресурсов;
Изоляция приложений (контейнерная изоляция) — технология, позволяющая выполнять экземпляры приложений (групп приложений) в изолированной среде внутри операционной системы хост-машины. Традиционно контейнерная изоляция приложений обозначается термином "контейнерная виртуализация", хотя в самом деле полноценной виртуализацией не является. Из-за этого "контейнер" иногда рассматривают в качестве аналога "виртуальной машины", хотя он ей не является. Контейнерная изоляция - технология, обеспечивающая совместное использование ресурсов операционной системы хост-машины гостевыми приложениями. Экземпляры приложений, выполняющихся в контейнерах, изолированы друг от друга и (насколько это возможно) от хостовой операционной системы, но при этом аппаратные и программные ресурсы хостовой ОС используются ими совместно;
Гипервизор — Гипервизор - программное обеспечение, позволяющее запускать множественные гостевые (виртуальные) машины или контейнеры на единственной физической машине (хост-машине), а также обеспечивающее предоставление ресурсов виртуальным машинам .и обеспечивающее ограничение и разграничение прав доступа;
Гостевая машина - — виртуальная машина, запускаемая в изолированной среде системы виртуализации внутри хост-машины.хостовой операционной системы;
Гостевая операционная система - — операционная система, работающая на гостевой машине. Термин "гостевая операционная система" неприменим к контейнерам, так как контейнеры не предоставляют полноценную операционную систему, а в разной мере используют хостовую операционную систему;
Контейнер (container) — изолированная среда выполнения приложений (групп приложений), работающая в хостовой операционной системе;
Образ (image) — набор данных (файлов, инструкций) для создания контейнеров. Может рассматриваться как моментальный снимок состояния виртуальной машины, с которого начинается её работа;
Хостовая операционная система, хостовая ОС - операционная система хост-машины;
Хост-машина - машина, в операционной системе которой запущена система виртуализациизапущен гипервизор виртуализации или контейнерной изоляции, под управлением которой которого работают гостевые машины или контейнеры.
Типы виртуализации в ОС СН
Программное обеспечение входящее в состав ОС СН поддерживает два типа виртуализации:
Полная виртуализация - технология виртуализации обеспечивающая полное моделирование используемого оборудования полностью индивидуальное для каждой гостевой ОС. Гостевые ОС полностью изолированы друг от друга, и каждая гостевая ОС работает в собственной программно-аппаратной среде, полностью копирующей реальное оборудование и содержащей полную копию всех необходимых ресурсов;Контейнерная виртуализация - технология виртуализации обеспечивающая совместное использование ресурсов гостевыми операционными системами. Экземпляры операционных системах, выполняющихся в контейнерах, изолированы друг от друга, но при этом некоторые ресурсы используются ими совместно.
Графическое сравнение технологий виртуализации и контейнерной изоляции на примере QEMU/KVM (виртуализация) и docker (изоляция) приведено на рисунке:
draw.io Diagram | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Системы
виртуализации в ОС СНВ состав ОС СН входят две системы виртуализации, поддерживающие два описанных выше типа виртуализации:
- libvirt - система полной виртуализации;
- docker - система контейнерной виртуализации.
Система контейнерной виртуализации Docker
Термины
Образ - набор упорядоченных слоёв, фактически сумма изменений, внесённых в систему, текущее состояние системы;
Слой - в трактовке Docker набор изменений файловой системы, другими словами - некий моментальный снимок состояния системы. Слои доступны только для чтения, каждое изменение порождает новый слой. Любой слой может использоваться несколькими контейнерами одновременно;
Контейнер - экземпляр образа docker, образ, находящийся в работе, то есть образ с новым слоем текущих изменений. При работе контейнера все изменения сохраняются в новом слое, а все предыдущие слои остаются неизменными;
Реестр образов - сетевое хранилище подготовленных образов, доступных для загрузки на целевые машины.
Особенности
Система контейнерной виртуализации Docker позиционируется не только как система виртуализации, но как система быстрого распространения и развёртывания приложений.
Традиционный способ развёртывания приложений предполагает:
виртуализации и контейнерной изоляции в Astra Linux
В составе Astra Linux поддерживаются следующие системы виртуализации и контейнерной изоляции:
- QEMU/KVM - полноценная система виртуализации. См. Виртуализация QEMU/KVM в Astra Linux;
- lxc - система контейнерной изоляции, ориентированная на работу с приложениями - операционными системами (см. Система контейнерной изоляции уровня ОС LXC);
- docker - система контейнерной изоляции, ориентированная на работу с приложениями - системными службами (рассматривается далее в настоящей статье);
- firejail - система контейнерной изоляции пользовательского уровня, ориентированная на работу с пользовательскими приложениями (см. Система изоляции пользовательских приложений FireJail).
Система контейнерной виртуализации Docker
Назначение
Система контейнерной изоляции Docker является в первую очередь системой быстрого распространения и развертывания системных приложений (системных служб, таких, как, например почтовый сервер exim или web-сервер apache2).Традиционный способ развертывания подобных приложений без использования Docker предполагает следующие шаги:
- передача администратору целевой ОС инструкций по установке и комплекта неких файлов приложения, как правило, в форме debian-пакета, содержащего:
- исполнимые файлы;
- конфигурационные файлы;
- сценарии установки и удаления.
- выполнение администратором целевой ОС предоставленных инструкций на целевой машине с целью развёртывания устанавливаемого приложения
- передачу пользователю приложения комплекта неких файлов приложения как правило:
- исполнимый файл;
- конфигурационный файл;
- сценарии установки и удаления;
- инструкции по установке;
- выполнение пользователем для развёртывания предоставленных сценариев и инструкций на целевой машине.
При этом, несмотря на то, что разработчиками приложений тратятся значительные усилия на создание и проверку сценариев развёртывания, учитывающих всевозможные возможные особенности целевыз целевых машин и возможные конфликты с другими приложениями, выполнение действий по установке часто завершается неудачей , - в силу специфических особенностей целевых машин, все варианты которых предусмотреть невозможно.
Docker предлагает альтернативный вариант развёртывания: развертывания приложений, при котором поставщик приложений передаёт пользователям приложений предварительно настроенные контейнеры с приложениями. Эти контейнеры просто запускаются пользователем на целевой машине, предоставляя каждому приложению изолированное преварительно предварительно настроенное окружение для работы. Таким образом, исключается существенная часть ошибокпроблем развертывания, связанных с предварительной настройкой нестандартных нестандартностью пользовательских систем. Хорошим примером использования возможностей Docker по быстрому развёртыванию развертыванию приложений является пример развёртывания развертывания собственного реестра образов, выполняемого путём путем простого скачивания подготовленного образа (см. раздел "Администрирование" - "Создание собственного реестра образов")."Реестр образов".
Помимо этого Docker может применяться для изоляции пользовательских приложений, хотя в первую очередь для это предназначен firejail (см. Система изоляции пользовательских приложений FireJail).
Рекомендованный сценарий применения Docker
Рекомендованный сценарий применения Docker учитывает основное назначение Docker: быстрое развертывание приложений. Порядок действий
- Создать (загрузить) исходный образ;
- Создать из этого образа контейнер, работая в котором выполнить и сохранить дополнительные настройки, то есть настройки запуска нужного приложения в ограниченной среде Docker;
- Конвертировать контейнер с выполненными настройками в новый образ;
- Скопировать новый образ на целевые машины для использования;
- На целевых машинах дальнейшее использование зависит от поставленных задач:
- Можно использовать контейнеры, сохраняющие возникающие при эксплуатации изменения в этих контейнерах;
- Можно использовать образ, монтируя к нему внешние каталоги, в которых сохраняются изменения, не сохраняя изменения в контейнерах;
- Можно комбинировать указанные варианты;
- В любом из выбранных вариантов использования далее установленное приложение эксплуатируется на целевой машине в контейнере.
Преимущества
Главное преимущество контейнеров в том, что по сравнению с системами виртуализации При этом, по сравнению с системами полной виртуализации, запуск контейнеров требует значительно меньших вычислительных ресурсов, чем запуск полноценной виртуальной машины.
Кроме этого и, кроме того, Docker для экономии ресурсов поддерживает систему повторного использования "слоёвслоев". "Слой" в терминологии Docker - это некий моментальный снимок состояния системы, а "образ" - это итоговое состояние системы с учётом состояний всех подлежащих слоёв, полученное из базовой системы наложением (применением) всех слоев. При этом "слои" могут использоваться повторно разными "образами":
draw.io Diagram | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Дополнительным эффектом от повторного использования "слоёвслоев" является снижение объёмов объемов передаваемых данных при передаче подготовленных в виде образов прикладных программ: при использовании реестра образов Docker передаваться будет только новые слои, в примере выше - слой "Базовая система Astra Linux SE" будет загружен из реестра образов только образов только один раз, далее загружаться будут только новые слои.
Ограничения Docker
Предупреждение |
---|
|
Администрирование Docker
Установка Docker
В ОС СН Смоленск 1.7 Docker представлен пакетом docker.io и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
Command |
---|
sudo apt install docker.io |
Установка выполняется от имени пользователя, являющегося администратором системы, и после установки Docker рекомендуется предоставить этому пользователю право работать с контейнерами не используя sudo. Для этого пользователя нужно включить в группу docker:
Command |
---|
sudo usermod -aG docker $USER |
Изменение вступит в силу после перезапуска пользовательской сессии.
Для более ранних версий Astra Linux см. статью: Установка и настройка Docker в ОС Astra Linux
Создание собственного реестра образов
Загрузить подготовленный образ Docker, содержащий приложение "Реестр образов Docker". Образ "Реестр образов Docker" загружается из реестра образов Docker:
Command | ||
---|---|---|
| ||
Unable to find image 'registry:2' locally |
После выполнения указанной команды локальный реестр образов автоматически запущен и готов к работе. Управление работой контейнера реестра осуществляется так же как управление любым другим контейнером. например остановка работы реестра:
Command |
---|
sudo docker container stop registry |
Удаление реестра:
Command |
---|
sudo docker container stop registry && sudo docker container rm -v registry |
Настройка внешнего доступа к собственному реестру
Создание собственного образа
См. статью: Создание собственного образа для использования в Docker
Управление Docker-ом
Подробная справка по командному интерфейсу Docker представлена на сайте разработчиков: https://docs.docker.com/engine/reference/commandline/docker/. При работе в системе список команд можно получить с помощью команды:
Command |
---|
docker help |
Более подробную справку по аргументам команд можно получить с помощью ключа --help, например:
Command |
---|
docker attach --help |
Часто употребимые команды (аргументы команд для краткости не указаны):
docker attach
Управление контейнерами:
docker container create | создать новый контейнер |
docker container exec | выполнить команду в активном контейнере |
docker container run | выполнить команду в новом контейнере |
docker container start | активировать контейнер (контейнеры) |
docker container stop | деактивация контейнера |
Управление образами:
docker image build | создание нового образа |
Выполнить команду в новом контейнере, то есть: создать в существующем образе новый изменяемый слой, и выполнить команду, сохраняя изменения в этом слое
docker run --rm | удалить новый (изменённый) слой после деактивации контейнера, т.е. сохранить образ неизменным |
Загрузка образа в реестр
Получить список доступных на локальной машине образов:
Command | ||
---|---|---|
| ||
REPOSITORY TAG IMAGE ID CREATED SIZE wiki/astralinux se17rc5 5d69ce8720a7 25 hours ago 318MB registry 2 678dfa38fcfa 12 days ago 26.2MB localhost:5000/hello-world-se latest bf756fb1ae65 12 months ago 13.3kB hello-world latest bf756fb1ae65 12 months ago 13.3kB |
Пометить загружаемый образ тэгом (tag) для загрузки в нужный реестр:
Command |
---|
sudo docker tag wiki/astralinux:se17rc5 localhost:5000/se17rc5 |
Перепроверить список доступных образов, чтобы убедиться, что тэг присвоен верно:
Command | ||
---|---|---|
| ||
REPOSITORY TAG IMAGE ID CREATED SIZE wiki/astralinux se17rc5 5d69ce8720a7 25 hours ago 318MB localhost:5000/se17rc5 latest 5d69ce8720a7 25 hours ago 318MB registry 2 678dfa38fcfa 12 days ago 26.2MB localhost:5000/hello-world-se latest bf756fb1ae65 12 months ago 13.3kB hello-world latest bf756fb1ae65 12 months ago 13.3kB |
В примере выше первые две строки сообщают об одном и том же образе (идентификатор образа 5d69ce8720a7). При этом образ помечен как размещённый в двух локациях - на локальной машине wiki/astralinux и сетевом реестре на локальной машине localhost:5000.
Загрузить образ в реестр:
Command | ||||
---|---|---|---|---|
| ||||
The push refers to repository [localhost:5000/se17rc5] d5f516170dbe: Pushed latest: digest: sha256:8d12b1c9ebe3b3060734965bbd7214a0063633261bf1da17d3caf50ed4f1f534 size: 529 |
Использование Docker
Получение образа из реестра
Пример получения образа Docker из реестра описан выше (см. "Создание собственного реестра образов"). При этом для получения образа используется просто команда запуска контейнера (docker run), которая, не найдя на локальной машине указанный образ, ищет образ в реестре образов, и, если образ найден, автоматически загружает и запускает его.
Образ также можно просто загрузить из реестра с помощью команды docker pull, например:
Command |
---|
docker pull debian |
Копирование образа без использования реестра
Образ, хранящийся на локальной машине может быть скопирован (например, на другую (целевую) машину) без использования реестра образов. Далее для примера используется стандартный образ hello-world из реестра образов Docker. Перенос образа на другую машину:
Выгрузить образ в файл архива:
Command |
---|
docker save -o hello-world.bz2 hello-world |
Опция -o указывает имя файла, в который нужно выводить данные. Если опция не указана, то вывод осуществляется в стандартный вывод (stdout), что можно использовать для автоматизации работы (см. далее).
На целевой машине загрузить файл в локальный реестр образов:
Command |
---|
docker load -i hello-world.bz2 |
Опция -i указывает имя файла, из которого должен загружаться образ. Если опция не указана - образ загружается из стандартного ввода.
Или, как вариант, выполнить все указанные выше шаги одной командой, скопировав создаваемый файл через SSH (естественно, на целевом компьютере для этого должен быть настроен SSH):
Command |
---|
docker save hello-world | bzip2 | ssh user@host 'bunzip2 | docker load' |
Где:
- docker save hello-world - команда выгрузки образа с именем hello-world. В отличие от примера выше команда используется без указания файла, то есть выводит в стандартный вывод (stdout);
- bzip2 - программа сжатия данных (архиватор);
- ssh user@host 'bunzip2 | docker load' - подключение через SSH к компьютеру с именем host от имени пользователя user и запуск команды загрузки образа из стандартного ввода (stdin). Пользователь user на целевом компьютере должен иметь право работать с Docker без использования sudo.
Создание контейнеров из образов и основы работы с контейнерами
При запуске приложений, упакованных в контейнеры Docker, важно понимать разницу между "образом" (неизменяемым набором данных) и "контейнером" (изменяемым набором данных, создаваемых из "образа").
Для примера используем стандартный образ busybox, который загрузим из ресстра Docker:
Command |
---|
docker pull busybox |
Исходное состояние: в локальном репозитори имеется образы hello-world и busybox:
Command | ||
---|---|---|
| ||
REPOSITORY TAG IMAGE ID CREATED SIZE |
И нет ни одного контейнера:
Command | ||
---|---|---|
| ||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
Создание нового контейнера из образа busybox и его запуск выполняется одной командой:
Command | ||
---|---|---|
| ||
/ # |
Где:
- --name run-busybox - присвоить создаваемому контейнеры имя run-busybox. Имя можно не указывать, тогда оно будет создано автоматически.
- --rm - уничтожить контейнер после завершения его работы;
- -i - запустить контейнер в интерактивном режиме;
- -t - создать терминал;
- /# - приглашение интерактивного режима запущенного контейнера и ожидание ввода.
Проверим из отдельной терминальной сессии список контейнеров:
Command | ||
---|---|---|
| ||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09c793a139b2 busybox "sh" 3 minutes ago Up 3 minutes run-busybox |
В списке появился новый контейнер с именем run-busibox.
Вернёмся в первую терминальную сессию, и выйдем из интерактивного контейнера командой exit. Повторная проверка командой docker container ls -a покажет, что список контейнеров пуст (опция --rm указывает удалить контейнер после завершения работы).
Повторно запустим контейнер, уже без опции --rm, и, для примера, не задавая имя контейнера:
Command | ||
---|---|---|
| ||
/ # |
Снова проверим список контейнеров из отдельной сессии:
Command | ||
---|---|---|
| ||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 825a33f9c18c busybox "sh" 28 seconds ago Up 28 seconds amazing_morse |
В списке появился новый контейнер с автоматически созданным именем amazing_morse.
Снова вернёмся в первую терминальную сессию, и выйдем из интерактивного контейнера командой exit. Повторная проверка покажет, что теперь в списке контейнеров сохранился контейнер:
Command | ||
---|---|---|
| ||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 825a33f9c18c busybox "sh" About a minute ago Exited (0) 2 seconds ago amazing_morse |
Повторно выполним команду docker run:
Command | ||
---|---|---|
| ||
/ # |
И из отдельной терминальной сессии увидим, что контейнеров теперь стало 2: 1) ранее созданный amazing_morse (неактивный) и 2) новый admiring_murdock (активный):
Command | ||
---|---|---|
| ||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b894e0b0b22d busybox "sh" 17 seconds ago Up 16 seconds admiring_murdock 825a33f9c18c busybox "sh" 3 minutes ago Exited (0) About a minute ago amazing_morse |
То есть:
Информация | ||
---|---|---|
Команда
создаёт из указанного образа новый контейнер и запускает его. Из одного образа можно создать сколько угодно контейнеров, которые можно сохранять или не сохранять после завершения их работы. |
Для запуска созданного и сохранённого контейнера используется команда docker start (обратите внимание, используется не образ, а контейнер):
Command | ||
---|---|---|
| ||
/ # |
опции -ai задают подключение в интерактивном режиме, но контейнер можно можно запустить и в фоновом режиме:
Command | ||
---|---|---|
| ||
amazing_morse |
К контейнеру работающему в фоновом режиме можно подключиться командой docker attach:
Command | ||
---|---|---|
| ||
/ # |
Отключиться от конейнера, не останавливая его, можно нажав последовательно клавиши Ctrl+p Ctrl+q, можно также остановить контейнер, введя команду exit.
Выше описано, как работать с контейнерами, в том числе сохраняя сделанные изменения. То есть, первоначальный образ можно "изменить" (естественно, не сам образ, который неизменен, изменения регистрируются в контейнере), и далее контейнер можно преобразовать в образ с помощью команды docker container commit:
Command | ||
---|---|---|
| ||
sha256:6f607ea38417448f73f3db5faeddf901832546b8d2882beab4e93062035df680 |
Проверим список образов:
Command | ||
---|---|---|
| ||
REPOSITORY TAG IMAGE ID CREATED SIZE new-busybox latest 6f607ea38417 2 seconds ago 1.23MB busybox latest b97242f89c8a 6 days ago 1.23MB hello-world latest bf756fb1ae65 12 months ago 13.3kB |
Монтирование файловых ресурсов хост-машины
Docker поддерживает следующие варианты монтирования файловых ресурсов хост-машины:
bind - монтирование файла или каталога хост-машины в контейнер. Примонтированный ресурс доступен по его абсолютному пути на хост машине.
Предупреждение |
---|
Метод монтирования является устаревшим и не рекомендуется к применению. |
Опции монтирования задаются при создании контейнеров из образов, и сохраняются в параемтрах контейнера. Опции монтирования могут задаваться в двух альтернативных форматах: "формат -v" и "формат --mount". Значение "формат -v" состоит их трех фиксированных полей, разделённых символами двоеточия: ресурс монтирования, точка монтирования, опции монтирования. Значение "формат --mount" состоит из списка пар вида "опция=значение", разделённых запятыми, см. примеры далее. Опции монтирования в варианте bind фактически отличается от опция монтирования в варианте mount названием монтируемого ресурса: в первом случае это путь к файловому объекту, во втором - имя заранее созданного тома монтирования. Если точка монтирования внутри контейнера не существует то она создаётся автоматически, причём всегда в виде каталога.
Опции монтировниния "формат --mount":
Термины Docker
Докерфайл - текстовый документ, содержащий все команды, выполнение которых требуется для создания образа Docker. Образы могут создаваться автоматически путём интерпретации докерфайлов и применения содержащихся в докерфайле инструкций к контексту;
Слой - внутри образов слой это изменение файловой системы, представленное инструкцией в докерфайле. Слои последовательно "накладываются" на базовую файловую систему образа, создавая итоговый образ. Любой слой может использоваться несколькими образами одновременно. При изменении образа в нём заменяются только изменившиеся слои, что позволяет обновлять образы быстро и с небольшими затратами ресурсов. Размер образа равен сумме размеров входящих в него слоёв;
Образ - основа контейнеров. Контейнер не имеет состояний и не изменяется. Контейнер состоит из:
- Базовой файловой системы;
- Упорядоченного набора изменений ("слоев") в этой файловой системе;
- Базовых параметров исполнения, применяемых при запуске контейнеров.
Контейнер - образ, находящийся в работе, то есть образ с новым изменяющимся слоем. При работе контейнера все изменения сохраняются в новом слое, а образ (т.е. все предыдущие слои) остаётся неизменным;
Контекст - набор файлов в указанной локации;
Реестр образов - сетевое хранилище подготовленных образов, доступных для загрузки на целевые машины и последующего выполнения в качестве контейнеров.
См. далее:
Установка и администрирование Docker в Astra Linux 1.7
Создание собственного образа Astra Linux для использования в Docker
Подробнее см. документацию на ядро: https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt
Предупреждение |
---|
Опции монтирования ":z" и ":Z" ("формат -v") не поддерживаются и сохранены для совместимости. Ресурсы всегда монтируются как разделяемые (":z"). |
Запуск контейнера с bind-монтированием текущего каталога на хост-машине в каталог /app контейнера:
Command |
---|
docker run --rm -it --mount type=bind,src=$(pwd),dst=/app busybox |
Command |
---|
docker run --rm -it -v $(pwd):/app busybox |
Создание тома с именем my-vol для последующего монтирования:
Command | ||
---|---|---|
| ||
my-vol |
Запуск контейнера с mount-монтированием тома my-vol на хост-машине в каталог /app контейнера:
Command |
---|
docker run --rm -it --mount src=my-vol,dst=/app busybox |
Command |
---|
docker run --rm -it -v my-vol:/app busybox |
Запуск контейнера с tmpfs-монтированием:
Возможный сценарий применения Docker
Таким образом, возможный сценарий применения Docker: