Red Hat System Administration II 8.2

Упражнение под руководством преподавателя: Расширенное управление контейнерами

В этом упражнении вы будете использовать утилиту podman для управления контейнерами, запущенными на сервере.

Результаты

Вы сможете создавать контейнеры и управлять ими.

На машине workstation выполните команду lab containers-advanced start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Она также устанавливает клиент MariaDB на машине servera, проверяет и настраивает реестр контейнеров и обеспечивает хранение в нем образов контейнеров, используемых для этого упражнения.

[student@workstation ~]$ lab containers-advanced start

Процедура 13.3. Инструкции

  1. С помощью команды ssh войдите на машину servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
  2. Войдите в реестр контейнеров с помощью команды podman login.

    [student@servera ~]$ podman login registry.lab.example.com
    Username: admin
    Password: redhat321
    Login Succeeded!
  3. С помощью команды podman run создайте отсоединенный контейнер базы данных MariaDB на основе характеристик, указанных на следующих промежуточных шагах. Убедитесь, что контейнер запущен и публикует нужные порты.

    Примечание

    Если вы запускаете контейнер с помощью команды podman run, но еще не извлекли указанный образ контейнера из реестра registry.lab.example.com, команда автоматически извлечет этот образ из реестра.

    1. Создайте отсоединенный контейнер с именем mydb, использующий образ контейнера registry.lab.example.com/rhel8/mariadb-103:1-102. Ваша команда должна публиковать порт 3306 контейнера по тому же номеру порта на хосте. Вам также необходимо объявить указанные ниже значения переменных, чтобы настроить для контейнера пользователя user1 (пароль redhat), задать для пароля root значение redhat и создать базу данных items.

      Переменная Значение
      MYSQL_USER user1
      MYSQL_PASSWORD redhat
      MYSQL_DATABASE items
      MYSQL_ROOT_PASSWORD redhat

      Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке: Для удобства вы можете скопировать и вставить следующую команду из файла /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 ~]$ 
      
    2. С помощью команды 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
      
  4. С помощью команды mysql подключитесь к базе данных MariaDB в контейнере mydb. Убедитесь, что база данных items существует, а затем выйдите из MariaDB и остановите контейнер mydb.

    1. Подключитесь к MariaDB как пользователь user1 с паролем redhat. Укажите порт 3306 и IP-адрес машины 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)]>
      
    2. Убедитесь, что база данных items существует, а затем выйдите из MariaDB.

      MariaDB [(none)]> show databases;
      +--------------------+
      | Database           |
      +--------------------+
      | information_schema |
      | items              |
      | test               |
      +--------------------+
      3 rows in set (0.001 sec)
      
      MariaDB [(none)]> exit
      Bye
      [student@servera ~]$
      
    3. Остановите контейнер mydb. Ваш идентификатор контейнера будет отличаться от следующего:

      [student@servera ~]$ podman stop mydb
      abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815
      
  5. Создайте контейнер, в котором работает HTTP-сервер Apache и который также запускает интерактивную оболочку Bash в контейнере. Выполните команду, используя командную оболочку контейнера, а затем выйдите из контейнера и убедитесь, что он больше не работает.

    1. Создайте контейнер с именем myweb, в котором работает HTTP-сервер Apache версии 2.4. Кроме того, он должен запускать интерактивную командную оболочку в контейнере. Используйте образ контейнера registry.lab.example.com/rhel8/httpd-24:1-105. Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:

      [student@servera ~]$ podman run --name myweb -it registry.lab.example.com/rhel8/httpd-24:1-105 /bin/bash
      ...output omitted...
      bash-4.4$ 
      
    2. В интерактивной командной оболочке контейнера выполните команду 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 ~]$ 
      
    3. Убедитесь, что контейнер 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
      
  6. Создайте отсоединенный контейнер веб-сервера HTTPD с именем mysecondweb. Подключитесь к контейнеру по его имени, а затем отобразите имя и версию ядра. Подключитесь к контейнеру второй раз, но укажите опцию -l, чтобы использовать идентификатор контейнера из предыдущей команды и отобразить среднее значение нагрузки на систему. Оставьте контейнер работать.

    1. Создайте отсоединенный контейнер с именем mysecondweb. Ваш вывод будет отличаться от примера в этом упражнении.

      [student@servera ~]$ podman run --name mysecondweb -d registry.lab.example.com/rhel8/httpd-24:1-105
      9e8f14e74fd4d82d95a765b8aaaeb1e93b9fe63c54c2cc805509017315460028
      
    2. С помощью команды podman exec подключитесь к контейнеру mysecondweb, чтобы отобразить имя и версию ядра Linux.

      [student@servera ~]$ podman exec mysecondweb uname -sr
      Linux 4.18.0-193.el8.x86_64
      
    3. Снова выполните команду 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
      
    4. Оставьте контейнер mysecondweb работать.

  7. Создайте контейнер с именем myquickweb, который отображает содержимое файла /etc/redhat-release, а затем автоматически завершает работу и удаляется. Убедитесь, что контейнер удален.

    1. Создайте контейнер.

      Следующая команда 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)
      
    2. С помощью команды podman ps -a убедитесь, что контейнер myquickweb удален. Контейнер myquickweb не должен быть указан в выводе команды podman ps -a.

      [student@servera ~]$ podman ps -a | grep myquickweb
      [student@servera ~]$
      
  8. Выполните массовые операции с существующими контейнерами, используя команду podman.

    • Отобразите список всех запущенных и остановленных контейнеров.

    • Убедитесь, что все существующие контейнеры остановлены.

    • Удалите все контейнеры.

    • Убедитесь, что все контейнеры удалены.

    1. Отобразите список всех запущенных и остановленных контейнеров. Вывод в вашей системе может быть другим.

      [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
      
    2. Остановите все контейнеры.

      [student@servera ~]$ podman stop -a
      6d95bd8559de81486b0876663e72260a8108d83aef5c5d660cb8f133f439c025
      abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815
      9e8f14e74fd4d82d95a765b8aaaeb1e93b9fe63c54c2cc805509017315460028
      
    3. Удалите все контейнеры.

      [student@servera ~]$ podman rm -a
      6d95bd8559de81486b0876663e72260a8108d83aef5c5d660cb8f133f439c025
      9e8f14e74fd4d82d95a765b8aaaeb1e93b9fe63c54c2cc805509017315460028
      abcb42ef2ff1b85a50e3cd9bc15877ef823979c8166d0076ce5ebc5ea19c0815
      
    4. Убедитесь, что все контейнеры удалены.

      [student@servera ~]$ podman ps -a
      CONTAINER ID  IMAGE  COMMAND  CREATED  STATUS  PORTS  NAMES
      [student@servera ~]$
      
  9. Выйдите с servera.

    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$ 
    

Конец

На машине workstation запустите сценарий lab containers-advanced finish, чтобы закончить это упражнение.

[student@workstation ~]$ lab containers-advanced finish

Упражнение завершено.