Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 7 Следующий »

Данная статья применима к:

  • ОС СН Смоленск 1.7

Термины

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

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

Гостевая машина - виртуальная машина, запускаемая в изолированной среде системы виртуализации внутри хост-машины.

Гостевая операционная система - операционная система, работающая на гостевой машине.

Хост-машина - машина, в операционной системе которой запускатся система виртуализации и работающие в этой системе виртуализации гостевые машины.

Типы виртуализации в ОС СН

Программное обеспечение входящее в состав ОС СН поддерживает два типа виртуализации:

  • Полная виртуализация - технология виртуализации обеспечивающая полное моделирование используемого оборудования полностью индивидуальное для каждой гостевой ОС. Гостевые ОС полностью изолированы друг от друга, и каждая гостевая ОС работает в собственной программно-аппаратной среде, полностью копирующей реальное оборудование и содержащей полную копию всех необходимых ресурсов;

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

Системы виртуализации  в ОС СН

В состав ОС СН входят две системы виртуализации, поддерживающие два описанных выше типа виртуальзации:

  • libvirt - система полной виртуальзации;
  • docker - система контейнерной вартуализации.

Система контейнерной виртуализации Docker

Термины

Образ - набор упорядоченных слоёв, фактически сумма изменений, внесённых в систему, текущее состояние системы;

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

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

Реестр образов - сетевое хранилище подготовленных образов, доступных для загрузки на целевые машины.

Особенности

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

Традиционный способ развёртывания приложений предполагает:

  • передачу пользователю приложения комплекта неких файлов приложения как правило:
    • исполнимый файл;
    • конфигурационный файл;
    • сценарии установки и удаления;
    • инструкции по установке;
  • выполнение пользователем для развёртывания предоставленных сценариев и инструкций на целевой машине.

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

Docker предлагает альтернативный вариант развёртывания: поставщик приложений передаёт пользователям приложений предварительно настроенные контейнеры с приложениями. Эти контейнеры просто запускаются пользователем на целевой машине, предоставляя каждому приложению изолированное преднастроенное окружение для работы. Таким образом исключается существенная часть ошибок, связанных с предварительной настройкой нестандартных пользовательских систем. Хорошим примером использования возможностей Docker по быстрому развёртыванию приложений явлется пример развёртывания собственного реестра образов, выполняемого путём простого скачивания подготовленного образа (см. раздел "Администрировани" - "Создание собственного реестра образов").

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

Дополнительным эффектом от повторного использования "слоёв" является снижение объёмов передаваемых данных при передаче подготовленных в виде образов прикладных программ: при использовании реестра образов Docker передаваться будет только новые слои, в примере выше - слой "Базовая система Astra Linux SE" будет загружен из реестра образов только один раз, далее загружаться будут только новые слои.

Администрирование Docker

Установка Docker

В ОС СН Смоленск 1.7 Docker представлен пакетом docker.io и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:

sudo apt install docker.io
Для более ранних версий Astra Linux см. статью: Установка docker в ОС Astra Linux

Создание собственного реестра образов

Загрузить подготовленный образ Docker, содержащий приложение "Реестр образов Docker". Образ "Реестр образов Docker" загружается из реестра образов Docker:

sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2

Unable to find image 'registry:2' locally
2: Pulling from library/registry
0a6724ff3fcd: Pull complete 
d550a247d74f: Pull complete 
1a938458ca36: Pull complete 
acd758c36fc9: Pull complete 
9af6d68b484a: Pull complete 
Digest: sha256:d5459fcb27aecc752520df4b492b08358a1912fcdfa454f7d2101d4b09991daa
Status: Downloaded newer image for registry:2
782dbf275b4521715930a5478c3af2ed3e77614fc6042d03fff9a27740fafd97
После выполнения указанной команды локальный реестр образов автоматически запущен и готов к работе.

Для остановки работы реестра:

sudo docker container stop registry
Удаление реестра:
sudo docker container stop registry && sudo docker container rm -v registry
Настройка внешнего доступа к собственному реестру

Создание собственного образа

См. статью: Создание собственного образа для использования в Docker

Управление Docker-ом

Подробная справка по командному интерфейсу Docker представлена на сайте разработчиков: https://docs.docker.com/engine/reference/commandline/docker/. При работе в системе список команд можно получить с помощью команды:

docker help
Более подробную справку по аргументам команд можно получить с помощью ключа --help, например:
docker attach --help
Часто употребимые команды (аргументы команд для краткости не указаны):

КомандаКраткое описание

docker attach

Подключить стандартные каналы ввода-вывода (stdin, stdout, stderr) к активному контейнеру
docker buildПостроить Docker-образ из Docker-файла
docker builderУправление модулем построения Docker-образов 
docker commitСоздание нового Docker-образа из активного контейнера
docker configУправление конфигурациями Docker
docker container

Управление контейнерами:

docker container createсоздать новый контейнер
docker container execвыполнить команду в активном контейнере
docker container runвыполнить команду в новом контейнере
docker container startактивировать контейнер (контейнеры)
docker container stopдеактивация контейнера
docker contextУправление конекстами Docker
docker cp Копирование файлов или каталогов между локальной файловой системой и файловой системой контейнера
docker createСоздать новый изменяемый слой в указанном контейнере
docker diffВывести список файлов и каталогов, изменененных с момента создания контейнера
docker eventsВывести  событий, произошедших с различными объектами Docker
docker execВыполнить команду в активном контейнере
docker exportЭкспортировать файловую систему контейнера как архив формата tar
docker historyПоказать историю образа
docker image

Управление образами:

docker image buildсоздание нового образа
docker imagesВывести список образов верхнего уровня
docker importСоздать файловую систему образа из архива
docker infoВывод системной информации
docker inspectВывод подробной информации об объектах Docker
docker killПринудительно деактивировать активный контейнер (контейнеры)
docker loadЗагрузить образ из архива tar или из стандартного ввода
docker loginВойти в реестр образов
docker logoutВыйти из реестра образов
docker logsИзвлечь журналы контейнера
docker manifestУправление манифестами и списками манифестов Docker
docker networkУправление сетями
docker nodeУправление узлами кластеров Docker
docker pauseПриостановить все процессы в активном контейнере (контейнерах)
docker pluginУправление плагинами
docker portВывести список отображения портов контейнера
docker psВывести список активных контейнеров
docker pullЗагрузить образ на локальный компьютер из реестра образов
docker pushЗагрузить образ с локального компьютера в реестр образов
docker renameПереименовать контейнер
docker restartПерезапустить контейнер (контейнеры)
docker rmУдалить контейнер (контейнеры)
docker rmiУдалить образ (образы)
docker run

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

docker run --rmудалить новый (изменённый) слой после деактивации контейнера, т.е. сохранить образ неизменным
docker saveСохранить образ (образы) в архиве tar (через стандартный вывод по умолчанию)
docker searchПоиск образов Docker в сети Интернет
docker secretУправление паролями кластеров Docker
docker serviceУправление сервисами кластеров Docker
docker stackУправление стеками
docker startАктивировать контейнер (контейнеры)
docker statsОтобразить в режиме реального времени статистику потребления ресурсов контейнером
docker stopДективировать активный контейнер (контейнеры)
docker swarmУправление кластерами Docker
docker systemУправление службой Docker
docker tagСоздать тэг образа, ссылающийся на существующий образ
docker topВывести список процессов активного контейнера
docker trustУправление ключами и подписями образов
docker unpauseПродолжить выполнение приостановленного активного контейнера (контейнеров)
docker updateОбновить конфигурацию контейнера (контейнеров)
docker versionОтобразить версию Docker
docker volumeУправление томами хранения данных для контенеров
docker waitОжидание завершения работы контейнера (контейнеров) и вывод кодов завершения

Загрузка образа в реестр

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

sudo docker image ls

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) для загрузки в нужный реестр:
sudo docker tag wiki/astralinux:se17rc5 localhost:5000/se17rc5
Перепроверить список доступных образов, чтобы убедиться, что тэг присвоен верно:
 sudo docker image ls

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.

Загрузить образ в реестр:

sudo docker push localhost:5000/se17rc5

The push refers to repository [localhost:5000/se17rc5]
d5f516170dbe: Pushed 
latest: digest: sha256:8d12b1c9ebe3b3060734965bbd7214a0063633261bf1da17d3caf50ed4f1f534 size: 529

Использование Docker

Получение образа из реестра

Запуск контейнера


  • Нет меток