Skip to main content

Контейнеризация

a) Создание локального Docker Registry

  1. Запустите локальный 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.
  2. Проверка работы Registry:

    Убедитесь, что Registry работает:

    curl http://localhost:5000/v2/_catalog
    

    Должен вернуться ответ:

    {"repositories":[]}
    

b) Создание Dockerfile для приложения web

  1. Создайте директорию для проекта:

    mkdir ~/web-app
    cd ~/web-app
    
  2. Создайте файл index.html:

    cat <<EOL > index.html
    <html>
        <body>
            <center><h1><b>WEB</b></h1></center>
        </body>
    </html>
    EOL
    
  3. Создайте Dockerfile:

    cat <<EOL > Dockerfile
    FROM nginx:alpine
    COPY index.html /usr/share/nginx/html/index.html
    EXPOSE 80
    EOL
    
    • FROM nginx:alpine — использование базового образа nginx:alpine.
    • COPY index.html /usr/share/nginx/html/index.html — копирование index.html в контейнер.
    • EXPOSE 80 — открытие порта 80.
  4. Соберите образ:

    Соберите образ с тегом 1.0:

    docker build -t localhost:5000/web:1.0 .
    
  5. Загрузите образ в локальный Registry:

    docker push localhost:5000/web:1.0
    

    Проверьте, что образ загружен:

    curl http://localhost:5000/v2/_catalog
    

    Должен вернуться ответ:

    {"repositories":["web"]}
    

c) Развертывание Docker контейнера

  1. Запустите контейнер из локального 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.
  2. Проверка работы контейнера:

    Откройте браузер и перейдите по адресу http://localhost. Вы должны увидеть страницу с текстом "WEB".

  3. Проверка автозапуска:

    Перезагрузите сервер и убедитесь, что контейнер запускается автоматически:

    sudo reboot
    

    После перезагрузки проверьте статус контейнера:

    docker ps
    

    Контейнер web должен быть в списке запущенных.