У цьому документі пояснюються всі кроки, необхідні для створення та запуску примірника Nextcloud як контейнера Podman у Rocky Linux. Більше того, увесь цей посібник було протестовано на Raspberry Pi, тому він має бути сумісний із кожною архітектурою процесора, яку підтримує Rocky.
Процедура розбита на кілька кроків, кожен з яких має власні сценарії оболонки для автоматизації:
Встановлення пакетів podman і buildah для керування та створення наших контейнерів
Створення базового зображення, яке буде перепрофільовано для всіх контейнерів, які нам знадобляться
Створення образу контейнера db-tools із необхідними сценаріями оболонки для створення та запуску бази даних MariaDB
Створення та запуск MariaDB як контейнера Podman
Створення та запуск Nextcloud як контейнера Podman, використовуючи контейнер MariaDB Podman як серверну частину
Ви можете запустити більшість команд у посібнику вручну, але налаштування кількох сценаріїв bash значно полегшить ваше життя, особливо якщо ви хочете повторити ці кроки з іншими налаштуваннями, змінними чи назвами контейнерів.
Примітка для початківців:
Podman — це інструмент для керування контейнерами, зокрема контейнерами OCI (Open Containers Initiative). Його розроблено, щоб бути майже сумісним із Docker, оскільки більшість, якщо не всі, однакові команди працюватимуть для обох інструментів. Якщо «Docker» нічого не означає для вас або навіть якщо вам просто цікаво, ви можете прочитати більше про Podman і про те, як він працює на [власному веб-сайті Podman] (https://podman.io).
buildah — це інструмент, який створює зображення контейнерів Podman на основі "DockerFiles".
Цей посібник був розроблений як вправа, щоб допомогти людям ознайомитися з роботою контейнерів Podman загалом і зокрема на Rocky Linux.
У цьому посібнику ми працюємо як користувач root, але ви можете робити це в будь-якому домашньому каталозі. Перейдіть до кореневого каталогу, якщо ви там ще не перебуваєте:
cd/root
Тепер створіть усі каталоги, які вам знадобляться для різних збірок контейнерів:
mkdirbasedb-toolsmariadbnextcloud
Тепер змініть свій робочий каталог на папку для базового зображення:
cd/root/base
І створіть файл під назвою DockerFile. Так, Podman теж ними користується.
viDockerfile
Скопіюйте та вставте наступний текст у свій новий DockerFile.
FROM rockylinux/rockylinux:latest
ENV container docker
RUN yum -y install epel-release ; yum -y update
RUN dnf module enable -y php:7.4
RUN dnf install -y php
RUN yum install -y bzip2 unzip lsof wget traceroute nmap tcpdump bridge-utils ; yum -y update
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
Збережіть і закрийте попередній файл і створіть новий файл сценарію bash:
vibuild.sh
Потім вставте цей вміст:
#!/bin/bash
clear
buildah rmi `buildah images -q base` ;
buildah bud --no-cache -t base . ;
buildah images -a
Тепер зробіть свій скрипт збірки виконуваним за допомогою:
chmod+xbuild.sh
І запустіть його:
./build.sh
Зачекайте, поки це буде зроблено, і переходьте до наступного кроку.
Для цілей цього посібника ми зробимо налаштування бази даних максимально простими. Ви захочете відстежувати наступне та змінювати їх за потреби:
Ім'я бази даних: ncdb
Користувач бази даних: nc-user
Перехід бази даних: nc-pass
IP-адреса вашого сервера (ми будемо використовувати приклад IP-адреси нижче)
Спочатку перейдіть до папки, де ви будете створювати образ db-tools:
cd/root/db-tools
Тепер налаштуйте кілька сценаріїв bash, які використовуватимуться всередині образу контейнера Podman. Спочатку створіть сценарій, який автоматично створить вашу базу даних для вас:
vidb-create.sh
Тепер скопіюйте та вставте наступний код у цей файл за допомогою вашого улюбленого текстового редактора:
#!/bin/bash
mysql -h 10.1.1.160 -u root -p rockylinux << eof
create database ncdb;
grant all on ncdb.* to 'nc-user'@'10.1.1.160' identified by 'nc-pass';
flush privileges;
eof
Збережіть і закрийте, а потім повторіть кроки зі сценарієм для видалення баз даних за потреби:
vidb-drop.sh
Скопіюйте та вставте цей код у новий файл:
#!/bin/bash
mysql -h 10.1.1.160 -u root -p rockylinux << eof
drop database ncdb;
flush privileges;
eof
Нарешті, давайте налаштуємо DockerFile для образу db-tools:
viDockerfile
Копіювати і вставити:
FROM localhost/base
RUN yum -y install mysql
WORKDIR /root
COPY db-drop.sh db-drop.sh
COPY db-create.sh db-create.sh
І останнє, але не менш важливе, створіть сценарій bash для створення вашого зображення за командою:
Ви розумієте процес, чи не так? Настав час створити справжній контейнер бази даних. Змініть робочий каталог на /root/mariadb:
cd/root/mariadb
Створіть сценарій для (пере)складання контейнера, коли забажаєте:
vidb-init.sh
А ось код, який вам знадобиться:
Важливо
Для цілей цього посібника наступний сценарій видалить усі томи Podman. Якщо у вас є інші програми, що працюють із власними томами, змініть/закоментуйте рядок «podman volume rm --all»;
Тепер ми збираємося створити купу локальних папок на хост-сервері (не в жодному контейнері Podman), щоб ми могли перебудувати наші контейнери та бази даних, не боячись втратити всі наші файли:
Збережіть і закрийте це, зробіть усі свої сценарії виконуваними, а потім спочатку запустіть сценарій створення зображення:
chmod+x*.sh
./build.sh
Щоб переконатися, що всі ваші зображення створено правильно, запустіть podman images. Ви повинні побачити список, який виглядає так:
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/db-tools latest 8f7ccb04ecab 6 days ago 557 MB
localhost/base latest 03ae68ad2271 6 days ago 465 MB
docker.io/arm64v8/mariadb latest 89a126188478 11 days ago 405 MB
docker.io/arm64v8/nextcloud latest 579a44c1dc98 3 weeks ago 945 MB
Якщо все виглядає правильно, запустіть останній сценарій, щоб запустити Nextcloud:
./run.sh
Коли ви запускаєте podman ps -a, ви повинні побачити список запущених контейнерів, який виглядає так:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9518756a259a docker.io/arm64v8/mariadb:latest mariadbd 3 minutes ago Up 3 minutes ago mariadb
32534e5a5890 docker.io/arm64v8/nextcloud:latest apache2-foregroun... 12 seconds ago Up 12 seconds ago nextcloud
Звідти ви зможете вказати свій браузер на IP-адресу вашого сервера. Якщо ви дотримуєтесь і маєте ту саму IP-адресу, що й у нашому прикладі, ви можете замінити її тут (наприклад, http://your-server-ip) і побачити, як Nextcloud працює.
Очевидно, що цей посібник потрібно було б дещо змінити на робочому сервері, особливо якщо екземпляр Nextcloud призначений для загального доступу. Тим не менш, це повинно дати вам основне уявлення про те, як працює Podman, і як ви можете налаштувати його за допомогою сценаріїв і кількох базових зображень, щоб полегшити відновлення.
Author: Ananda Kammampati
Contributors: Ezequiel Bruni, Steven Spencer, Ganna Zhyrnova