master
artemdolgiy 2021-10-18 10:10:55 +03:00
parent 1a9d33f3aa
commit ae0024be9b
2 changed files with 150 additions and 3 deletions

View File

@ -18,7 +18,7 @@
13. [Планирование будущих задач. - Лабы нет.](#chapter13) 13. [Планирование будущих задач. - Лабы нет.](#chapter13)
14. [Доступ к NFS (Network-Attached Storage).](#chapter14) 14. [Доступ к NFS (Network-Attached Storage).](#chapter14)
15. [Управление сетевой безопасностью.](#chapter15) 15. [Управление сетевой безопасностью.](#chapter15)
16. [](#chapter16) 16. [Запуск контейнеров.](#chapter16)
17. [](#chapter17) 17. [](#chapter17)
*** ***
@ -225,9 +225,28 @@ DNS | 192.168.10.9
**Запуск контейнеров.** **Запуск контейнеров.**
Для выполнения этой лабораторной работы необходимо создать учётную запись на https://quay.io/. Для выполнения этой лабораторной работы необходимо создать учётную запись на 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) [вверх](#top)

View File

@ -21,7 +21,7 @@
13. [Планирование будущих задач. - Лабы нет.](#chapter13) 13. [Планирование будущих задач. - Лабы нет.](#chapter13)
14. [Доступ к NFS (Network-Attached Storage).](#chapter14) 14. [Доступ к NFS (Network-Attached Storage).](#chapter14)
15. [Управление сетевой безопасностью.](#chapter15) 15. [Управление сетевой безопасностью.](#chapter15)
16. [](#chapter16) 16. [Запуск контейнеров.](#chapter16)
17. [](#chapter17) 17. [](#chapter17)
*** ***
@ -1162,3 +1162,131 @@ Welcome to VHOST on SERVER1
[вверх](#top) [вверх](#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)
***