-
- 3.1 Файловые системы в НАЙС ОС
- 3.2 Монтирование устройств в НАЙС ОС
- 3.3 Каталоги файловой системы НАЙС ОС
- 3.4 Основные команды для работы с файлами и файловой системой НАЙС ОС
- 3.5 Мягкие и жесткие ссылки в НАЙС ОС
- 3.6 Конфигурационный файл limits.conf в НАЙС ОС
- 3.7 Перенаправление стандартного вывода и вывода ошибок в НАЙС ОС
- 3.8 Управление задачами в командной строке в НАЙС ОС
- 3.9 Знакомство с командной строкой в НАЙС ОС
- 3.10 Работа с текстовыми редакторами (nano, vim) в НАЙС ОС
- 3.11 Использование оболочки (bash, zsh) в НАЙС ОС
- 3.12 Основы скриптования в НАЙС ОС
- 3.13 Использование man и info страниц
- 3.14 Введение в Markdown и текстовые форматы документации
- 3.15 Работа с архивами
- 3.16 Управление и настройка swap
-
- 4.1 Система управления пакетами TDNF и DNF в НАЙС ОС
- 4.2 Основные команды DNF в НАЙС ОС
- 4.3 Основные команды TDNF в НАЙС ОС
- 4.4 Работа с историей DNF в НАЙС ОС
- 4.5 Создание и управление локальными репозиториями в НАЙС ОС
- 4.6 Решение проблем с зависимостями в НАЙС ОС
- 4.7 Управление пакетами из исходных кодов в НАЙС ОС
-
- 5.1 Пользователи и привилегии, команды su и sudo в НАЙС ОС
- 5.2 Добавление нового пользователя в НАЙС ОС
- 5.3 Модификация пользовательских записей в НАЙС ОС
- 5.4 Удаление пользователей в НАЙС ОС
- 5.5 Группы пользователей в НАЙС ОС
- 5.6 Создание и настройка собственного default-профиля пользователя при помощи SKEL в НАЙС ОС
- 5.7 Управление сеансами пользователей с помощью systemd-logind в НАЙС ОС
-
- 8.1 Управление правами доступа
- 8.2 Настройка файервола (firewalld, iptables)
- 8.3 Конфигурация SELinux
- 8.4 Настройка SSH
- 8.5 Обнаружение и предотвращение вторжений (IDS/IPS)
- 8.6 Шифрование данных
- 8.7 Управление политиками безопасности
- 8.8 Настройка двухфакторной аутентификации
- 8.9 Настройка и использование AppArmor
- 8.10 Управление сертификатами и криптографией: OpenSSL и Let's Encrypt
- 8.11 Введение в SIEM (Security Information and Event Management)
-
- 9.1 Управление процессами и службами
- 9.2 Настройка системных журналов (journald, rsyslog)
- 9.3 Мониторинг системы (top, htop, iostat)
- 9.4 Настройка cron и systemd timers
- 9.5 Автоматизация задач с помощью скриптов
- 9.6 Управление и анализ производительности системы (sysstat, sar)
- 9.7 Настройка и управление системными уведомлениями
- 9.8 Использование средств диагностики (strace, lsof)
- 9.9 Резервное копирование и восстановление
- 9.10 Настройка ротации логов
- 9.11 Использование cron
-
- 10.1 Использование системных журналов для диагностики
- 10.2 Поиск и исправление ошибок загрузки
- 10.3 Диагностика сетевых проблем
- 10.4 Решение проблем с производительностью
- 10.5 Восстановление поврежденных файловых систем
- 10.6 Работа с ядром и модульной системой
- 10.7 Управление и диагностика проблем с драйверами
-
- 11.1 Настройка ядра и модулей
- 11.2 Настройка кэширования
- 11.3 Анализ и устранение узких мест
- 11.4 Управление потреблением ресурсов
- 11.5 Использование профилировщиков производительности (perf, eBPF)
- 11.6 Оптимизация сетевой производительности
- 11.7 Оптимизация и настройка MySQL/PostgreSQL
- 11.8 Оптимизация работы с большими данными и высоконагруженными системами
-
- 12.1 Основные сетевые команды
- 12.2 Настройка сети
- 12.3 Устранение неполадок сети
- 12.4 Использование и настройка Netplan
- 12.5 Настройка и управление сетевыми интерфейсами
- 12.6 Настройка и управление сетевыми интерфейсами с помощью systemd-networkd
- 12.7 Настройка и управление сетевыми мостами и агрегированием интерфейсов (bonding)
-
- 13.1 Установка и настройка веб-сервера (Apache, Nginx)
- 13.2 Установка и настройка базы данных (MySQL, PostgreSQL)
- 13.3 Установка и настройка почтового сервера (Postfix, Dovecot)
- 13.4 Установка и Настройка vsftp сервера
- 13.5 Установка и настройка OpenVpn
- 13.6 Установка и настройка StrongSwan
- 13.7 Установка и настройка WireGuard VPN
- 13.8 Установка и настройка LDAP
- 13.9 Настройка и управление Redis
- 13.10 Настройка и управление RabbitMQ
- 13.11 Установка и настройка Docker
- 13.12 Установка и настройка Kubernetes
- 13.13 Установка и настройка GitLab
- 13.14 Установка и настройка Jenkins
- 13.15 Установка и настройка Prometheus
- 13.16 Установка и настройка Grafana
- 13.17 Установка и настройка Zabbix
- 13.18 Установка и настройка Ansible
- 13.19 Установка и настройка Terraform
- 13.20 Установка и настройка HAProxy
- 13.21 Установка и настройка Apache Kafka
- 13.22 Установка и настройка MongoDB
- 13.23 Установка и настройка Cassandra
- 13.24 Установка и настройка Memcached
- 13.25 Установка и настройка OpenStack
- 13.26 Установка и настройка Ceph
- 13.27 Установка и настройка GlusterFS
- 13.28 Установка и настройка Nextcloud
- 13.29 Установка и настройка Mattermost
- 13.30 Установка и настройка Elasticsearch Stack (ELK Stack)
- 13.31 Установка и настройка Graylog
- 13.32 Установка и настройка Fluentd
- 13.33 Установка и настройка TimescaleDB
- 13.34 Установка и настройка InfluxDB
- 13.35 Установка и настройка Keycloak
- 13.36 Установка и настройка SonarQube
- 13.37 Установка и настройка Nexus Repository
- 13.38 Установка и настройка Rundeck
- 13.39 Установка и настройка AWX/Ansible Tower
- 13.40 Установка и настройка Syncthing
- 13.41 Установка и настройка Bacula
- 13.42 Установка и настройка Netdata
- 13.43 Установка и настройка OpenNMS
- 13.44 Установка и настройка Cacti
- 13.45 Установка и настройка Observium
- 13.46 Настройка SQUID для обхода ограничений для западных репозиториев
-
- 14.1 Утилита passwd в НАЙС ОС
- 14.2 Источники программ (репозитории) НАЙС ОС
- 14.3 Назначение RPM в НАЙС ОС
- 14.4 Модули ядра в НАЙС ОС
- 14.5 zswap в НАЙС ОС
- 14.6 Dracut - ПО для создания загрузочного образа (initramfs) в НАЙС ОС
- 14.7 Общие рекомендации соблюдения безопасности в НАЙС ОС
- 14.8 Протокол Secure Shell в рамках безопасности в НАЙС ОС
- 14.9 Аудит в НАЙС ОС
- 14.10 Права доступа к файлам и каталогам в контексте безопасности в НАЙС ОС
- 14.11 Использование ClamAV для обеспечения безопасности в НАЙС ОС
- 14.12 Использование ClamAV для обеспечения безопасности в НАЙС ОС
- 14.13 Использование списков контроля доступа (ACL) для обеспечения безопасности в НАЙС ОС
- 14.14 Использование SELinux для обеспечения безопасности в НАЙС ОС
- 14.15 Использование Pluggable Authentication Modules (PAM) для обеспечения безопасности в НАЙС ОС
- 14.16 Использование Rsyslog для обеспечения безопасности в НАЙС ОС
- 14.17 Использование Afick для обеспечения безопасности в НАЙС ОС
- 14.18 Использование AMTU для обеспечения безопасности в НАЙС ОС
- 14.19 Использование ntpdate для обеспечения безопасности в НАЙС ОС
- 14.20 Настройка отказоустойчивого кластера в контексте безопасности в НАЙС ОС
- 14.21 Изменение приоритета процесса в контексте безопасности в НАЙС ОС
- 14.22 Управление дисковыми квотами в контексте безопасности в НАЙС ОС
- 14.23 Ограничение ресурсов пользователя в контексте безопасности в НАЙС ОС
- 14.24 Шифрование дисков и отдельных файлов в контексте безопасности в НАЙС ОС
- 14.25 Использование Polkit в контексте безопасности в НАЙС ОС
- 14.26 Модуль PAM_USB - двухфакторная аутентификация в контексте безопасности в НАЙС ОС
- 14.27 Использование ГОСТ в OpenSSL в контексте безопасности в НАЙС ОС
- 14.28 Расчет контрольных сумм файлов в контексте безопасности в НАЙС ОС
- 14.29 Защитное преобразование файлов и каталогов по ГОСТ Р 34.12–2015
- 14.30 Задание хешей паролей в соответствии с ГОСТ Р 34.11-2012
- 14.31 Использование OpenSCAP в контексте безопасности в НАЙС ОС
- 14.32 Локальная аутентификация с использованием Рутокен MFA
- 14.33 Проверка файловой системы на наличие ошибок в НАЙС ОС
- 14.34 Восстановление загрузчика GRUB2 в НАЙС ОС
- 14.35 Тестирование оперативной памяти в НАЙС ОС
- 14.36 Рекомендации по анализу журналов и дампов в НАЙС ОС
- 14.37 Модули ядра в НАЙС ОС
-
- 15.1 Введение в виртуализацию и контейнеризацию
- 15.2 Установка и настройка KVM
- 15.3 Управление виртуальными машинами с помощью libvirt
- 15.4 Введение в Docker
- 15.5 Использование Kubernetes для оркестрации
- 15.6 Настройка и управление LXC/LXD
- 15.7 Виртуализация с использованием OpenVZ
- 15.8 Настройка и управление Vagrant
- 15.9 Виртуализация с использованием Xen
- 15.10 Продвинутые возможности Docker
- 15.11 Инструменты мониторинга и управления виртуализацией
- 15.12 Сравнение различных технологий виртуализации и контейнеризации
- 15.13 Лучшие практики и сценарии использования виртуализации и контейнеризации
Введение в Docker
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеризация позволяет изолировать приложения и их зависимости, обеспечивая консистентность и портативность при развертывании. В этой документации мы рассмотрим основные концепции Docker, процесс установки Docker на НАЙС ОС, создание и управление Docker-образами, а также основные команды Docker CLI. В примерах будет использоваться пакетный менеджер tdnf, который является стандартным для НАЙС ОС.
Основные концепции Docker: образы, контейнеры, Dockerfile
Прежде чем погрузиться в детали установки и использования Docker, важно понять основные концепции, на которых основана эта платформа.
Образы Docker
Docker-образ — это шаблон, содержащий все необходимое для запуска приложения: код, библиотеки, зависимости, конфигурационные файлы и т. д. Образы являются неизменяемыми и состоят из нескольких слоев, каждый из которых представляет собой изменение по сравнению с предыдущим слоем. Образы можно создавать, распространять и использовать для создания контейнеров.
Контейнеры Docker
Контейнер — это экземпляр Docker-образа. Контейнеры изолированы друг от друга и от хостовой системы, но могут взаимодействовать через настроенные сети. Они обеспечивают консистентную среду выполнения, независимо от окружения, в котором они запускаются.
Dockerfile
Dockerfile — это файл конфигурации, содержащий инструкции для сборки Docker-образа. Он определяет, какие компоненты будут включены в образ и как их настроить. Используя Dockerfile, можно автоматизировать процесс создания образов, делая его воспроизводимым и управляемым.
Установка Docker на НАЙС ОС
Для установки Docker на НАЙС ОС используйте пакетный менеджер tdnf:
sudo tdnf install docker
sudo systemctl enable --now docker
Создание и управление Docker-образами
Создание и управление Docker-образами является ключевым аспектом использования Docker. Рассмотрим, как создать Dockerfile, собрать образ и управлять им.
Создание Dockerfile
Для создания Docker-образа необходимо создать Dockerfile. Пример простого Dockerfile для Node.js приложения:
# Используем базовый образ Node.js
FROM node:14
# Создаем директорию для приложения
WORKDIR /usr/src/app
# Копируем package.json и устанавливаем зависимости
COPY package*.json ./
RUN npm install
# Копируем исходный код приложения
COPY . .
# Определяем команду для запуска приложения
CMD ["node", "app.js"]
# Указываем порт, который будет использовать приложение
EXPOSE 8080
Сборка Docker-образа
После создания Dockerfile можно собрать образ с помощью команды docker build
:
docker build -t mynodeapp .
Эта команда создаст образ с именем mynodeapp
, используя инструкции из Dockerfile в текущем каталоге.
Запуск Docker-контейнера
Для запуска контейнера из созданного образа используйте команду docker run
:
docker run -d -p 8080:8080 mynodeapp
Эта команда запустит контейнер в фоновом режиме, пробросив порт 8080 на хосте к порту 8080 в контейнере.
Управление Docker-образами
Основные команды для управления Docker-образами включают:
docker images
: отображает список доступных образов.docker rmi
: удаляет указанный образ.docker tag
: присваивает новый тег существующему образу.docker push
: загружает образ в Docker Registry.
Основные команды Docker CLI
Docker CLI предоставляет множество команд для управления образами, контейнерами, сетями и т. д. Рассмотрим основные команды Docker CLI, используемые в повседневной работе.
Работа с контейнерами
docker ps
: отображает список запущенных контейнеров.docker ps -a
: отображает список всех контейнеров.docker start
: запускает остановленный контейнер.docker stop
: останавливает запущенный контейнер.docker restart
: перезапускает контейнер.docker rm
: удаляет контейнер.docker logs
: отображает логи контейнера.docker exec
: выполняет команду внутри запущенного контейнера.
Работа с образами
docker build
: собирает образ из Dockerfile.docker pull
: загружает образ из Docker Registry.docker push
: загружает образ в Docker Registry.docker images
: отображает список доступных образов.docker rmi
: удаляет указанный образ.
Работа с сетями
docker network ls
: отображает список сетей Docker.docker network create
: создает новую сеть.docker network connect
: подключает контейнер к сети.docker network disconnect
: отключает контейнер от сети.docker network rm
: удаляет сеть.
Работа с хранилищами (Volumes)
docker volume ls
: отображает список томов.docker volume create
: создает новый том.docker volume rm
: удаляет том.docker run -v
: монтирует том к контейнеру при его запуске.
Docker Compose
Docker Compose — это инструмент для определения и запуска многоконтейнерных Docker-приложений. Он использует файл docker-compose.yml
для описания конфигурации приложения и позволяет запускать его с помощью одной команды.
Создание файла docker-compose.yml
Пример файла docker-compose.yml
для многоконтейнерного приложения:
version: '3'
services:
web:
image: mynodeapp
ports:
- "8080:8080"
volumes:
- .:/usr/src/app
redis:
image: "redis:alpine"
Запуск приложения с Docker Compose
Для запуска приложения используйте команду docker-compose up
:
docker-compose up -d
Эта команда запустит все службы, определенные в файле docker-compose.yml
, в фоновом режиме.
Основные команды Docker Compose
docker-compose up
: запускает приложение.docker-compose down
: останавливает и удаляет контейнеры, сети и тома, созданные с помощьюup
.docker-compose ps
: отображает статус контейнеров.docker-compose logs
: отображает логи всех контейнеров.docker-compose exec
: выполняет команду внутри запущенного контейнера.docker-compose build
: собирает образы, определенные в файлеdocker-compose.yml
.docker-compose pull
: загружает образы из Docker Registry.docker-compose push
: загружает образы в Docker Registry.
Docker Swarm
Docker Swarm — это нативный оркестратор контейнеров для Docker, позволяющий управлять кластером Docker-движков как единой сущностью. Он обеспечивает балансировку нагрузки, автоматическое масштабирование и управление состоянием контейнеров.
Настройка Docker Swarm
Для инициализации Docker Swarm выполните команду docker swarm init
:
docker swarm init --advertise-addr
Эта команда инициализирует текущий Docker-движок как менеджер Swarm-кластера. Для добавления воркеров и менеджеров в кластер используйте команды, предоставленные Docker после инициализации.
Управление службами в Docker Swarm
docker service create
: создает новую службу.docker service ls
: отображает список служб.docker service ps
: отображает задачи, связанные со службой.docker service scale
: масштабирует службу.docker service rm
: удаляет службу.
Расширенные возможности Docker
Docker предоставляет множество расширенных возможностей для управления контейнерами и интеграции с другими инструментами и сервисами.
Секреты и конфигурации
Docker позволяет безопасно управлять секретами и конфигурациями, такими как пароли, сертификаты и ключи.
Создание и использование секретов
Для создания секрета используйте команду docker secret create
:
echo "my_secret_password" | docker secret create my_secret -
Для использования секрета в службе добавьте его в конфигурацию службы:
docker service create --name my_service --secret my_secret my_image
Интеграция с CI/CD
Docker интегрируется с различными CI/CD инструментами, такими как Jenkins, GitLab CI и другие, обеспечивая автоматизацию сборки, тестирования и развертывания приложений.
Пример использования Docker в Jenkins
Добавьте следующий шаг в ваш Jenkins Pipeline для сборки Docker-образа:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
docker.build('my_image')
}
}
}
}
}
Docker и Kubernetes
Docker часто используется в сочетании с Kubernetes для оркестрации контейнеров в масштабируемых и отказоустойчивых кластерах. Kubernetes управляет развертыванием, масштабированием и обновлением контейнеризованных приложений.
Пример манифеста Kubernetes для развертывания Docker-контейнера
Создайте файл deployment.yaml
с содержимым:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my_image
ports:
- containerPort: 8080
Для развертывания используйте команду kubectl apply
:
kubectl apply -f deployment.yaml
Docker предоставляет мощные инструменты для контейнеризации приложений, обеспечивая их консистентность, портативность и легкость развертывания. Изучение основных концепций Docker, установка и настройка Docker на НАЙС ОС, а также создание и управление Docker-образами и контейнерами помогут вам эффективно использовать эту технологию в вашей ИТ-инфраструктуре.