Содержание

Информатика — 9

Для того чтобы найти объем графического изображения, необходимо знать количество пикселей в ширину и в высоту (соответственно a и b), а также глубину цвета (n). Тогда объем графического изображения (V) можно рассчитать по следующей формуле:

V = a · b · n


Пример

В растровом изображении, имеющим размер 256×256 пикселей, использовано 512 цветов. Сколько места займет изображение в памяти компьютера?

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

a · b = 256 · 256 = 28 · 28 = 216.

Поскольку палитра содержит 512 цветов, то представим это число в виде степени 2 и найдем глубину цвета:

512 = 2n ⇨ 29 = 2nn = 9.

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

V = 216 · 9 бит = 213 · 9 байт = 23 · 9 Kбайт = 72 Kбайт


Памятка

• Глубина цвета
• Дополняющие цвета
• Кодирование RGB
• Кодирование CMYK

На экране монитора любой цвет получается смешением

трех основных цветов: красного (Red), зеленого (Green) и зеленого (Blue). Такая система кодирования называется RGB (читается как «er-ci-bi»). Смешивая эти цвета в определенном соотношении, можно получить любой другой цвет, воспринимаемый глазом человека; отсутствие всех трех цветов дает черный цвет, белый цвет получается 100-процентным присутствием всех трех цветов.

Если для кодирования яркости каждого из этих основных цветов используют 8 бит (из 256), то для кодирования каждой точки изображения необходимо 24 бита. Такая система кодирования позволяет однозначно определять 16,8 миллиона цветов. Кодирование цветных изображений при помощи 24-битных двоичных чисел называют

полным цветным кодированием (True Color).

При печати приемлемо использовать не эти три основных цвета, а дополняющие цвета. Дополняющие цвета следующие: голубой (Cyan), пурпурный

Выставка Игорь Пчельников. Объем изображения – Афиша-Музеи

  • Абакан,
  • Азов,
  • Альметьевск,
  • Анапа,
  • Ангарск,
  • Арзамас,
  • Армавир,
  • Артем,
  • Архангельск,
  • Астрахань,
  • Ачинск,
  • Балаково,
  • Балашиха,
  • Балашов,
  • Барнаул,
  • Батайск,
  • Белгород,
  • Белорецк,
  • Белореченск,
  • Бердск,
  • Березники,
  • Бийск,
  • Благовещенск,
  • Братск,
  • Брянск,
  • Бугульма,
  • Бугуруслан,
  • Бузулук,
  • Великий Новгород,
  • Верхняя Пышма,
  • Видное,
  • Владивосток,
  • Владикавказ,
  • Владимир,
  • Волгоград,
  • Волгодонск,
  • Волжский,
  • Вологда,
  • Вольск,
  • Воронеж,
  • Воскресенск,
  • Всеволожск,
  • Выборг,
  • Гатчина,
  • Геленджик,
  • Горно-Алтайск,
  • Грозный,
  • Губкин,
  • Гудермес,
  • Дербент,
  • Дзержинск,
  • Димитровград,
  • Дмитров,
  • Долгопрудный,
  • Домодедово,
  • Дубна,
  • Евпатория,
  • Екатеринбург,
  • Елец,
  • Ессентуки,
  • Железногорск (Красноярск),
  • Жуковский,
  • Зарайск,
  • Заречный,
  • Звенигород,
  • Зеленогорск,
  • Зеленоград,
  • Златоуст,
  • Иваново,
  • Ивантеевка,
  • Ижевск,
  • Иркутск,
  • Искитим,
  • Истра,
  • Йошкар-Ола,
  • Казань,
  • Калининград,
  • Калуга,
  • Каменск-Уральский,
  • Камышин,
  • Каспийск,
  • Кемерово,
  • Кингисепп,
  • Кириши,
  • Киров,
  • Кисловодск,
  • Клин,
  • Клинцы,
  • Ковров,
  • Коломна,
  • Колпино,
  • Комсомольск-на-Амуре,
  • Копейск,
  • Королев,
  • Коряжма,
  • Кострома,
  • Красногорск,
  • Краснодар,
  • Краснознаменск,
  • Красноярск,
  • Кронштадт,
  • Кстово,
  • Кубинка,
  • Кузнецк,
  • Курган,
  • Курганинск,
  • Курск,
  • Лесной,
  • Лесной Городок,
  • Липецк,
  • Лобня,
  • Лодейное Поле,
  • Ломоносов,
  • Луховицы,
  • Лысьва,
  • Лыткарино,
  • Люберцы,
  • Магадан,
  • Магнитогорск,
  • Майкоп,
  • Махачкала,
  • Миасс,
  • Можайск,
  • Московский,
  • Мурманск,
  • Муром,
  • Мценск,
  • Мытищи,
  • Набережные Челны,
  • Назрань,
  • Нальчик,
  • Наро-Фоминск,
  • Находка,
  • Невинномысск,
  • Нефтекамск,
  • Нефтеюганск,
  • Нижневартовск,
  • Нижнекамск,
  • Нижний Новгород,
  • Нижний Тагил,
  • Новоалтайск,
  • Новокузнецк,
  • Новокуйбышевск,
  • Новомосковск,
  • Новороссийск,
  • Новосибирск,
  • Новоуральск,
  • Новочебоксарск,
  • Новошахтинск,
  • Новый Уренгой,
  • Ногинск,
  • Норильск,
  • Ноябрьск,
  • Нягань,
  • Обнинск,
  • Одинцово,
  • Озерск,
  • Озеры,
  • Октябрьский,
  • Омск,
  • Орел,
  • Оренбург,
  • Орехово-Зуево,
  • Орск,
  • Павлово,
  • Павловский Посад,
  • Пенза,
  • Первоуральск,
  • Пермь,
  • Петергоф,
  • Петрозаводск,
  • Петропавловск-Камчатский,
  • Подольск,
  • Прокопьевск,
  • Псков,
  • Пушкин,
  • Пушкино,
  • Пятигорск,
  • Раменское,
  • Ревда,
  • Реутов,
  • Ростов-на-Дону,
  • Рубцовск,
  • Руза,
  • Рыбинск,
  • Рязань,
  • Салават,
  • Салехард,
  • Самара,
  • Саранск,
  • Саратов,
  • Саров,
  • Севастополь,
  • Северодвинск,
  • Североморск,
  • Северск,
  • Сергиев Посад,
  • Серпухов,
  • Сестрорецк,
  • Симферополь,
  • Смоленск,
  • Сокол,
  • Солнечногорск,
  • Сосновый Бор,
  • Сочи,
  • Спасск-Дальний,
  • Ставрополь,
  • Старый Оскол,
  • Стерлитамак,
  • Ступино,
  • Сургут,
  • Сызрань,
  • Сыктывкар,
  • Таганрог,
  • Тамбов,
  • Тверь,
  • Тихвин,
  • Тольятти,
  • Томск,
  • Туапсе,
  • Тула,
  • Тюмень,
  • Улан-Удэ,
  • Ульяновск,
  • Уссурийск,
  • Усть-Илимск,
  • Уфа,
  • Феодосия,
  • Фрязино,
  • Хабаровск,
  • Ханты-Мансийск,
  • Химки,
  • Чебоксары,
  • Челябинск,
  • Череповец,
  • Черкесск,
  • Чехов,
  • Чита,
  • Шахты,
  • Щелково,
  • Электросталь,
  • Элиста,
  • Энгельс,
  • Южно-Сахалинск,
  • Якутск,
  • Ялта,
  • Ярославль

томов | Документация по докеру

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

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

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

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

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

Тома

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

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

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

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

--монтировать .

  • -v или --volume : Состоит из трех полей, разделенных двоеточием ( : ). Поля должны быть в правильном порядке, а значение каждого поля сразу не видно.

    • В случае именованных томов первое поле — это имя тома. уникальным на данном хост-компьютере. Для анонимных томов первое поле опущено.
    • Второе поле — это путь, по которому монтируется файл или каталог. контейнер.
    • Третье поле является необязательным и представляет собой список параметров, разделенных запятыми, например как
      ро
      . Эти варианты обсуждаются ниже.
  • --mount : состоит из нескольких пар ключ-значение, разделенных запятыми и состоящий из кортежа = . Синтаксис --mount более подробный. чем -v или --volume , но порядок ключей не имеет значения, и значение флага легче понять.

    • типа крепления, которое может быть bind , volume или тмпфс . В этой теме обсуждаются объемы, поэтому тип всегда том .
    • Источник крепления. Для именованных томов это имя тома. Для анонимных томов это поле опущено. Может быть указан как источник или источник .
    • Пункт назначения принимает в качестве значения путь, по которому находится файл или каталог. монтируется в контейнер. Можно указать как пункт назначения , дст , или цель .
    • Параметр только для чтения , если он присутствует, вызывает монтирование привязки в контейнер только для чтения. Можно указать как
      только для чтения
      или только для чтения .
    • Опция volume-opt , которую можно указывать более одного раза, занимает пара ключ-значение, состоящая из имени параметра и его значения.

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

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

' ).

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

 $ создание службы докеров \
    --mount 'type=volume,src=<ИМЯ-ТОМА>,dst=<ПУТЬ-КОНТЕЙНЕРА>,volume-driver=local,volume-opt=type=nfs,volume-opt=device=: ,"volume-opt=o=addr=,vers=4,soft,timeo=180,bg,tcp,rw"'
    --название моей службы \
    <ИЗОБРАЖЕНИЕ>
 

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

.

Различия между

-v и --mount поведение

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

Тома, используемые со службами, поддерживают только --mount .

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

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

Создать том :

 $ docker том создать my-vol
 

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

 $ том докера, лс
местный мой-vol
 

Проверка тома :

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

Удалить том :

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

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

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

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

  • --крепление
 $ docker run -d \
  --название разработчика \
  --mount источник=myvol2, цель=/приложение \
  nginx: последний
 
 $ docker run -d \
  --название разработчика \
  -v myvol2:/приложение \
  nginx: последний
 

Используйте docker inspect devtest , чтобы убедиться, что Docker создал том и смонтировал его. правильно. Ищите Mounts раздел:

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

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

Остановите контейнер и удалите том. Примечание. Удаление тома — это отдельная шаг.

 $ docker-контейнер остановить devtest
$ docker контейнер rm devtest
$ объем докера rm myvol2
 

Использовать том с Docker Compose

В приведенном ниже примере показана одна служба Docker Compose с томом:

.
 услуги:
  внешний интерфейс:
    изображение: узел:lts
    тома:
      - мое приложение:/дом/узел/приложение
тома:
  мое приложение:
 

Запуск docker compose up впервые создает том. Docker повторно использует тот же том при последующем запуске команды.

Вы можете создать том непосредственно вне Compose, используя docker volume create и затем укажите его внутри docker-compose.yml следующим образом:

 услуги:
  внешний интерфейс:
    изображение: узел:lts
    тома:
      - мое приложение:/дом/узел/приложение
тома:
  мое приложение:
    внешний: правда
 

Дополнительные сведения об использовании томов в Compose см. Объемы раздел в спецификации Compose.

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

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

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

 $ docker service create -d \
  --replicas=4 \
  --name devtest-сервис \
  --mount источник=myvol2, цель=/приложение \
  nginx: последний
 

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

 $ служба докеров ps devtest-service
ID НАЗВАНИЕ ИЗОБРАЖЕНИЕ УЗЕЛ ТРЕБУЕМОЕ СОСТОЯНИЕ ТЕКУЩЕЕ СОСТОЯНИЕ ОШИБКА ПОРТЫ
4d7oz1j85wwn devtest-service.1 nginx:latest moby Выполняется Выполняется 14 секунд назад
 

Вы можете удалить службу, чтобы остановить запущенные задачи:

 $ служба докеров rm devtest-service
 

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

Различия в синтаксисе для служб

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

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

Если вы запускаете контейнер, который создает новый том, а контейнер имеет файлы или каталоги в каталоге для монтирования, например /приложение/ , Docker копирует содержимое каталога в том. Затем контейнер монтирует и использует том, а также другие контейнеры, которые также используют том иметь доступ к предварительно заполненному контенту.

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

9Примеры 0027 —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/доля/nginx/html \
  nginx: последний
 

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

 $ остановка контейнера докеров nginxtest
$ докер-контейнер rm nginxtest
$ том докера rm nginx-vol
 

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

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

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

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

  • --крепление
 $ запуск докера -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: последний
 

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

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

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

 $ остановка контейнера докеров nginxtest
$ докер-контейнер rm nginxtest
$ том докера rm nginx-vol
 

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

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

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

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

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

Использовать драйвер тома

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

Первоначальная настройка

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

На хосте Docker установите подключаемый модуль vieux/sshfs :

 $ установка плагина докера --grant-all-permissions vieux/sshfs
 

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

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

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

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

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

Примечание:

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

 $ запуск докера -d \
  --имя sshfs-контейнера \
  --volume-driver vieux/sshfs \
  --mount src=sshvolume,target=/app,volume-opt=sshcmd=test@node2:/home/test,volume-opt=password=testpassword \
  nginx: последний
 

Создайте службу, которая создает том NFS

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

NFSv3
 $ docker service create -d \
  --имя nfs-сервиса \
  --mount 'type=volume,source=nfsvolume,target=/app,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o =адрес=10.0.0.10' \
  nginx: последний
 
NFSv4
 $ docker service create -d \
    --имя nfs-сервиса \
    --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,rw,nfsvers=4,асинхронный"' \
    nginx: последний
 

Создание томов CIFS/Samba

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

 $ создание тома докера \
--локальный драйвер \
--opt тип=cifs \
--opt устройство=//uxxxxx. your-server.de/backup \
--opt o=addr=uxxxxx.your-server.de,имя пользователя=uxxxxxxx,пароль=*****,file_mode=0777,dir_mode=0777 \
--name cif-том
 

Параметр addr требуется, если вы указываете имя хоста вместо IP. Это позволяет Docker выполнять поиск имени хоста.

Блочные запоминающие устройства

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

Важно

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

Принцип работы монтажных блочных устройств

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

Если вы знакомы с Команда Linux mount , вы можете думать о параметрах --mount как о переадресации на смонтируйте команду следующим образом:

 $ mount -t    -o 
 

Для дальнейшего пояснения рассмотрим следующий пример команды mount . Эта команда монтирует устройство /dev/loop5 по пути /external-drive в системе.

 $ mount -t ext4 /dev/loop5 /внешний диск
 

Следующий докер запускает 9Команда 0028 дает аналогичный результат с точки зрения запускаемого контейнера. Запуск контейнера с этой опцией --mount настраивает монтирование так же, как если бы вы выполнили команда mount из предыдущего примера.

 $ запуск докера \
  --mount='type=volume,dst=/внешний диск,volume-driver=local,volume-opt=device=/dev/loop5,volume-opt=type=ext4'
 

Вы не можете запустить команду mount внутри контейнера напрямую, потому что контейнер не может получить доступ к /dev/loop5 устройство. Вот почему команда docker run использует параметр --mount .

Пример: установка блочного устройства в контейнер

Следующие шаги создают файловую систему ext4 и монтируют ее в контейнер. Поддержка файловой системы вашей системой зависит от используемой вами версии ядра Linux.

  1. Создайте файл и выделите для него место:

     $ fallocate -f 1G disk.raw
     
  2. Создайте файловую систему на файле disk.raw :

     $ mkfs.ext4 disk.raw
     
  3. Создать кольцевое устройство:

     $ lossup -f --show disk.raw
    /dev/loop5
     

    Примечание

    lossup создает временную петлю, которая удаляется после перезагрузка системы или удаление вручную с помощью lossup -d .

  4. Запустите контейнер, который монтирует петлевое устройство как том:

     $ docker run -it --rm \
      --mount='type=volume,dst=/внешний диск,volume-driver=local,volume-opt=device=/dev/loop5,volume-opt=type=ext4' \
      убунту баш
     

    При запуске контейнера путь /внешний диск монтирует disk. raw файл из файловой системы хоста в качестве блочного устройства.

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

     $ lossup -d /dev/loop5
     

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

Тома

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

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

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

.
 $ docker run -v /dbdata --name dbstore ubuntu /bin/bash
 

В следующей команде:

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

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

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

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

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

.
 $ docker run -v /dbdata --name dbstore2 ubuntu /bin/bash
 

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

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

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

Удалить тома

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

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

Удаление анонимных томов

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

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

Примечание :

Если другой контейнер связывает тома с --volumes-из , определения томов скопированы и анонимный том также остается после удаления первого контейнера.

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

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

 $ сокращение объема докера
 

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

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

Кэш тома изображения — документация cinder 22.1.0.dev106

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

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

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

Настройка внутреннего арендатора

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

Чтобы разрешить службам блочного хранилища доступ к внутреннему арендатору, установите следующие параметры в файле cinder.conf :

 cinder_internal_tenant_project_id = PROJECT_ID
cinder_internal_tenant_user_id = USER_ID
 

Пример файла конфигурации cinder.conf :

 cinder_internal_tenant_project_id = b7455b8974bb4064ad247c8f375eae6c
cinder_internal_tenant_user_id = f46924c112a14c80ab0a24a613d95eef
 

Примечание

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

Настройка кэша тома изображения

Чтобы включить кеш Image-Volume, установите следующий параметр конфигурации в файл cinder.conf :

 image_volume_cache_enabled = Истина
 

Примечание

Если вы используете Ceph в качестве серверной части, установите следующую опцию конфигурации в файл cinder.conf :

 [ceph]
image_volume_cache_enabled = Истина
 

Это может быть ограничено определением серверной части или параметрами по умолчанию.

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

 image_volume_cache_max_size_gb = SIZE_GB
image_volume_cache_max_count = MAX_COUNT
 

По умолчанию они будут установлены на 0, что означает неограниченное количество.

Автор записи

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

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