В этом упражнении вы создадите контейнер, который обращается к веб-контенту в постоянном хранилище, предоставляемом хостом контейнеров.
Результаты
Вы сможете развернуть контейнер с постоянным хранилищем.
Войдите на машину workstation как пользователь student с паролем student.
workstation
student
На машине workstation выполните команду lab containers-storage start. Эта команда запускает подготовительный сценарий, который проверяет доступность машины servera в сети. Он также устанавливает на servera контейнерные утилиты.
lab containers-storage start
servera
[student@workstation ~]$ lab containers-storage start
[student@workstation ~]$
Процедура 13.4. Инструкции
С помощью команды ssh войдите на машину servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.
ssh
[student@workstation ~]$ ssh student@servera ...output omitted... [student@servera ~]$
ssh student@servera
[student@servera ~]$
Создайте каталог /home/student/webcontent/html/, а затем создайте тестовую страницу index.html. Вы будете использовать этот каталог в качестве постоянного хранилища при развертывании контейнера веб-сервера.
/home/student/webcontent/html/
index.html
Создайте каталог ~/webcontent/html/.
~/webcontent/html/
[student@servera ~]$ mkdir -p ~/webcontent/html/ [student@servera ~]$
mkdir -p ~/webcontent/html/
Создайте файл index.html и добавьте некоторое содержимое.
[student@servera ~]$ echo "Hello World" > ~/webcontent/html/index.html [student@servera ~]$
echo "Hello World" > ~/webcontent/html/index.html
Убедитесь, что у всех есть доступ к каталогу и файлу index.html. Контейнер использует непривилегированного пользователя, который может читать файл index.html.
[student@servera ~]$ ls -ld webcontent/html/ drwxrwxr-x. 2 student student 24 Aug 28 04:56 webcontent/html/ [student@servera ~]$ ls -l webcontent/html/index.html -rw-rw-r--. 1 student student 12 Aug 28 04:56 webcontent/html/index.html
ls -ld webcontent/html/
r-x
ls -l webcontent/html/index.html
r--
Создайте экземпляр контейнера HTTP-сервера Apache с постоянным хранилищем.
Войдите в реестр registry.lab.example.com как пользователь admin с паролем redhat321.
registry.lab.example.com
admin
redhat321
[student@servera ~]$ podman login registry.lab.example.com Username: admin Password: redhat321 Login Succeeded!
podman login registry.lab.example.com
Username:
Password:
Создайте экземпляр отсоединенного контейнера с именем myweb. Перенаправьте порт 8080 на локальном хосте на порт 8080 контейнера. Смонтируйте каталог ~/webcontent с хоста в каталог /var/www в контейнере. Добавьте суффикс :Z к опции монтирования тома, чтобы указать команде podman повторно создать метки для каталога и его содержимого. Используйте образ registry.lab.example.com/rhel8/httpd-24:1-98. Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:
myweb
~/webcontent
/var/www
:Z
podman
registry.lab.example.com/rhel8/httpd-24:1-98
podman run
[student@servera ~]$ podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-98 ...output omitted...
podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-98
Выполните команду podman ps, чтобы убедиться, что контейнер работает, а затем используйте команду curl для доступа к веб-контенту на порту 8080.
podman ps
curl
[student@servera ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2f4844b376b7 registry.lab.example.com/rhel8/httpd-24:1-98 /usr/bin/run-http... About a minute ago Up About a minute ago 0.0.0.0:8080->8080/tcp myweb [student@servera ~]$ curl http://localhost:8080/ Hello World
curl http://localhost:8080/
На предыдущем шаге вы использовали тег 1-98, чтобы выбрать определенную версию образа httpd-24. В реестре учебной аудитории есть более поздняя версия этого образа. Используйте команду skopeo inspect, чтобы отобразить сведения об образе registry.lab.example.com/rhel8/httpd-24 и получить тег для этой версии. Следующая команда skopeo inspect очень длинная, и ее необходимо вводить в одной строке:
1-98
httpd-24
skopeo inspect
registry.lab.example.com/rhel8/httpd-24
[student@servera ~]$ skopeo inspect docker://registry.lab.example.com/rhel8/httpd-24 { "Name": "registry.lab.example.com/rhel8/httpd-24", "Digest": "sha256:bafa...a12a", "RepoTags": [ "1-98", "1-104", "1-105", "latest" ], ...output omitted...
skopeo inspect docker://registry.lab.example.com/rhel8/httpd-24
"RepoTags"
"1-105"
В разделе RepoTags обратите внимание на наличие более поздней версии с тегом 1-105.
RepoTags
1-105
Остановите и удалите контейнер myweb, а затем запустите новый контейнер, используя тег образа 1-105. Убедитесь, что веб-контент в постоянном хранилище не изменился.
Остановите и удалите контейнер.
[student@servera user]$ podman stop myweb 2f4844b376b78f8f7021fe3a4c077ae52fdc1caa6d877e84106ab783d78e1e1a [student@servera user]$ podman rm myweb 2f4844b376b78f8f7021fe3a4c077ae52fdc1caa6d877e84106ab783d78e1e1a
[student@servera user]$
podman stop myweb
podman rm myweb
Повторно выполните команду podman run, которая использовалась на предыдущем шаге, чтобы запустить контейнер myweb, но замените тег образа 1-98 на 1-105. Следующая команда podman run очень длинная, и ее необходимо вводить в одной строке:
[student@servera ~]$ podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-105 ...output omitted...
podman run -d --name myweb -p 8080:8080 -v ~/webcontent:/var/www:Z registry.lab.example.com/rhel8/httpd-24:1-105
Выполните команду podman ps, чтобы убедиться, что контейнер запущен. Используйте команду curl, чтобы убедиться, что данные постоянного тома сохранились, хотя был запущен новый контейнер.
[student@servera ~]$ podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a648c286c653 registry.lab.example.com/rhel8/httpd-24:1-105 /usr/bin/run-http... About a minute ago Up About a minute ago 0.0.0.0:8080->8080/tcp myweb [student@servera ~]$ curl http://localhost:8080/ Hello World
Выйдите с servera.
[student@servera ~]$ exit logout Connection to servera closed. [student@workstation ~]$
exit
Конец
На машине workstation запустите сценарий lab containers-storage finish, чтобы закончить это упражнение.
lab containers-storage finish
[student@workstation ~]$ lab containers-storage finish
Упражнение завершено.