Объем емкости: Как рассчитать объем емкости различной формы

Содержание

Объем резервуара: полезный и номинальный объем

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

Для чего нужен такой показатель, как объем резервуара? Многие считают, что он рассчитывается при проектировании исключительно для каких-то технических целей. На самом деле объем резервуара АЗС или любого другого предприятии нужно знать для корректного ведения учетных и торговых операций с нефтью и нефтепродуктами. Строго говоря, это касается и тех резервуаров, которые используются для хранения воды или любых других пищевых жидкостей. Определение объема и вместимости позволяет составить градуировочные таблицы, и в дальнейшем на них можно опираться при определении массы принятых или сданных нефтепродуктов или других жидкостей.

Показатели для расчета: полезный объем

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

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

Номинальный и рабочий объем резервуара

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

Для чего используется такая величина как номинальный объем резервуаров? Она фигурирует в таких расчетах как:

  • определение типоразмера резервуара,
  • расчет для установки систем охлаждения и пожаротушения,
  • определение компоновки резервуарных парков, вместимости групп резервуаров и т.д.
Используются также такие понятия, как рабочий объем резервуара и аварийный объем. В первом случае речь идет об объеме жидкости, который сохраняется между моментами включения и выключения оборудования. Во втором – о дополнительной защите резервуара от переполнения.

Объемы резервуара определяются при его проектировании. Интересно, что для АЗС обычно используются типовые конструкции (хотя при желании заказчика возможна разработка и негабаритных конструкций). В целом полезный объем топливных резервуаров для заправок редко превышает 75 куб.м. При этом заполняются такие емкости на 95% от номинального объема, чтобы исключить перелив. В этих же целях устанавливается отсечной клапан.

Объем пожарного резервуара

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

  • 1- специфика работы предприятия. Если фирма работает уже давно, то есть статистика случаев возгорания – за неделю, месяц или год. Если таких случаев еще не было, стоит ознакомиться с отраслевой статистикой. Это позволит понять примерное число вероятных возгораний и другие показатели, связанные с такими ситуациями,
  • 2 – время, которое может быть затрачено на устранение одного очага возгорания,
  • 3 – высота подачи струи воды и мощность струи при устранении пожара,
  • 4 – общее количество планируемых к установке пожарных резервуаров,
  • 5 – длительность промежутка времени, в течение которого пожарный резервуар должен быть заполнен водой.
Согласно требованиям нормативных документов, пожарный объем воды в баках должен быть рассчитан в среднем на то, что тушение одного наружного либо одного внутреннего пожара будет осуществляться в течение 10 минут, притом, что одновременно будет происходить расход воды на другие нужды. Для того, чтобы учесть все перечисленные факторы, стоит обратиться к специалистам, которые знакомы с нюансами расчетов объема пожарных резервуаров и знают специфику работы той или иной отрасли.

Объем жидкости в наклоненном цилиндрическом баке

Продолжая тему, начатую тут Объем жидкости в цилиндрической таре и в ответ на запрос Прошу помочь с расчётом публикуем калькулятор, вычисляющий объем жидкости в цилиндрической емкости под наклоном.
Для вычисления вам потребуется ввести параметры емкости (радиус и длину) замерить уровень жидкости вблизи от одного из оснований и угол наклона.

Замер уровня жидкости

Замер уровня жидкости должен производиться в диаметральной плоскости емкости перпендикулярно нижней цилиндрической стенке (см. рисунок), непосредственно у одного из оснований или на некотором расстоянии от него ( в этом случае надо заполнить параметр «Расстояние от основания при измерении»). Как вариант замера, в случае небольшого количества жидкости и если есть возможность наклонить емкость, можно наклонить ее таким образом, чтобы уровень у верхнего основания был нулевым. Тогда надо замерить только расстояние от верхнего основания до границы начала жидкости. Если же наклонить бочку так, что жидкость будет подходить ровно к верхнему углу (месту смыкания верхнего основания и боковой поверхности емкости) то уровень и расстояние до основания будут нулевыми, замерить потребуется только угол.

Детали и формулы расчета можно найти непосредственно под калькулятором.

PLANETCALC, Объем жидкости в наклонной цилиндрической таре
Объем жидкости в наклонной цилиндрической таре
Уровень измерену верхнего основанияу нижнего основания

Расстояние от ближайшего основания при измерении уровня жидкости. (0 если измерение происходило непосредственно у основания).

Точность вычисления

Знаков после запятой: 2

Уровень жидкости у верхнего основания

 

Уровень жидкости у нижнего основания

 

Длина частично заполненной части

 

Длина полностью заполненной части

 

Объем жидкости

 

save Сохранить extension Виджет

Наклоненная цилиндрическая емкостьНаклоненная цилиндрическая емкость

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

  1. цилиндрическая часть, объем которой находится тривиально по формуле объема цилиндра см. Цилиндр
  2. часть цилиндра усеченная под углом поверхностью воды. Объем этой части найти также не трудно по той же формуле, деленной пополам, если жидкость не доходит до верхнего основания (емкость стоит почти вертикально).

Формулы для вычисления объема частично заполненной части емкости

Сложности начинаются, если жидкость частично закрывает одно или оба основания, так как на рисунке.

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


где -функция зависимости угла сегмента от длины фигуры x,
которая выражается следующим образом:

где
a — угол наклона емкости,
h0 — уровень жидкости у верхнего основания цилиндра

Подставим в формулу объема это выражение и упростив его получим полную формулу объема:

где

Вычислив интеграл, получаем:

где ,

Определение длины частично заполненной части

Приведенные выше формулы справедливы для следующих предположений:

  • Оба основания заполнены частично
  • Уровень жидкости h0 измерен непосредственно у верхнего основания.
  • Нет полностью пустых или полностью заполненных частей цилиндра.

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

Чтобы вычислить уровень жидкости у верхнего основания hu используйте формулы:

где hlu — уровень жидкости, измеренный на расстоянии lu от верхнего основания, Lc — длина емкости


где hlu — уровень жидкости, измеренный на расстоянии ll от нижнего основания.
Если уровень huравен или больше нуля, мы считаем h0=hu, и Lf = Lc.

Пустая часть бака

В противном случае hu может быть отрицательным. Это означает, что какая-то часть бака пуста. В этом случае мы полагаем h0=0 и вычисляем длину оставшейся (заполненной) части цилиндра: Lf по формуле:

где Lc — длина цилиндра.

Полностью заполненная часть

Уровень жидкости у нижнего основания h1 можно определить следующим образом:

Если вычисленно значение h1 больше диаметра цилиндра, то некоторая часть цилиндра — заполнена полностью. Чтобы вычислить длину этой части мы используем формул:

Объем этой части посчитать тривиально: Цилиндр

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

Расчет объема буферной емкости


При выборе объёма буферного теплоаккумулятора необходимо отталкиваться от мощности твердотопливного котла. Чёткой формулы расчёта объёма теплонакопителя нет. Разные производители дают свои рекомендации и они могут составлять от 20 до 50 литров объёма теплоаккумулятора на киловатт мощности котла. Некоторые производители рекомендуют «привязываться» к объёму системы отопления. В любом случае при выборе объёма буферного накопителя тепла стоит обратиться к специалистам, что бы избежать ошибок при расчётах.
Ориентировочная формула подбора теплонакопителя:

m= (P×ŋ×t)/ (c×∆ϑ)   

где: m – объём

P – мощность котла, Вт

ŋ – КПД котла, 0.98%

t – время нагрева, ч

c – удельная теплоёмкость воды, Вч/кг х К

Δϑ – разность температур, К

При подставлении определённых значений Вы получите ориентировочный объём буферного теплоаккумулятора (но эта формула не панацея), и тут можно «поиграться» с формулой путём изменения значений мощности, времени нагрева, и температурной дельты. Опять же не стоит забывать, что во время нагрева теплонакопителя, теплоноситель будет циркулировать по контурам и соответственно остывать. В этом случае необходимо учитывать погрешность. В любом случае для точного расчёта теплоаккумулятора к электрическому котлу отопления лучше обратиться к нашим специалистам.

В связи с выше перечисленным можно сделать вывод, что в виде основного котла Вы можете применять как электрический котел отопления, так и твердотопливный котел. И, что самое важное, Вы можете запитывать буферную емкость и тем и другим отопительным котлом по вашему выбору попеременно. Тогда, такая система отопления будет наиболее экономичная, и адаптированная исключительно под ваши условия эксплуатации. 
Также необходимо учитывать сопутствующие товары, например трёхходовые термосмесители. Таких нужно как минимум две штуки. Один для ограничения температуры на обратке между буфером и твердотопливным котлом, так как разница температур между подачей и обраткой не должна превышать 30 градусов. Другой термосмеситель ставится на подающую магистраль на систему отопления, так как температура в буфере может достигать 100 градусов, а в систему нужно подавать 60-70 градусов.
Произвести монтаж системы отопления Вашего дома, или обвязку котельной с установкой буферного накопителя могут наши технические специалисты. Поверьте, цена на установку буферной емкости не так велика, как вы думаете. Наша монтажная группа имеет большой опыт работ по установке теплоаккумуляторов к котлам отопления.

Расчёт объема переливной емкости для бассейна

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

Особенности проведения расчета

Переливная емкостьДля нормальной циркуляции и очистки воды важно правильно подобрать объем накопительной емкости.

Его расчет производится по следующей формуле:

V = Vv + Vw + Vr, где

  • V — общий полезный объем переливной емкости, л;
  • Vv — максимальное расчетное количество вытесняемой телами купающихся воды (берется из расчета 75 литров на 1 человека), л;
  • Vw — объем жидкости, которая переливается от образования волн (берется из расчета 50-70 л на 1 м2 поверхности зеркала бассейна), л;
  • Vr — минимальный объем воды, который необходим для работы датчика уровня, который предупреждает работу насоса в режиме холостого хода.

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

Исходя из практики, при проектировании частных бассейнов целесообразней использовать упрощенный расчет компенсационной емкости, который может выполняться двумя методами. Первый способ предусматривает умножение площади зеркала бассейна на 5 см. При использовании второго метода объем накопителя рассчитывается как 14 % от общего объема чаши.

Подбор переливной емкости

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

При устройстве небольших частных бассейнов целесообразней использоваться готовые пластиковые баки, которые устанавливаются в подходящем месте и подключаются к системе искусственного водоема. Такие баки выпускаются стандартных типоразмеров, что упрощает подбор и избавляет от необходимости выполнения сложных расчетов. Например, если чаша бассейна составляет 25 м3, то можно выбрать стандартную переливную емкость объемом 3,75 м 3, изготовленную из полипропилена.

Онлайн калькулятор: Объем геометрических фигур

Данная статья содержит калькуляторы для расчета объема различных геометрических фигур. Основной источник формул: Spiegel, Murray R. Mathematical Handbook of Formulas and Tables. Schaum’s Outline series in Mathematics. McGraw-Hill Book Co., 1968.

Объем куба

Размеры кубаРазмеры куба


Формула:

PLANETCALC, Объем куба
Объем куба

Длина ребра куба (H)

Точность вычисления

Знаков после запятой: 5

save Сохранить extension Виджет

Объем прямоугольной призмы

Размеры прямоугольной призмыРазмеры прямоугольной призмы


Формула:

PLANETCALC, Объем прямоугольной призмы
Объем прямоугольной призмы
Точность вычисления

Знаков после запятой: 5

save Сохранить extension Виджет

Объем пирамиды

Размеры пирамидыРазмеры пирамиды


Формула:

PLANETCALC, Объем пирамиды
Объем пирамиды

Площадь основания

Точность вычисления

Знаков после запятой: 5

save Сохранить extension Виджет

Объем усеченной пирамиды

Размеры усеченной пирамидыРазмеры усеченной пирамиды


Формула:

PLANETCALC, Объем усеченной пирамиды
Объем усеченной пирамиды
Точность вычисления

Знаков после запятой: 5

Объемы использования | Докер Документация

Расчетное время чтения: 16 минут

Тома являются предпочтительным механизмом для сохранения данных, генерируемых и используемых Контейнеры Docker. В то время как привязные крепления зависят от структура каталогов хост-машины, тома полностью управляются Докер.Тома имеют несколько преимуществ по сравнению с креплениями:

  • Тома легче создавать резервные копии или переносить, чем привязывать монтирования.
  • Вы можете управлять томами с помощью команд консоли Docker или API Docker.
  • Тома
  • работают как с контейнерами Linux, так и с Windows.
  • Тома могут быть более безопасно разделены между несколькими контейнерами.
  • Драйверы томов
  • позволяют хранить тома на удаленных хостах или облачных провайдерах, чтобы шифровать содержимое томов или добавлять другие функции.
  • Для новых томов их содержимое может быть предварительно заполнено контейнером.

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

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

Тома используют rprivate распространение привязки, а привязка распространения не настраивается для объемов.

Выберите флаг -v или —mount

Первоначально флаг -v или -volume использовался для автономных контейнеров и флаг - число использовалось для роящихся служб. Однако, начиная с Docker 17.06, вы также можете использовать -

с автономными контейнерами. В основном, - число более четкое и подробное.Самая большая разница в том, что -V синтаксис объединяет все опции в одном поле, а - монтировать синтаксис разделяет их. Вот сравнение синтаксиса для каждого флага.

Новым пользователям следует попробовать - установить синтаксис , который проще, чем - использовать синтаксис .

Если вам нужно указать опции драйвера тома, вы должны использовать --mount .

  • -v или - обьем : состоит из трех полей, разделенных двоеточиями (: ).Поля должны быть в правильном порядке, и значение каждого поля не сразу очевидно.
    • В случае именованных томов первое поле является именем тома и является уникальный на данном хост-компьютере. Для анонимных томов первое поле опущено.
    • Второе поле - это путь, по которому файл или каталог монтируются в контейнер.
    • Третье поле является необязательным и представляет собой список параметров, разделенных запятыми, например как ro .Эти варианты обсуждаются ниже.
  • - число : состоит из нескольких пар ключ-значение, разделенных запятыми и каждой состоящий из <ключ> = <значение> кортежа. Синтаксис - число более многословно чем -v или -объем , но порядок ключей не имеет значения, и значение флага легче понять.
    • типа крепления, которое может быть , привязка , объем или тмфс .В этой теме обсуждаются тома, поэтому тип всегда том .
    • Источник горы. Для именованных томов это имя тома. Для анонимных томов это поле опущено. Может быть указан как источник или SRC .
    • Пункт назначения принимает в качестве значения путь к файлу или каталогу монтируется в контейнер. Можно указать как , пункт назначения , от , или , цель .
    • Опция только для чтения , если таковая имеется, приводит к установке крепления для крепления в контейнер только для чтения.
    • Опция volume-opt , которую можно указать несколько раз, занимает пара ключ-значение, состоящая из имени опции и ее значения.

Escape-значения из внешнего анализатора CSV

Если ваш драйвер тома принимает список через запятую в качестве опции, вы должны экранировать значение из внешнего синтаксического анализатора CSV.Чтобы избежать объем опт , окружите его двойными кавычками ( ") и окружите весь параметр монтирования с одинарными кавычками ( ').

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

  $ Докерская служба создать \
    --mount 'тип = том, src = <имя-тома>, dst = <путь-контейнера>, том-драйвер = локальный, том-opt = тип = nfs, том-opt = устройство = : , "объемно-OPT = о = адр = , уегз = 4, мягкие, Timeo = 180, BG, ТСР, RW"»
    --name myservice \
    
  

В приведенных ниже примерах показан синтаксис -mount и -v , где это возможно, и - количество представлено первым.

Различия между -v и - количество поведения

В отличие от привязки, все варианты для объемов доступны как для - установить флаги и -v .

При использовании томов со службами поддерживается только - количество .

Создание и управление томами

В отличие от bind mount, вы можете создавать и управлять томами вне области действия любого контейнер.

Создайте том :

  $ объем докера create my-vol
  

Список томов :

  $ объем докера ls

местный my-vol
  

Проверьте объем :

  $ Объем док-станции осмотреть my-vol
[
    {
        «Водитель»: «местный»,
        "Ярлыки": {},
        "Точка монтирования": "/ var / lib / docker / volume / my-vol / _data",
        «Имя»: «my-vol»,
        "Параметры": {},
        «Область применения»: «местный»
    }
]
  

Удалить том :

  $ том докера rm my-vol
  

Запустить контейнер с объемом

Если вы запускаете контейнер с томом, который еще не существует, Docker создает объем для вас.В следующем примере монтируется том myvol2 в / приложение / в контейнере.

Приведенные ниже примеры -v и - число дают тот же результат. Вы не можете запустить они оба, если вы не удалите контейнер devtest и том myvol2 после запуска первого.

  $ Docker Run -D \
  --name devtest \
  --mount source = myvol2, target = / app \
  Nginx: последние
  
  $ Docker Run -D \
  --name devtest \
  -v myvol2: / app \
  Nginx: последние
  

Используйте докер для проверки devtest , чтобы убедиться, что том создан и подключен правильно.Ищите Крепления раздел:

  "Крепления": [
    {
        «Тип»: «объем»,
        «Имя»: «myvol2»,
        "Источник": "/ var / lib / docker / volume / myvol2 / _data",
        «Пункт назначения»: «/ app»,
        «Водитель»: «местный»,
        "Режим": "",
        "RW": правда,
        "Распространение": ""
    }
],
  

Это показывает, что монтирование является томом, оно показывает правильный источник и назначение, и что монтирование для чтения-записи.

Остановите контейнер и удалите объем.Примечание удаление тома является отдельным шаг.

  $ докер контейнер остановка devtest

Контейнер $ docker rm devtest

$ docker volume rm myvol2
  

Запуск службы с томами

Когда вы запускаете службу и определяете том, каждый контейнер службы использует свой собственный локальный том. Ни один из контейнеров не может поделиться этими данными, если вы используете локальный драйвер тома, но некоторые драйверы томов поддерживают общее хранилище. Докер для AWS и Docker для Azure поддерживает постоянное хранилище с помощью плагина Cloudstor.

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

  $ docker service create -d \
  --replicas = 4 \
  --name devtest-service \
  --mount source = myvol2, target = / app \
  Nginx: последние
  

Используйте docker service ps devtest-service , чтобы убедиться, что служба работает:

  $ докер сервис ps devtest-сервис

ID ИМЯ ИЗОБРАЖЕНИЕ УЗЕЛ ЖЕЛАЕМЫЕ ГОСУДАРСТВЕННЫЕ ТЕКУЩИЕ СОСТОЯНИЯ ОШИБКИ
4d7oz1j85wwn devtest-service.1 nginx: последний моб Бег Бег 14 секунд назад
  

Удалить сервис, который останавливает все его задачи:

  $ докер-сервис рм девтест-сервис
  

Удаление службы не удаляет никакие тома, созданные службой. Удаление тома - это отдельный шаг.

Синтаксические различия для сервисов

Команда docker service create не поддерживает флаг -v или --volume .При установке тома в контейнеры службы вы должны использовать - монтировать флаг.

Заполните том с помощью контейнера

Если вы запускаете контейнер, который создает новый том, как указано выше, и контейнер имеет файлы или каталоги в каталоге для монтирования (например, / app / выше), содержимое каталога копируется в том. Контейнер тогда монтирует и использует объем, и другие контейнеры, которые также используют объем иметь доступ к предварительно заполненному контенту.

Чтобы проиллюстрировать это, этот пример запускает контейнер nginx и заполняет новый объем nginx-vol с содержимым контейнера Каталог / usr / share / nginx / html , в котором Nginx хранит HTML-код по умолчанию содержание.

Примеры --mount и -v имеют одинаковый конечный результат.

  $ Docker Run -D \
  --name = nginxtest \
  --mount source = nginx-vol, destination = / usr / share / nginx / html \
  Nginx: последние
  
  $ Docker Run -D \
  --name = nginxtest \
  -v nginx-vol: / usr / share / nginx / html \
  Nginx: последние
  

После запуска любого из этих примеров выполните следующие команды для очистки контейнеры и объемы.Примечание удаление тома это отдельный шаг.

  $ остановка контейнера докер nginxtest

Контейнер $ docker rm nginxtest

$ docker volume rm nginx-vol
  

Используйте том только для чтения

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

Этот пример изменяет приведенный выше, но монтирует каталог только для чтения объем, добавив ro в (пустой по умолчанию) список параметров, после точка монтирования внутри контейнера. Там, где присутствует несколько вариантов, отдельные их запятыми.

Примеры --mount и -v имеют одинаковый результат.

  $ Docker Run -D \
  --name = nginxtest \
  --mount source = nginx-vol, destination = / usr / share / nginx / html, только для чтения \
  Nginx: последние
  
  $ Docker Run -D \
  --name = nginxtest \
  -v nginx-vol: / usr / share / nginx / html: ro \
  Nginx: последние
  

Используйте докер для проверки nginxtest , чтобы убедиться, что монтировано только для чтения правильно.Ищите Крепления раздел:

  "Крепления": [
    {
        «Тип»: «объем»,
        «Имя»: «nginx-vol»,
        "Источник": "/ var / lib / docker / volume / nginx-vol / _data",
        «Пункт назначения»: «/ usr / share / nginx / html»,
        «Водитель»: «местный»,
        "Режим": "",
        «RW»: ложно,
        "Распространение": ""
    }
],
  

Остановите, снимите контейнер и удалите том. Удаление объема отдельный шаг.

  $ остановка контейнера докер nginxtest

Контейнер $ docker rm nginxtest

$ docker volume rm nginx-vol
  

Обмен данными между машинами

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

Есть несколько способов достичь этого при разработке ваших приложений. Одним из них является добавление логики в ваше приложение для хранения файлов на облачном объекте система хранения, как Amazon S3. Другой - создавать тома с драйвером, который поддерживает запись файлов во внешнюю систему хранения, такую ​​как NFS или Amazon S3.

Драйверы тома

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

Используйте драйвер громкости

При создании тома с помощью докера тома создайте или при запуске Контейнер, который использует еще не созданный том, вы можете указать драйвер тома. Следующие примеры используют драйвер тома vieux / sshfs , сначала при создании автономный том, а затем при запуске контейнера, который создает новый объем.

Начальная настройка

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

На хосте Docker установите плагин vieux / sshfs :

  $ Установка подключаемого модуля docker --grant-all-permissions vieux / sshfs
  

Создание тома с помощью драйвера тома

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

  $ том докера create --driver vieux / sshfs \
  -o sshcmd = test @ node2: / home / test \
  -o пароль = тестовый пароль \
  sshvolume
  

Запустите контейнер, который создает том с помощью драйвера тома

В этом примере указывается пароль SSH, но если два хоста имеют общие ключи настроен, вы можете опустить пароль.Каждый драйвер громкости может иметь ноль или более настраиваемые параметры. Если драйвер громкости требует передачи параметров, вы для монтирования тома необходимо использовать флаг --mount , а не -v .

  $ Docker Run -D \
  --name sshfs-container \
  --volume-driver vieux / sshfs \
  --mount src = sshvolume, target = / app, volume-opt = sshcmd = test @ node2: / home / test, volume-opt = пароль = testpassword \
  Nginx: последние
  

Создайте сервис, который создает том NFS

В этом примере показано, как можно создать том NFS при создании службы.В этом примере используется 10.0.0.10 в качестве сервера NFS и / var / docker-nfs в качестве экспортируемого каталога на сервере NFS. Обратите внимание, что указанный драйвер тома локальный .

NFSv3
  $ docker service create -d \
  --name nfs-service \
  --mount 'type = volume, source = nfsvolume, target = / app, volume-driver = local, volume-opt = type = nfs, volume-opt = device =: / var / docker-nfs, volume-opt = o = addr = 10.0.0.10 '\
  Nginx: последние
  
NFSv4
 Докерская служба  create -d \
    --name nfs-service \
    --mount 'type = volume, source = nfsvolume, target = / app, volume-driver = local, volume-opt = type = nfs, volume-opt = device =: / var / docker-nfs, "volume-opt = о = 10.0.0.10, rw, nfsvers = 4, async "'\
    Nginx: последние
  

Резервное копирование, восстановление или миграция томов данных

Тома

полезны для резервного копирования, восстановления и миграции. Использовать --volumes-from флаг для создания нового контейнера, который монтирует этот том.

Резервное копирование контейнера

Например, создайте новый контейнер с именем dbstore :

  $ docker run -v / dbdata - имя dbstore ubuntu / bin / bash
  

Затем в следующей команде мы:

  • Запустите новый контейнер и смонтируйте том из хранилища dbstore
  • Смонтируйте локальный каталог хоста как / резервная копия
  • Передайте команду, которая изменяет содержимое тома dbdata в резервную копию .Файл tar находится в нашем каталоге / backup .
  $ docker run --rm --volumes-from dbstore -v $ (pwd): / резервное копирование ubuntu tar cvf /backup/backup.tar / dbdata
  

Когда команда завершится и контейнер остановится, у нас останется резервная копия наш dbdata том

Восстановить контейнер из резервной копии

С только что созданной резервной копией, вы можете восстановить ее в тот же контейнер, или другой, который вы сделали в другом месте.

Например, создайте новый контейнер с именем dbstore2 :

  $ docker run -v / dbdata - имя dbstore2 ubuntu / bin / bash
  

Затем распакуйте файл резервной копии в новый объем данных контейнера:

  $ docker run --rm --volumes-from dbstore2 -v $ (pwd): / backup ubuntu bash -c "cd / dbdata && tar xvf / backup / backup.tar - полоса 1 "
  

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

Удалить тома

Том данных Docker сохраняется после удаления контейнера. Есть два типа томов для рассмотрения:

  • Именованные тома имеют определенный источник извне контейнера, например awesome: / bar .
  • Анонимные тома не имеют определенного источника, поэтому при удалении контейнера дайте указание демону Docker Engine удалить их.

Удалить анонимные тома

Чтобы автоматически удалять анонимные тома, используйте опцию - rm . Например, эта команда создает анонимный том / foo . Когда контейнер удален, Docker Engine удаляет том / foo , но не удивительный том .

  $ docker run --rm -v / foo -v awesome: / bar busybox top
  

Удалить все тома

Чтобы удалить все неиспользуемые тома и освободить место:

Следующие шаги

хранение, постоянство, постоянство данных, тома ,
Apache Mesos - Объем контейнера

Для каждого тома, который указывает контейнер (т. Е. ContainerInfo.volumes ), должны быть указаны следующие поля:

  • container_path : Путь в файловой системе контейнера, в которой объем будет установлен. Если путь является относительным путем, это относительно песочницы контейнера.

  • Режим : если том доступен только для чтения или для чтения и записи.

  • Источник : Опишите источник тома.Узнать больше подробности в следующем разделе.

Типы источников томов

HOST_PATH Источник тома

Этот источник тома представляет путь в файловой системе хоста. Тропинка может указывать на каталог или файл (либо обычный файл или файл устройства).

В следующем примере показан том HOST_PATH , который монтируется / var / lib / mysql в файловой системе хоста в том же месте в контейнер.

  {
  "container_path": "/ var / lib / mysql",
  "mode": "RW",
  "источник": {
    "type": "HOST_PATH",
    "host_path": {
      "путь": "/ var / lib / mysql"
    }
  }
}
  

Режим и владение томом будут такими же, как на файловая система хоста.

Если вы используете Mesos Containerizer, HOST_PATH тома обрабатываются изолятором volume / host_path . к включите этот изолятор, добавьте том / host_path к - изоляция флаг при запуске агента. Этот изолятор зависит от файловая система / Linux Изолятор.

Docker Containerizer поддерживает HOST_PATH объем также.

SANDBOX_PATH Источник громкости

В настоящее время существует два типа томов SANDBOX_PATH : СЕБЯ и РОДИТЕЛЬ .

Если вы используете Mesos Containerizer, SANDBOX_PATH тома обрабатываются томом / sandbox_path Изолятор. Чтобы включить этот изолятор, добавьте volume / sandbox_path в флаг --isolation при запуске агента.

Docker Containerizer поддерживает только SELF тип SANDBOX_PATH тома в настоящее время.

SELF Тип

Это представляет путь в собственной песочнице контейнера.Путь может укажите на каталог или файл в песочнице контейнера.

В следующем примере показан том SANDBOX_PATH из собственная песочница контейнера, которая монтирует подкаталог tmp в песочница до / tmp в корневой файловой системе контейнера. Это будет полезно ограничить использование / tmp в контейнере (если дисковый изолятор используется и - 9en04 --enforce_container_disk_quota включен).

  {
  "container_path": "/ tmp",
  "mode": "RW",
  "источник": {
    "type": "SANDBOX_PATH",
    "sandbox_path": {
      "type": "SELF",
      "путь": "ТМП"
    }
  }
}
  

Объем владения будет таким же, как и у песочницы контейнер.

Обратите внимание, что container_path должен быть абсолютным путем в этом случае. Если container_path является относительным, это означает, что это объем от подкаталог в изолированной программной среде контейнера в другой подкаталог в контейнер песочница. В этом случае пользователь может просто создать символическую ссылку, вместо того, чтобы использовать объем.

РОДИТЕЛЬ Тип

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

В следующем примере показан том SANDBOX_PATH из песочницы родительского контейнера, который монтирует подкаталог shared_volume в песочница родительского контейнера в подкаталог объемом в песочница контейнера.

  {
  "container_path": "volume",
  "mode": "RW",
  "источник": {
    "type": "SANDBOX_PATH",
    "sandbox_path": {
      "тип": "РОДИТЕЛЬ",
      "путь": "общий_объем"
    }
  }
}
  

Объем владения будет таким же, как и у песочницы родительский контейнер.

DOCKER_VOLUME Источник громкости

Подробнее в этом документе.

СЕКРЕТ Источник тома

Подробнее в этом документе.

,
Общие сведения о томах контейнеров Docker и управление ими.

Узнайте, как Docker обрабатывает тома хранилища контейнеров, как запустить контейнер с томом из командной строки и из Dockerfile, а также как разделить тома между контейнерами.

Требования
  • Docker установлен и работает.
  • Базовое знакомство с функциональностью и командами Docker

Файловая система Docker

Чтобы понять тома Docker, важно сначала понять, как работает файловая система Docker.

Образ Docker - это набор слоев только для чтения. Когда вы запускаете контейнер из изображения, Docker добавляет слой чтения-записи в верхнюю часть этого стека слоев только для чтения. Докер называет это Объединенной Файловой Системой.

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

При удалении контейнера этот верхний слой чтения-записи теряется. Это означает, что любые изменения, сделанные после запуска контейнера, теперь исчезли.

Как том может помочь

Том позволяет данным сохраняться даже при удалении контейнера. Тома также являются удобным способом обмена данными между хостом и контейнером.

Монтирование тома является хорошим решением, если вы хотите:

  • Переносить данные в контейнер.
  • Извлечь данные из контейнера.
  • Обмен данными между контейнерами.

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

Основы докерских томов

Том Docker «живет» вне контейнера на хост-компьютере.

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

Существует несколько способов создания и управления томами Docker. Каждый метод имеет свои преимущества и недостатки.

Использование команды Docker для создания тома

  • Преимущество Быстро и просто.

  • Недостаток Том на хосте автоматически создается Docker, и его может быть сложно найти и использовать.

Начиная с версии 1.9.0, выпущенной 03.11.2015, тома Docker теперь можно создавать и управлять ими с помощью команды docker volume .

Создать и назвать том

Команда создания тома докера создаст именованный том. Имя позволяет легко находить и назначать тома Docker для контейнеров.

Чтобы создать том, используйте команду:

  тома sudo docker create --name [имя тома]  

Например, чтобы создать том с именем , объем данных , команда:

  тома sudo docker create - имя-объем данных  
Запустить контейнер с объемом

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

  -v [имя тома]: [каталог контейнера]  

Например, чтобы запустить контейнер из образа сентос с именем my-volume-test и сопоставить том объем данных с каталогом контейнера / data , команда:

  sudo docker run -it --name my-volume-test -v data-volume: / data centos / bin / bash  
Список томов

Чтобы получить список всех томов Docker в системе, используйте команду:

Это вернет список всех томов Docker, которые были созданы на хосте.

Проверьте объем

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

  проверка тома sudo docker [имя тома]  

Это вернет информацию о томе, включая его точку монтирования (каталог, в котором он «живет») в хост-системе.

Например, чтобы получить больше информации о томе данных , который мы создали выше, команда:

  тома sudo docker проверяет объем данных  
Удалить том

Чтобы удалить именованный том, используйте команду:

  том sudo docker rm [имя тома]  

Примечание. Вы не сможете удалить том, если он используется существующим контейнером.Перед удалением тома вам нужно будет остановить и удалить контейнер с помощью команд:

  остановка доко sudo [имя контейнера или ID]
sudo docker rm [имя контейнера или ID]  

Например, чтобы удалить том с объемом данных , сначала нам нужно остановить и удалить контейнер my-volume-test-, который его использует:

  sudo docker stop my-volume-test
sudo docker rm my-volume-test  

Объем тома можно затем удалить с помощью:

  sudo docker volume rm объем данных  

Создайте том Docker и укажите каталог хоста

  • Преимущество: Позволяет сопоставить конкретную папку хоста с контейнером.

  • Недостатки : Невозможно создать именованный том, как с докером создать том . Не может быть автоматизирован с Dockerfile.

Если вы хотите смонтировать определенный каталог на хост-компьютере в качестве тома Docker в контейнере, добавьте следующий аргумент в команду docker run :

  -v [каталог хоста]: [каталог контейнера]  

Например, чтобы запустить новый контейнер и отобразить папку / webfiles с хоста в папку / var / www / html в контейнере, введите команду:

  sudo docker run -it -v / webfiles: / var / www / html centos / bin / bash  

Вы можете проверить это, сначала создав каталог для использования в качестве тома Docker с помощью команды:

Добавьте небольшой тестовый файл в этот каталог с помощью команды:

  sudo echo "Hello World" >> / hostvolume / host-hello.TXT  

Затем запустите контейнер с именем my-directory-test и сопоставьте / hostvolume на хосте с / containervolume на контейнере с помощью команды:

  sudo docker run -it --name my-directory-test -v / hostvolume: / containervolume centos / bin / bash  

Когда вы окажетесь в командной строке нового контейнера, перечислите файлы в общем томе с помощью команды:

Вы увидите хост-хост .файл txt , который мы создали на хосте.

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

  эхо "Привет из контейнера". >> /containervolume/container-hello.txt  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины.Оказавшись там, перечислите файлы в общем томе с помощью команды:

Вы увидите два тестовых файла, которые мы создали с хоста и из контейнера.

Создание тома Docker с использованием Dockerfile

  • Преимущество : Позволяет автоматизировать процесс.
  • Недостаток : Невозможно создать именованный том, как с докером создать том . Невозможно указать каталог на хосте.

Используйте следующую команду в Dockerfile, чтобы создать общий том хранения в контейнере:

Например, чтобы создать том / myvolume в контейнере для запуска из Dockerfile, введите команду:

Чтобы проверить это, начните с создания файла с именем Dockerfile с помощью команды:

Добавьте в этот файл следующее содержимое:

  # Исходное изображение для начала
ОТ сентос

# Создать том
ОБЪЕМ / dockerfilevolume  

Сохраните и выйдите из файла.

Затем создайте образ с именем dockerfile-volumetest из этого Dockerfile с помощью команды:

  sudo docker build -t dockerfile-volumetest.  

Затем запустите контейнер с именем my-dockerfile-test из этого образа с помощью команды:

  sudo docker run --name my-dockerfile-test -it dockerfile-volumetest / bin / bash  

Когда вы находитесь в командной строке нового контейнера, создайте небольшой тестовый файл в общем томе с помощью команды:

  echo "Hello World" >> / dockerfilevolume / dockerfile-container-hello.TXT  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины.

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

  sudo docker проверяет my-dockerfile-test  

Прокручивайте вывод, пока не найдете раздел под названием «Крепления» , который будет выглядеть примерно так:

find docker mount point
  • Источник - это каталог на хост-компьютере.
  • Пункт назначения - это папка на контейнере.

Проверьте исходный каталог на вашем хост-компьютере. В этом примере команда:

  sudo ls / var / lib / docker / volume / 30275034a424251a771c91b65ba44261a27f91e3f6af31097b5226b1f46bfe20 / _data / test  

Здесь вы найдете файл dockerfile-container-hello.txt , который вы создали для контейнера.

Совместное использование объемов между контейнерами

Существует множество ситуаций, когда полезно разделить том Docker между контейнерами, и несколько способов достижения этой цели.

Совместное использование тома на хосте

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

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

Начните с создания каталога для использования в качестве тома Docker с помощью команды:

Создайте небольшой тестовый файл в этом каталоге с помощью команды:

  sudo echo "Привет от хозяина.">> /webdata/host-hello.txt  

Затем запустите контейнер с именем sql-database из официального образа PostgreSQL и сопоставьте / webdata на хосте с / data на контейнере с командой:

  sudo docker run -it --name sql-database -v / webdata: / data postgres / bin / bash  

Когда вы находитесь в командной строке нового контейнера, убедитесь, что общий том настроен правильно с помощью команды:

Вы увидите хост-хост .файл txt , который мы создали на хосте. Давайте добавим файл в этот общий том с помощью команды:

  echo "Привет из контейнера sql-database." >> /data/sql-hello.txt  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины.

Теперь запустите контейнер с именем webapp из официального образа PHP + Apache и сопоставьте / webdata на хосте с / var / www / html на контейнере.

  sudo docker run -it --name webapp -v / webdata: / var / www / html php: 5.6-apache / bin / bash  

Когда вы находитесь в командной строке нового контейнера, убедитесь, что общий том настроен правильно с помощью команды:

Вы увидите файл host-hello.txt , который мы создали на хосте, и файл sql-hello.txt , который мы создали в контейнере sql-database .

Давайте также добавим файл из этого контейнера:

  echo "Привет из контейнера веб-приложения". >> /var/www/html/webapp-hello.txt  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины. Попав на хост-компьютер, вы увидите все три файла, перечисленные с командой:

Теперь, когда два контейнера совместно используют каталог, который «живет» на хосте, данные можно мгновенно передавать между всеми тремя местоположениями, просто переместив их в этот каталог.

Использование контейнера в качестве общего объема данных

Вы также можете настроить отдельный контейнер как общий объем данных.

Для этого сначала создайте контейнер данных. Затем, когда вы создаете контейнер, который будет использовать этот контейнер данных, добавьте следующий аргумент в команду docker run :

  --volumes-from [имя или идентификатор контейнера данных]  

Примечание. Это будет работать независимо от того, работает целевой контейнер или нет.Тома Docker никогда не удаляются и сохраняются даже после остановки контейнера.

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

Сначала запустите контейнер для хранения данных с официального образа CentOS 7:

  sudo docker run -it -v / shared-data - имя хранилища данных centos / bin / bash  

Затем добавьте небольшой файл в папку / shared-data :

  echo "Привет из контейнера для хранения данных".">> /shared-data/data-storage-hello.txt  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины.

Теперь запустите контейнер app из официального образа Python и смонтируйте контейнер для хранения данных как том:

  sudo docker run -it - имя приложения --volumes-из хранилища данных python / bin / bash  

Вывести список файлов в общем томе с помощью команды:

Как видите, папка / shared-data была смонтирована из папки / shared-data в контейнере для хранения данных и содержит привет-хранилище данных .Файл TXT .

Давайте добавим один из этого контейнера:

  echo "Привет из контейнера приложения". >> /shared-data/app-hello.txt  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины.

Наконец, запустите контейнер web из официального образа Apache и смонтируйте контейнер для хранения данных как том:

  sudo docker run -it --name web --volumes- из хранилища данных httpd / bin / bash  

Вывести список файлов в общем томе с помощью команды:

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

Монтирование тома только для чтения

В этом руководстве мы монтировали тома со стандартным доступом для чтения и записи.

Если вы хотите ограничить доступ контейнера только для чтения к томуу, просто добавьте : ro к объему контейнера, указанному в операторе -v :

  docker run -v / directory: / path: ro  

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

Например, начните с создания тома на узле с ограниченным доступом с помощью команды:

  тома sudo docker create - имя с ограниченным доступом  

Затем запустите контейнер из образа сентос с именем , разрешенный для записи , и сопоставьте том с ограниченным доступом как обычный (для чтения и записи) том:

  sudo docker run -it - имя разрешено для записи -v ограниченный доступ: / data centos / bin / bash  

Когда вы находитесь в командной строке этого контейнера, создайте тестовый файл с командой:

  echo "Привет из контейнера, которому разрешено писать.">> /data/hello.txt  

Отсоедините от контейнера с помощью Ctrl-p + Ctrl-q и вернитесь в командную строку хост-машины.

Затем запустите контейнер из образа сентос с именем , не разрешенного для записи и сопоставьте том с ограниченным доступом как том только для чтения:

  sudo docker run -it - имя не разрешено для записи -v ограниченный доступ: / data: ro centos / bin / bash  

Если вы попытаетесь создать тестовый файл в общем томе с помощью такой команды:

  echo "Привет из контейнера, которому запрещено писать.">> /data/no-access.txt  

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

  bash: /data/no-access.txt: файловая система только для чтения  
,
Монтирование секретного тома в группу контейнеров - экземпляры контейнера Azure
  • 3 минуты, чтобы прочитать

В этой статье

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

  • После развертывания с секретами в группе контейнеров секретный том доступен только для чтения .
  • Все секретные тома поддерживаются tmpfs, файловой системой с поддержкой RAM; их содержимое никогда не записывается в энергонезависимое хранилище.

Примечание

Секретные тома в настоящее время ограничены контейнерами Linux. Узнайте, как передавать безопасные переменные среды для контейнеров Windows и Linux, в разделе Задать переменные среды. Пока мы работаем над тем, чтобы перенести все функции в контейнеры Windows, вы можете найти текущие различия платформ в обзоре.

Крепление секретного тома - Azure CLI

Чтобы развернуть контейнер с одним или несколькими секретами с помощью интерфейса командной строки Azure, включите параметры --secrets и --secrets-mount-path в команду az container create.В этом примере монтируется том секретного тома , состоящий из двух файлов, содержащих секреты «mysecret1» и «mysecret2», по адресу / mnt / secrets :

  az контейнер создать \
    --resource-group myResourceGroup \
    --name secret-volume-demo \
    --image mcr.microsoft.com/azuredocs/aci-helloworld \
    --secrets mysecret1 = "Мой первый секретный FOO" mysecret2 = "Мой второй секретный BAR" \
    --secrets-mount-path / mnt / secrets
  

Следующий вывод ex-контейнера z-контейнера показывает открытие оболочки в работающем контейнере, перечисление файлов в секретном томе и отображение их содержимого:

  az контейнер exec \
  --resource-group myResourceGroup \
  --name secret-volume-demo --exec-команда "/ bin / sh"
  
  / usr / src / app # ls / mnt / secrets
mysecret1
mysecret2
/ usr / src / app # cat / mnt / secrets / mysecret1
Мой первый секрет FOO
/ usr / src / app # cat / mnt / secrets / mysecret2
Мой второй секретный БАР
/ usr / src / app # выход
До свидания. 

Крепление секретного тома - YAML

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

При развертывании с шаблоном YAML секретные значения должны быть в кодировке Base64 в шаблоне. Однако секретные значения отображаются в виде открытого текста в файлах в контейнере.

Следующий шаблон YAML определяет группу контейнеров с одним контейнером, который монтирует том secret при / mnt / secrets .В секретном томе есть два файла с секретами: «mysecret1» и «mysecret2».

  apiVersion: '2019-12-01'
Расположение: Eastus
имя: секрет-том-демо
свойства:
  контейнеры:
  - название: aci-tutorial-app
    свойства:
      переменные среды: []
      изображение: mcr.microsoft.com/azuredocs/aci-helloworld:latest
      порты: []
      Ресурсы:
        Запросы:
          процессор: 1,0
          memoryInGB: 1,5
      volumeMounts:
      - mountPath: / mnt / secrets
        имя: secretvolume1
  osType: Linux
  restartPolicy: всегда
  объемы:
  - имя: secretvolume1
    секрет:
      mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo =
      mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
теги: {}
Тип: Microsoft.ContainerInstance / containerGroups
  

Для развертывания с шаблоном YAML сохраните предыдущий YAML в файл с именем deploy-aci.yaml , а затем выполните команду az container create с параметром --file :

  # Развертывание с использованием шаблона YAML
Я создаю контейнер \
  --resource-group myResourceGroup \
  --file deploy-aci.yaml
  

Монтирование секретного тома - Resource Manager

В дополнение к развертыванию CLI и YAML вы можете развернуть группу контейнеров с помощью шаблона Azure Resource Manager.

Сначала заполните массив томов в группе контейнеров Свойства раздела шаблона. При развертывании с шаблоном Resource Manager секретные значения должны быть в кодировке Base64 в шаблоне. Однако секретные значения отображаются в виде открытого текста в файлах в контейнере.

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

Следующий шаблон Resource Manager определяет группу контейнеров с одним контейнером, который монтирует том secret в / mnt / secrets . Секретный том имеет два секрета: «mysecret1» и «mysecret2».

  {
  "$ schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "переменные": {
    "container1name": "aci-tutorial-app",
    "container1image": "microsoft / aci-helloworld: последние"
  },
  "Ресурсы": [
    {
      "name": "secret-volume-demo",
      "type": "Microsoft.ContainerInstance / containerGroups»,
      "apiVersion": "2018-10-01",
      "location": "[resourceGroup (). location]",
      "свойства": {
        "контейнеры": [
          {
            "name": "[variable ('container1name')]",
            "свойства": {
              "image": "[variable ('container1image')]",
              "Ресурсы": {
                "Запросы": {
                  "процессор": 1,
                  «memoryInGb»: 1,5
                }
              },
              "порты": [
                {
                  «порт»: 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "secretvolume1",
                  "mountPath": "/ mnt / secrets"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "айпи адрес": {
          "type": "Public",
          "порты": [
            {
              "протокол": "tcp",
              "порт": "80"
            }
          ]
        },
        "тома": [
          {
            "name": "secretvolume1",
            "секрет": {
              "mysecret1": "TXkgZmlyc3Qgc2VjcmV0IEZPTwo =",
              "mysecret2": "TXkgc2Vjb25kIHNlY3JldCBCQVIK"
            }
          }
        ]
      }
    }
  ]
}
  

Для развертывания с помощью шаблона Resource Manager сохраните предыдущий JSON в файл с именем deploy-aci.json , затем выполните команду создания группы развертывания az с параметром --template-file :

  # Развертывание с помощью шаблона Resource Manager
группа развертывания az создать \
  --resource-group myResourceGroup \
  --template-file deploy-aci.json
  

Следующие шаги

томов

Узнайте, как подключить другие типы томов в экземплярах контейнера Azure:

Безопасные переменные среды

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

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *