В этом упражнении вы будете использовать утилиту podman для управления контейнерами, запущенными на сервере.
Результаты
Вы сможете создавать контейнеры и управлять ими.
На машине workstation выполните команду lab containers-advanced start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Она также устанавливает клиент MariaDB на машине servera, проверяет и настраивает реестр контейнеров и обеспечивает хранение в нем образов контейнеров, используемых для этого упражнения.
workstation
lab containers-advanced start
servera
[student@workstation ~]$ lab containers-advanced start
[student@workstation ~]$
Процедура 13.3. Инструкции
С помощью команды ssh войдите на машину servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.
ssh
student
[student@workstation ~]$ ssh student@servera ...output omitted... [student@servera ~]$
ssh student@servera
[student@servera ~]$
Войдите в реестр контейнеров с помощью команды podman login.
podman login
[student@servera ~]$ podman login registry.lab.example.com Username: admin Password: redhat321 Login Succeeded!
podman login registry.lab.example.com
Username:
admin
Password:
redhat321
С помощью команды podman run создайте отсоединенный контейнер базы данных MariaDB на основе характеристик, указанных на следующих промежуточных шагах. Убедитесь, что контейнер запущен и публикует нужные порты.
podman run
Если вы запускаете контейнер с помощью команды podman run, но еще не извлекли указанный образ контейнера из реестра registry.lab.example.com, команда автоматически извлечет этот образ из реестра.
registry.lab.example.com
Создайте отсоединенный контейнер с именем mydb, использующий образ контейнера registry.lab.example.com/rhel8/mariadb-103:1-102. Ваша команда должна публиковать порт 3306 контейнера по тому же номеру порта на хосте. Вам также необходимо объявить указанные ниже значения переменных, чтобы настроить для контейнера пользователя user1 (пароль redhat), задать для пароля root значение redhat и создать базу данных items.
mydb
registry.lab.example.com/rhel8/mariadb-103:1-102
user1
redhat
root
items
MYSQL_USER
MYSQL_PASSWORD
MYSQL_DATABASE
MYSQL_ROOT_PASSWORD
Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке: Для удобства вы можете скопировать и вставить следующую команду из файла /tmp/containers-advanced/create-mydb.txt.
/tmp/containers-advanced/create-mydb.txt
[student@servera ~]$ podman run -d --name mydb -e MYSQL_USER=user1 -e MYSQL_PASSWORD=redhat -e MYSQL_DATABASE=items -e MYSQL_ROOT_PASSWORD=redhat -p 3306:3306 registry.lab.example.com/rhel8/mariadb-103:1-102 Trying to pull registry.lab.example.com/rhel8/mariadb-103:1-102... Getting image source signatures Copying blob 71391dc11a78 done Copying blob 77c58f19bd6e done Copying blob 67b9f0b530d9 done Copying blob 47db82df7f3f done Copying config 11a47e0fbe done Writing manifest to image destination Storing signatures abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815 [student@servera ~]$
podman run -d --name mydb -e MYSQL_USER=user1 -e MYSQL_PASSWORD=redhat -e MYSQL_DATABASE=items -e MYSQL_ROOT_PASSWORD=redhat -p 3306:3306 registry.lab.example.com/rhel8/mariadb-103:1-102
С помощью команды podman ps убедитесь, что контейнер запущен и публикует нужные порты.
podman ps
[student@servera ~]$ podman ps CONTAINER ID IMAGE COMMAND abcb42ef2ff1 registry.lab.example.com/rhel8/mariadb-103:1-102 run-mysqld CREATED STATUS PORTS NAMES bout a minute ago Up About a minute ago 0.0.0.0:3306->3306/tcp mydb
0.0.0.0:3306->3306/tcp
С помощью команды mysql подключитесь к базе данных MariaDB в контейнере mydb. Убедитесь, что база данных items существует, а затем выйдите из MariaDB и остановите контейнер mydb.
mysql
Подключитесь к MariaDB как пользователь user1 с паролем redhat. Укажите порт 3306 и IP-адрес машины localhost, которая является хостом контейнеров (127.0.0.1).
localhost
127.0.0.1
[student@servera ~]$ mysql -u user1 -p --port=3306 --host=127.0.0.1 Enter password: redhat Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.3.17-MariaDB MariaDB Server 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)]>
mysql -u user1 -p --port=3306 --host=127.0.0.1
Enter password:
Убедитесь, что база данных items существует, а затем выйдите из MariaDB.
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | items | | test | +--------------------+ 3 rows in set (0.001 sec) MariaDB [(none)]> exit Bye [student@servera ~]$
MariaDB [(none)]>
show databases;
exit
Остановите контейнер mydb. Ваш идентификатор контейнера будет отличаться от следующего:
[student@servera ~]$ podman stop mydb abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815
podman stop mydb
Создайте контейнер, в котором работает HTTP-сервер Apache и который также запускает интерактивную оболочку Bash в контейнере. Выполните команду, используя командную оболочку контейнера, а затем выйдите из контейнера и убедитесь, что он больше не работает.
Создайте контейнер с именем myweb, в котором работает HTTP-сервер Apache версии 2.4. Кроме того, он должен запускать интерактивную командную оболочку в контейнере. Используйте образ контейнера registry.lab.example.com/rhel8/httpd-24:1-105. Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:
myweb
registry.lab.example.com/rhel8/httpd-24:1-105
[student@servera ~]$ podman run --name myweb -it registry.lab.example.com/rhel8/httpd-24:1-105 /bin/bash ...output omitted... bash-4.4$
podman run --name myweb -it registry.lab.example.com/rhel8/httpd-24:1-105 /bin/bash
bash-4.4$
В интерактивной командной оболочке контейнера выполните команду cat /etc/redhat-release, чтобы отобразить содержимое файла /etc/redhat-release в контейнере. Выйдите из контейнера.
cat /etc/redhat-release
/etc/redhat-release
bash-4.4$ cat /etc/redhat-release Red Hat Enterprise Linux release 8.2 (Ootpa) bash-4.4$ exit exit [student@servera ~]$
Убедитесь, что контейнер myweb больше не работает.
[student@servera ~]$ podman ps -a CONTAINER ID IMAGE COMMAND 6d95bd8559de registry.lab.example.com/rhel8/httpd-24:1-105 /bin/bash abcb42ef2ff1 registry.lab.example.com/rhel8/mariadb-103:1-102 run-mysqld CREATED STATUS PORTS NAMES About a minute ago Exited (0) 25 seconds ago myweb 9 minutes ago Exited (0) 3 minutes ago 0.0.0.0:3306->3306/tcp mydb
podman ps -a
Exited (0) 25 seconds ago
Создайте отсоединенный контейнер веб-сервера HTTPD с именем mysecondweb. Подключитесь к контейнеру по его имени, а затем отобразите имя и версию ядра. Подключитесь к контейнеру второй раз, но укажите опцию -l, чтобы использовать идентификатор контейнера из предыдущей команды и отобразить среднее значение нагрузки на систему. Оставьте контейнер работать.
mysecondweb
-l
Создайте отсоединенный контейнер с именем mysecondweb. Ваш вывод будет отличаться от примера в этом упражнении.
[student@servera ~]$ podman run --name mysecondweb -d registry.lab.example.com/rhel8/httpd-24:1-105 9e8f14e74fd4d82d95a765b8aaaeb1e93b9fe63c54c2cc805509017315460028
podman run --name mysecondweb -d registry.lab.example.com/rhel8/httpd-24:1-105
С помощью команды podman exec подключитесь к контейнеру mysecondweb, чтобы отобразить имя и версию ядра Linux.
podman exec
[student@servera ~]$ podman exec mysecondweb uname -sr Linux 4.18.0-193.el8.x86_64
podman exec mysecondweb uname -sr
Снова выполните команду podman exec, но на этот раз укажите опцию -l, чтобы использовать идентификатор контейнера из предыдущей команды и отобразить среднее значение нагрузки на систему.
[student@servera ~]$ podman exec -l uptime 00:14:53 up 2:15, 0 users, load average: 0.08, 0.02, 0.01
podman exec -l uptime
Оставьте контейнер mysecondweb работать.
Создайте контейнер с именем myquickweb, который отображает содержимое файла /etc/redhat-release, а затем автоматически завершает работу и удаляется. Убедитесь, что контейнер удален.
myquickweb
Создайте контейнер.
Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:
[student@servera ~]$ podman run --name myquickweb --rm registry.lab.example.com/rhel8/httpd-24:1-105 cat /etc/redhat-release Red Hat Enterprise Linux release 8.2 (Ootpa)
podman run --name myquickweb --rm registry.lab.example.com/rhel8/httpd-24:1-105 cat /etc/redhat-release
С помощью команды podman ps -a убедитесь, что контейнер myquickweb удален. Контейнер myquickweb не должен быть указан в выводе команды podman ps -a.
[student@servera ~]$ podman ps -a | grep myquickweb [student@servera ~]$
podman ps -a | grep myquickweb
Выполните массовые операции с существующими контейнерами, используя команду podman.
podman
Отобразите список всех запущенных и остановленных контейнеров.
Убедитесь, что все существующие контейнеры остановлены.
Удалите все контейнеры.
Убедитесь, что все контейнеры удалены.
Отобразите список всех запущенных и остановленных контейнеров. Вывод в вашей системе может быть другим.
[student@servera ~]$ podman ps -a CONTAINER ID IMAGE COMMAND 9e8f14e74fd4 registry.lab.example.com/rhel8/httpd-24:1-105 /usr/bin/run-http 6d95bd8559de registry.lab.example.com/rhel8/httpd-24:1-105 /bin/bash abcb42ef2ff1 registry.lab.example.com/rhel8/mariadb-103:1-102 run-mysqld CREATED STATUS PORTS NAMES 5 minutes ago Up 5 minutes ago mysecondweb 18 minutes ago Exited (0) 17 minutes ago myweb 26 minutes ago Exited (0) 19 minutes ago 0.0.0.0:3306->3306/tcp mydb
Остановите все контейнеры.
[student@servera ~]$ podman stop -a 6d95bd8559de81486b0876663e72260a8108d83aef5c5d660cb8f133f439c025 abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815 9e8f14e74fd4d82d95a765b8aaaeb1e93b9fe63c54c2cc805509017315460028
podman stop -a
[student@servera ~]$ podman rm -a 6d95bd8559de81486b0876663e72260a8108d83aef5c5d660cb8f133f439c025 9e8f14e74fd4d82d95a765b8aaaeb1e93b9fe63c54c2cc805509017315460028 abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815
podman rm -a
[student@servera ~]$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [student@servera ~]$
Выйдите с servera.
[student@servera ~]$ exit logout Connection to servera closed. [student@workstation ~]$
Конец
На машине workstation запустите сценарий lab containers-advanced finish, чтобы закончить это упражнение.
lab containers-advanced finish
[student@workstation ~]$ lab containers-advanced finish
Упражнение завершено.