Оглавление |
---|
Информация | ||
---|---|---|
| ||
Для более ранних версий Astra Linux см. статью: Установка и настройка Docker в Astra Linux 1.6 |
Установка Docker
Установка Docker для работы в привилегированном режиме (не рекомендуется)
Предупреждение |
---|
Данный способ установки наиболее прост, однако не рекомендуется к применению в силу потенциальной небезопасности использования контейнеров в привилегированном режиме. |
Раскрыть | ||||
---|---|---|---|---|
В Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) Docker представлен пакетом docker.io и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
Установка должна выполняеться от имени пользователя, являющегося администратором системы (при включенном МКЦ - пользователя с высоким уровнем целостности). После установки Docker рекомендуется предоставить этому пользователю право работать с контейнерами не используя sudo. Для этого пользователя нужно включить в группу docker:
Изменение вступит в силу после перезапуска пользовательской сессии. Аналогично в группу docker следует включить других пользователей, которые будут работать с docker. |
Установка, включение и применение Docker для работы в непривилегированном (rootless) режиме (рекомендованный режим)
Информация |
---|
Данный режим является рекомендованным к применению. Данный режим официально поддерживается в версиях Astra Linux, содержащих Docker версии 20.10 и выше. |
Для использования Docker в rootless режиме в дополнение к пакету docker следует установить пакет rootless-helper-astra:
Command |
---|
sudo apt install docker.io rootless-helper-astra |
После установки пакета необходимо включить пользовательские службы Docker для тех пользователей, которые будут использовать контейнеры Docker в rootless режиме:
Command |
---|
sudo systemctl start rootless-docker@<имя_пользователя> |
и, при необходимости, разрешить автоматический запуск этих служб:
Command |
---|
sudo systemctl enable rootless-docker@<имя_пользователя> |
Дальнейшее применение Docker пользователями возможно с помощью команды rootlessenv. Будучи запущена без параметров, эта команда предоставит пользователю командную оболочку, в которой пользователь сможет выполнять команды Docker от своего имени. При запуске с параметрами команда rootlessenv попытается интерпретировать указанные параметры как стандартные команды Docker, и выполнить их в пользовательском окружении. Все данные при этом будут сохраняться в домашнем каталоге пользователя. Например, создать образ для использования текущим пользователем можно командой:
Command |
---|
sudo tar -C /home/docker-chroot -cpf - . | rootlessenv docker import - wiki/astralinux:se --change "ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --change 'CMD ["/bin/bash"]' |
От команд, описанных в статье Создание собственного образа Astra Linux для использования в Docker, приведенная выше команда отличается только использованием rootlessenv для выполнения команды docker import. При этом стандартная команда
Command |
---|
rootlessenv docker images |
покажет список только образов, принадлежащих текущему пользователю, а команда
Command |
---|
rootlessenv docker run --rm -ti astralinux:se |
запустит пользовательский образ. Далее примеры команд приводятся в режиме rootless, для работы в привилегированном режиме rootlessenv должно быть везде заменено на .
Создание собственного реестра образов
Предупреждение |
---|
На момент написания статьи данная возможность в Astra Linux Special Edition официально не поддерживается. |
Раскрыть | |||||||||
---|---|---|---|---|---|---|---|---|---|
Для создания собственного реестра образов следует загрузить docker-образ, содержащий приложение "Реестр образов Docker". Docker-образ "Реестр образов Docker" загружается из общедоступного реестра образов Docker:
После выполнения указанной команды локальный реестр образов автоматически запущен и готов к работе. Управление работой контейнера реестра осуществляется так же как управление любым другим контейнером. например остановка работы реестра:
Удаление реестра:
|
Создание и модификация собственных образов
Создание образа из chroot-окружения
Простой пример создания собственного образа см. в статье Создание собственного образа Astra Linux для использования в Docker.
Создание и модификация образа с помощью докерфайла
Подробное описание структуры и работы с докерфайлами доступно в справочной системе man:
Command |
---|
man dockerfile man docker-build |
Докер может создавать образы автоматически, получая инструкции из "докерфайла" и применяя их к "контексту". Докерфайл представляет собой текстовый файл, содержащий все инструкции которые понадобилось бы выполнить пользователю создавая образ. Команда docker build позволяет пользователям использовать для создания образов автоматические воспроизводимые сценарии, содержащие множество команд. Контекст представляет набор файлов в указанной локации. Локация контекста может быть задана как путь (PATH) в файловой системе или как ссылка (URL) на сетевой репозиторий Git. По умолчанию используется докерфайл с именем Dockerfile, расположенный в корне контекста.
Команда docker build выполняется системной службой (демоном) dockerd, при этом полное содержимое контекста рекурсивно пересылается службе dockerd и может по мере надобности копироваться в создаваемый образ. Копирование выполняется командами, указанными в докерфайле.
Предупреждение |
---|
Не используйте в качестве контекста корневой каталог файловой системы, так как в этом случае будет предпринята попытка передать всё содержимое файловой системы. |
Перед началом выполнения инструкций, указанных в докерфайле, проводится проверка всех инструкций на корректность. Инструкции выполняются последовательно, и результат выполнения каждой инструкции фиксируется в отдельном слое. Рабочим каталогом по умолчанию является корневой каталог (может быть изменен инструкцией WORKDIR в докерфайле). Инструкции выполняются "построчно" без передачи контекста, т.е., например, при выполнении инструкций:
Command |
---|
RUN cd /home ; pwd RUN pwd |
в первой инструкции команда pwd будет выполнена в каталоге /home, во второй инструкции команда pwd будет выполнена в рабочем каталоге, заданном по умолчанию.
Далее приведён пример сборки образа с помощью команды docker build. Сборка выполняется на основе ранее созданного образа wiki/astralinux:se (см. Создание собственного образа Astra Linux для использования в Docker). Порядок действий:
Создать каталог контекста сборки и файлы этом каталоге:
Command mkdir build-user
echo "Это импортированные данные" > build-user/data-to-importТ.е. в контексте сборки создан файл с именем data-to-import и содержащий текст "Это импортированные данные" (без кавычек).
В файл build-user/Dockerfile внести следующие данные:
Блок кода # указание из какого образа выполнять сборку FROM wiki/astralinux:se # скопировать файл data-to-import из контекста сборки в образ COPY data-to-import /srv # создать в образе пустой файл /srv/created-file RUN touch /srv/created-file # вывести на печать содержимое скопированного файла RUN cat /srv/data-to-import # вывести на печать рабочий каталог RUN echo Current work directory is $(pwd)
Выполнить сборку образа с тегом test:
Command Title rootlessenv docker build -t test build-user/ Sending build context to Docker daemon 5.12kB
Step 1/5 : FROM wiki/astralinux:orel
---> 60d0611fe56a
Step 2/5 : COPY /data-to-import /srv
---> 7a75a002d29f
Step 3/5 : RUN touch /srv/created-file
---> Running in 709bb54af8c3
Removing intermediate container 709bb54af8c3
---> b5fd28178901
Step 4/5 : RUN cat /srv/data-to-import
---> Running in 4c69f455cf2f
Это импортированные данные
Removing intermediate container 4c69f455cf2f
---> c8f8c7c3797a
Step 5/5 : RUN echo Current work directory is $(pwd)
---> Running in 27db5fcaaba5
Current work directory is /
Removing intermediate container 27db5fcaaba5
---> 14446097a09e
Successfully built 14446097a09e
Successfully tagged test:latest
На шаге 4 выводится содержимое скопированного из контекста файла, на шаге 5 выводится рабочий каталог;
Убедиться, что образ test появился в списке образов:
Command Title rootlessenv docker images REPOSITORY TAG IMAGE ID CREATED SIZE
test latest 14446097a09e 2 minutes ago 290MB
wiki/astralinux orel 60d0611fe56a About an hour ago 290MB
busybox latest b97242f89c8a 7 days ago 1.23MB
Запустить контейнер из образа и проверить содержимое:
Command Title rootlessenv docker run --rm -it test root@978a4cc9fbd8:/# ls -l /srv
total 4
-rw-r--r-- 1 root root 0 Jan 20 10:12 created-file
-rw-r--r-- 1 root root 51 Jan 20 10:11 data-to-import
root@978a4cc9fbd8:/# cat /srv/data-to-import
Это импортированные данные
root@978a4cc9fbd8:/# exit
exit
В контейнере в каталоге /srv присутствует скопированный в образ файл data-to-import содержащий текст "Это импортированные данные" и созданный при создании образа пустой файл created-file.
Управление Docker-ом
Подробная справка по командному интерфейсу Docker представлена на сайте разработчиков: https://docs.docker.com/engine/reference/commandline/docker/. При работе в системе список команд можно получить с помощью команды:
Command |
---|
docker help |
Более подробную справку по аргументам команд можно получить с помощью ключа --help, или с помощью справочной системы man, например:
Command |
---|
docker attach --help man docker-attach |
Часто употребимые команды (аргументы команд для краткости не указаны):
Команда | Краткое описание | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
docker attach | Подключить стандартные каналы ввода-вывода (stdin, stdout, stderr) к активному контейнеру | ||||||||||
docker build | Построить Docker-образ из Docker-файла | ||||||||||
docker builder | Управление модулем построения Docker-образов | ||||||||||
docker commit | Создание нового Docker-образа из активного контейнера | ||||||||||
docker config | Управление конфигурациями Docker | ||||||||||
docker container | Управление контейнерами:
| ||||||||||
docker context | Управление контекстами Docker | ||||||||||
docker cp | Копирование файлов или каталогов между локальной файловой системой и файловой системой контейнера | ||||||||||
docker create | Создать новый изменяемый слой в указанном контейнере | ||||||||||
docker diff | Вывести список файлов и каталогов, изменённых с момента создания контейнера | ||||||||||
docker events | Вывести событий, произошедших с различными объектами Docker | ||||||||||
docker exec | Выполнить команду в активном контейнере | ||||||||||
docker export | Экспортировать файловую систему контейнера как архив формата tar | ||||||||||
docker history | Показать историю образа | ||||||||||
docker image | Управление образами:
| ||||||||||
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 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 | Ожидание завершения работы контейнера (контейнеров) и вывод кодов завершения |
Загрузка образа в реестр
Предупреждение |
---|
Данная возможность в Astra Linux Special Edition официально не поддерживается. |
Раскрыть | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Получить список доступных на локальной машине образов:
Пометить загружаемый образ тегом (tag) для загрузки в нужный реестр:
Перепроверить список доступных образов, чтобы убедиться, что тег присвоен верно:
В примере выше первые две строки сообщают об одном и том же образе (идентификатор образа 5d69ce8720a7). При этом образ помечен как размещённый в двух локациях - на локальной машине wiki/astralinux и сетевом реестре на локальной машине localhost:5000. Загрузить образ в реестр:
|