Контейнеризация
a) Создание локального Docker Registry
-
Запустите локальный Docker Registry:
Для создания локального Docker Registry выполните следующую команду:
docker run -d -p 5000:5000 --restart=always --name registry registry:2-d— запуск контейнера в фоновом режиме.-p 5000:5000— проброс порта 5000 на хосте в порт 5000 контейнера.--restart=always— автоматический перезапуск контейнера после перезагрузки системы.--name registry— имя контейнера.registry:2— образ Docker Registry версии 2.
-
Проверка работы Registry:
Убедитесь, что Registry работает:
curl http://localhost:5000/v2/_catalogДолжен вернуться ответ:
{"repositories":[]}
b) Создание Dockerfile для приложения web
-
Создайте директорию для проекта:
mkdir ~/web-app cd ~/web-app -
Создайте файл
index.html:cat <<EOL > index.html <html> <body> <center><h1><b>WEB</b></h1></center> </body> </html> EOL -
Создайте Dockerfile:
cat <<EOL > Dockerfile FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html EXPOSE 80 EOLFROM nginx:alpine— использование базового образаnginx:alpine.COPY index.html /usr/share/nginx/html/index.html— копированиеindex.htmlв контейнер.EXPOSE 80— открытие порта 80.
-
Соберите образ:
Соберите образ с тегом
1.0:docker build -t localhost:5000/web:1.0 . -
Загрузите образ в локальный Registry:
docker push localhost:5000/web:1.0Проверьте, что образ загружен:
curl http://localhost:5000/v2/_catalogДолжен вернуться ответ:
{"repositories":["web"]}
c) Развертывание Docker контейнера
-
Запустите контейнер из локального Registry:
docker run -d --name web -p 80:80 --restart=always localhost:5000/web:1.0-d— запуск в фоновом режиме.--name web— имя контейнера.-p 80:80— проброс порта 80 на хосте в порт 80 контейнера.--restart=always— автоматический перезапуск контейнера после перезагрузки системы.localhost:5000/web:1.0— образ из локального Registry.
-
Проверка работы контейнера:
Откройте браузер и перейдите по адресу
http://localhost. Вы должны увидеть страницу с текстом "WEB". -
Проверка автозапуска:
Перезагрузите сервер и убедитесь, что контейнер запускается автоматически:
sudo rebootПосле перезагрузки проверьте статус контейнера:
docker psКонтейнер
webдолжен быть в списке запущенных.