Установка Docker
Установка Docker для работы в привилегированном режиме (не рекомендуется)
В ОС СН Смоленск 1.7 Docker представлен пакетом docker.io и может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
Для более ранних версий Astra Linux см. статью: Установка и настройка Docker в Astra Linux 1.6
Установка, включение и применение Docker для работы в непривилегированном (rootless) режиме (рекомендованный режим)
Данный режим является рекомендованным к применению. Данный режим официально поддерживается в версиях Astra Linux, содержащих Docker версии 20.10 и выше.
Для использования Docker в rootless режиме следует установить пакет rootless-helper-astra:
Создание собственного реестра образов
Загрузить подготовленный образ Docker, содержащий приложение "Реестр образов Docker". Образ "Реестр образов Docker" загружается из реестра образов Docker:
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
Удаление реестра:
Создание и модификация собственных образов
Создание простого образа из chroot-окружения
Простой пример создания собственного образа см. в статье Создание собственного образа Astra Linux для использования в Docker
Модификация образа с помощью докерфайла
Подробное описание структуры и работы с докерфайлами доступно в справочной системе man:
man docker-build
Команда docker build выполняется службой (демоном) dockerd, при этом полное содержимое контекста рекурсивно пересылается службе dockerd и может по мере надобности копироваться в создаваемый образ. Копирование выполняется командами, указанными в докерфайле.
Перед началом выполнения инструкций, указанных в докерфайле, проводится проверка всех инструкций на корректность. Инструкции выполняются последовательно, и результат выполнения каждой инструкции фиксируется в отдельном слое. Рабочим каталогом по умолчанию является корневой каталог (может быть изменен инструкцией WORKDIR в докерфайле). Инструкции выполняются без передачи контекста, т.е., например, при выполнении инструкций:
RUN pwd
Далее приведён пример сборки образа с помощью команды docker build. Сборка выполняется на основе ранее созданного образа wiki/astralinux:orel (см. Создание собственного образа Astra Linux для использования в Docker). Порядок действий:
Создать каталог контекста сборки и файлы этом каталоге:
mkdir build-orelТ.е. в контексте сборки создан файл с именем data-to-import и содержащий текст "Это импортированные данные" (без кавычек).
echo "Это импортированные данные" > build-orel/data-to-importВ файл build-orel/Dockerfile внести следующие данные:
# указание из какого образа выполнять сборку FROM wiki/astralinux:orel # скопировать файл 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:
docker build -t test build-orel/На шаге 4 выводится содержимое скопированного из контекста файла, на шаге 5 выводится рабочий каталог;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
Убедиться, что образ test появился в списке образов:
docker imagesREPOSITORY 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
Запустить контейнер из образа и проверить содержимое:
docker run --rm -it testВ контейнере в каталоге /srv присутствует скопированный в образ файл data-to-import содержащий текст "Это импортированные данные" и созданный при создании образа пустой файл created-file.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
Управление Docker-ом
Подробная справка по командному интерфейсу Docker представлена на сайте разработчиков: https://docs.docker.com/engine/reference/commandline/docker/. При работе в системе список команд можно получить с помощью команды:
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 | Ожидание завершения работы контейнера (контейнеров) и вывод кодов завершения |
Загрузка образа в реестр
Получить список доступных на локальной машине образов:
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
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
Загрузить образ в реестр:
The push refers to repository [localhost:5000/se17rc5]
d5f516170dbe: Pushed
latest: digest: sha256:8d12b1c9ebe3b3060734965bbd7214a0063633261bf1da17d3caf50ed4f1f534 size: 529