From ae0024be9bb8e066e1bd37c4ecce49464e80522b Mon Sep 17 00:00:00 2001 From: artemdolgiy Date: Mon, 18 Oct 2021 10:10:55 +0300 Subject: [PATCH] add 16 --- rh199_(rapid)/labs.md | 23 +++++- rh199_(rapid)/labs_solutions.md | 130 +++++++++++++++++++++++++++++++- 2 files changed, 150 insertions(+), 3 deletions(-) diff --git a/rh199_(rapid)/labs.md b/rh199_(rapid)/labs.md index d65d4aa..0c610cf 100644 --- a/rh199_(rapid)/labs.md +++ b/rh199_(rapid)/labs.md @@ -18,7 +18,7 @@ 13. [Планирование будущих задач. - Лабы нет.](#chapter13) 14. [Доступ к NFS (Network-Attached Storage).](#chapter14) 15. [Управление сетевой безопасностью.](#chapter15) -16. [](#chapter16) +16. [Запуск контейнеров.](#chapter16) 17. [](#chapter17) *** @@ -225,9 +225,28 @@ DNS | 192.168.10.9 **Запуск контейнеров.** Для выполнения этой лабораторной работы необходимо создать учётную запись на https://quay.io/. -https://quay.io/ - реестр контейнеров (аналог https://hub.docker.com/) +https://quay.io/ - реестр образов (аналог https://hub.docker.com/) +1. На server1 установить средства управления контейнерами. +2. Реестр образов https://quay.io/ содержит образ `quay.io/bitnami/mariadb`, необходимо переключиться на пользователя `poduser` используя пароль `redhat`, посмотреть доступные версии БД в образе для загрузки и скачать версию 10.6. +3. На server1 с учетной записью `poduser` создать папку `/home/poduser/db_data`. Подготовить директорию, чтобы контейнеры имели доступ чтения/записи в ней. Директория будет использована в качестве постоянного хранилища. +4. На server1 с учетной записью `poduser` создать контейнер содержащий образ MariaDB с именем `inventorydb`. Необходимо выполнить трансляцию внутреннего порта в контейнере 3306 на внешний порт server1 13306. Подключить директорию `/home/poduser/db_data` в качестве хранилища БД в контейнере директории `/var/lib/mysql/data`. Кроме этого необходимо объявить следующие переменные в контейнере: + Переменная | Значение +--------------------- | ---------- +MARIADB_USER | operator1 +MARIADB_PASSWORD | redhat +MARIADB_DATABASE | inventory +MARIADB_ROOT_PASSWORD | redhat + +После запуска контейнера необходимо убедиться в наличии доступа к БД в контейнере: +- подключиться к контейнеру; +- подключиться к консоли управления БД (команда - `mysql -u root -p`, ввести пароль `redhat`); +- убедиться в том, что БД с именем inventory присутствует в списке доступных (команда - SHOW DATABASES;); +- выйти из консоли управления БД (команда - `exit`); +- отключиться от контейнера. + +5. Настроить systemd на автоматический запуск контейнера `inventorydb` при загрузке server1. [вверх](#top) diff --git a/rh199_(rapid)/labs_solutions.md b/rh199_(rapid)/labs_solutions.md index 3e86b9d..61687f9 100644 --- a/rh199_(rapid)/labs_solutions.md +++ b/rh199_(rapid)/labs_solutions.md @@ -21,7 +21,7 @@ 13. [Планирование будущих задач. - Лабы нет.](#chapter13) 14. [Доступ к NFS (Network-Attached Storage).](#chapter14) 15. [Управление сетевой безопасностью.](#chapter15) -16. [](#chapter16) +16. [Запуск контейнеров.](#chapter16) 17. [](#chapter17) *** @@ -1162,3 +1162,131 @@ Welcome to VHOST on SERVER1 [вверх](#top) *** + +###### Chapter16 +**Запуск контейнеров.** + +Для выполнения этой лабораторной работы необходимо создать учётную запись на https://quay.io/. +https://quay.io/ - реестр образов (аналог https://hub.docker.com/) + +1. На server1 установить средства управления контейнерами. +```bash +[student@server1 ~]$ sudo yum module install container-tools -y +``` + +2. Реестр образов https://quay.io/ содержит образ `quay.io/bitnami/mariadb`, необходимо авторизоваться с учётной записью пользователя `poduser` используя пароль `redhat`, посмотреть доступные версии БД в образе для загрузки и скачать версию 10.6. +*Важно именно залогиниться как poduser, а не переключаться на него* +```bash +[poduser@server1 ~]$ podman login quay.io +Username: adolgiy +Password: +Login Succeeded! +``` +*посмотрим доступные версии образов MariaDB (получение информации может занимать более 1 минуты)* +```bash +[poduser@server1 ~]$ skopeo inspect docker://quay.io/bitnami/mariadb + +``` +*результатом будет огромный вывод с большим перечнем доступных версий образов* +*скачаем необходимую версию - 10.6* +```bash +[poduser@server1 ~]$ podman pull quay.io/bitnami/mariadb:10.6 +Trying to pull quay.io/bitnami/mariadb:10.6... + +``` + +3. На server1 с учетной записью `poduser` создать папку `/home/poduser/db_data`. Подготовить директорию, чтобы контейнеры имели доступ чтения/записи в ней. Директория будет использована в качестве постоянного хранилища. +```bash +[poduser@server1 ~]$ mkdir /home/poduser/db_data +[poduser@server1 ~]$ chmod 777 /home/poduser/db_data/ +``` + +4. На server1 с учетной записью `poduser` создать контейнер содержащий образ MariaDB с именем `inventorydb`. Необходимо выполнить трансляцию внутреннего порта в контейнере 3306 на внешний порт server1 13306. Подключить директорию `/home/poduser/db_data` в качестве хранилища БД в контейнере директории `/var/lib/mysql/data`. Кроме этого необходимо объявить следующие переменные в контейнере: + + Переменная | Значение +--------------------- | ---------- +MARIADB_USER | operator1 +MARIADB_PASSWORD | redhat +MARIADB_DATABASE | inventory +MARIADB_ROOT_PASSWORD | redhat + +После запуска контейнера необходимо убедиться в наличии доступа к БД в контейнере: +- подключиться к контейнеру; +- подключиться к консоли управления БД (команда - `mysql -u root -p`, ввести пароль `redhat`); +- убедиться в том, что БД с именем inventory присутствует в списке доступных (команда - SHOW DATABASES;); +- выйти из консоли управления БД (команда - `exit`); +- отключиться от контейнера. +*создадим контейнер - с учётом проброса порта 13306:3306, подключения хранилища и необходимые переменные* +```bash +[poduser@server1 ~]$ podman run -d --name inventorydb -p 13306:3306 -v /home/poduser/db_data:/var/lib/mysql/data -e MARIADB_USER=operator1 -e MARIADB_PASSWORD=redhat -e MARIADB_DATABASE=inventory -e MARIADB_ROOT_PASSWORD=redhat quay.io/bitnami/mariadb:10.6 +98e07615544e5f899b9534fbaf84507c71beb87b27b116c1ca1a632f0b767a2c +[poduser@server1 ~]$ +``` +*проверим, что контейнер успешно запустился и есть доступ к созданной БД inventory* +```bash +[poduser@server1 user]$ podman ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +131c9fd936ba quay.io/bitnami/mariadb:10.6 /opt/bitnami/scri... About a minute ago Up About a minute ago 0.0.0.0:13306->3306/tcp inventorydb +``` +```bash +[poduser@server1 user]$ podman exec -it inventorydb bash +1001@131c9fd936ba:/$ mysql -u root -p +Enter password: +Welcome to the MariaDB monitor. Commands end with ; or \g. +Your MariaDB connection id is 3 +Server version: 10.6.4-MariaDB Source distribution + +Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +MariaDB [(none)]> SHOW DATABASES; ++--------------------+ +| Database | ++--------------------+ +| information_schema | +| inventory | +| mysql | +| performance_schema | +| sys | +| test | ++--------------------+ +6 rows in set (0.002 sec) + +MariaDB [(none)]> exit +Bye +1001@131c9fd936ba:/$ exit +[poduser@server1 user]$ + +``` + +5. Настроить systemd на автоматический запуск контейнера `inventorydb` при загрузке server1. +*создадим папку для пользовательского сервиса systemd, перейдём в эту папку и сгенерируем сервис на основе запущенного контейнера* +```bash +[poduser@server1 ~]$ mkdir -p ~/.config/systemd/user +[poduser@server1 ~]$ cd ~/.config/systemd/user/ +[poduser@server1 user]$ podman generate systemd --name inventorydb --files --new +/home/poduser/.config/systemd/user/container-inventorydb.service + +``` +*после того, как сервис будет сгенерирован, необходимо остановить и удалить запущенный контейнер, иначе сервис не сможет стартовать, т.к. имена запущенного вручную и создаваемого с помощью systemd контейнеров совпадают* +```bash +[poduser@server1 user]$ podman stop inventorydb +98e07615544e5f899b9534fbaf84507c71beb87b27b116c1ca1a632f0b767a2c +[poduser@server1 user]$ podman rm inventorydb +98e07615544e5f899b9534fbaf84507c71beb87b27b116c1ca1a632f0b767a2c +``` +*активируем и запустим созданный пользовательский сервис systemd* +```bash +[poduser@server1 user]$ systemctl --user daemon-reload +[poduser@server1 user]$ systemctl --user enable --now container-inventorydb.service +Created symlink /home/poduser/.config/systemd/user/default.target.wants/container-inventorydb.service → /home/poduser/.config/systemd/user/container-inventorydb.service. +``` +*необходимо обеспечить автозагрузку пользовательского сервиса без необходимости авторизации в системе самого пользователя* +```bash +[poduser@server1 user]$ loginctl enable-linger +``` + +[вверх](#top) + +***