Введение
В этом практическом занятии мы рассмотрим процесс установки Jenkins с использованием Docker. Jenkins - это широко используемый автоматизационный сервер для процессов непрерывной интеграции и непрерывной поставки (CI/CD). По завершении этого практического занятия у вас будет практический опыт настройки Jenkins с использованием Docker, который даст вам прочный фундамент для будущих проектов DevOps.
Для начинающих важно понимать, что Docker - это платформа, которая позволяет упаковывать и запускать приложения в изолированных средах, называемых контейнерами. Эта изоляция гарантирует, что ваше приложение будет работать стабильно на разных системах. С другой стороны, Jenkins - это инструмент, который помогает автоматизировать части процесса разработки программного обеспечения, в частности сборку, тестирование и развертывание кода.
Если вы новичок в Linux или LabEx, рекомендуется начать с Быстрого старта с Linux или Практики по основным командам Linux, чтобы систематически изучить основы. После завершения курса вы можете вернуться сюда, чтобы отточить свои навыки.
Подготовка Docker-окружения
На этом этапе мы убедимся, что Docker правильно установлен и запущен на нашей системе. Docker является обязательным компонентом для этого практического занятия, так как он позволяет запускать Jenkins в контейнере, обеспечивая последовательную и изолированную среду.
Сначала проверим, что Docker установлен и запущен. Откройте терминал и выполните следующую команду:
docker --version

Эта команда должна отобразить версию Docker, установленную на вашей системе. Вы должны увидеть вывод, похожий на следующий:
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3
Если вы не видите номер версии, это может означать, что Docker не установлен или не добавлен в переменную окружения PATH системы. Не беспокойтесь, если это произошло; мы вскоре это исправим.
Далее проверим, запущен ли Docker-демон:
sudo systemctl status docker
Эта команда проверяет статус службы Docker. Вы должны увидеть вывод, указывающий, что служба Docker активна (запущена). Он может выглядеть примерно так:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-09-11 10:00:00 UTC; 2h 30min ago
Если Docker не запущен, вы увидите сообщение, указывающее, что служба неактивна или не запустилась.
Загрузка Docker-образа Jenkins
На этом этапе мы загрузим официальный Docker-образ Jenkins из Docker Hub. Docker Hub - это облачное хранилище, где хранятся и обмениваются Docker-образами.
Для загрузки последней LTS-версии (Long Term Support, долгосрочная поддержка) Jenkins выполните следующую команду:
docker pull jenkins/jenkins:lts
Разберем эту команду по частям:
docker pullсообщает Docker загрузить образ.jenkins/jenkins- это имя образа (созданного проектом Jenkins).:lts- это тег, который указывает, что мы хотим версию с долгосрочной поддержкой, которая обычно более стабильна.
Эта команда загружает образ Jenkins на вашу локальную машину. Загрузка может занять несколько минут в зависимости от скорости вашего интернет-соединения. Вы увидите индикаторы прогресса, показывающие статус загрузки различных слоев, составляющих образ.
После завершения загрузки вы можете убедиться, что образ теперь доступен локально, выполнив команду:
docker images
Эта команда выводит список всех Docker-образов на вашей системе. Вы должны увидеть образ Jenkins в выводе, похожем на следующий:
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins lts 7a7add0bf3da 8 days ago 470MB
Если вы не видите образ Jenkins, это может означать, что загрузка не удалась. В этом случае попробуйте выполнить команду docker pull еще раз. Если проблемы сохраняются, проверьте ваше интернет-соединение или попробуйте использовать другую сеть.
Создание Docker-тома для данных Jenkins
На этом этапе мы создадим Docker-том для постоянного хранения данных Jenkins. Это важный шаг для сохранения конфигурации Jenkins и истории сборок.
Docker-тома предоставляют способ сохранять данные, сгенерированные и используемые Docker-контейнерами. Это особенно важно для Jenkins, так как мы хотим сохранить конфигурацию, данные о задачах и артефакты сборки, даже если контейнер остановлен или удален.
Создайте новый том с именем jenkins-data, выполнив следующую команду:
docker volume create jenkins-data
Эта команда сообщает Docker создать новый том. Docker управляет этими томами, храня их в определенной части файловой системы хоста.
Вы можете проверить, что том был создан, выведя список всех Docker-томов:
docker volume ls
Вы должны увидеть jenkins-data в списке томов, как показано ниже:
DRIVER VOLUME NAME
local jenkins-data
Если вы не видите том, попробуйте создать его еще раз. Если проблемы сохраняются, убедитесь, что у вас есть необходимые разрешения для создания Docker-томов (возможно, вам нужно будет использовать sudo, если ваш пользователь не входит в группу docker).
Понимание Docker-томов важно по следующим причинам:
- Они позволяют сохранять данные даже после завершения жизненного цикла контейнера.
- Их можно легко резервное копировать и восстанавливать.
- Их можно совместно использовать между контейнерами при необходимости.
Запуск Docker-контейнера Jenkins
Теперь, когда у нас есть образ Jenkins и том для постоянного хранения данных, мы можем запустить контейнер Jenkins. На этом этапе Jenkins будет фактически запущен в Docker-контейнере и станет доступным на вашей системе.
Мы запустим контейнер с следующими настройками:
- Отобразить порт 8080 контейнера на порт 8080 хоста (для веб-интерфейса).
- Отобразить порт 50000 контейнера на порт 50000 хоста (для подключений агентов).
- Подключить том
jenkins-dataк директории/var/jenkins_homeв контейнере. - Запустить контейнер в отсоединенном режиме.
Выполните следующую команду для запуска контейнера Jenkins:
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home --name jenkins-lts jenkins/jenkins:lts
Разберем эту команду по частям:
docker runсоздает и запускает новый контейнер.-dзапускает контейнер в отсоединенном режиме (в фоновом режиме).-p 8080:8080отображает порт 8080 в контейнере на порт 8080 на вашем хосте.-p 50000:50000отображает порт 50000 в контейнере на порт 50000 на вашем хосте.-v jenkins-data:/var/jenkins_homeподключает наш Docker-том к домашней директории Jenkins в контейнере.--name jenkins-ltsдает нашему контейнеру имя для удобства обращения.jenkins/jenkins:ltsуказывает образ, который нужно использовать.
После выполнения этой команды Docker запустит контейнер Jenkins в фоновом режиме. Вы можете проверить, что контейнер запущен, выполнив команду:
docker ps
Эта команда выводит список всех запущенных Docker-контейнеров. Вы должны увидеть контейнер Jenkins в выводе, похожем на следующий:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
747b6dc7b1af jenkins/jenkins:lts "/usr/bin/tini -- /u…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins-lts
Если вы не видите контейнер Jenkins, возможно, он не удалось запустить. Вы можете проверить наличие сообщений об ошибках с помощью команды:
docker logs jenkins-lts
Это покажет логи контейнера, которые помогут диагностировать возможные проблемы.
Доступ к веб-интерфейсу Jenkins
После того как контейнер Jenkins запущен, мы можем получить доступ к его веб-интерфейсу для завершения первоначальной настройки. Этот шаг проведет вас через процесс доступа к Jenkins и выполнения начальной конфигурации.
Существует два способа доступа к веб-интерфейсу Jenkins:
Нажмите на символ
+на верхней вкладке виртуальной среды, чтобы создать новуюWeb Service(Веб-службу) и ввести порт8080.
Этот метод работает внутри лабораторной среды, создавая новую вкладку, на которой отображается интерфейс Jenkins.
Откройте браузер Firefox на рабочем столе VNC. Браузер автоматически откроется по адресу
http://localhost:8080, поэтому вам не нужно вводить URL вручную.
Вы должны увидеть страницу Jenkins "Unlock Jenkins" (Разблокировать Jenkins). Эта мера безопасности гарантирует, что только авторизованные пользователи могут настроить Jenkins.
Для данной лабораторной среды имя пользователя по умолчанию — admin, и пароль также admin.
Введите эти учетные данные на странице "Unlock Jenkins" и нажмите "Continue" (Продолжить).

После разблокировки Jenkins вы будете перенаправлены в процесс первоначальной настройки, который включает установку плагинов и создание учетной записи администратора. Для этой лаборатории вы можете выбрать опцию "Install suggested plugins" (Установить рекомендуемые плагины), чтобы быстро начать работу.
Резюме
В этом практическом занятии мы успешно установили и настроили Jenkins с использованием Docker. Мы рассмотрели важные этапы, включая подготовку Docker-окружения, загрузку образа Jenkins, создание постоянного тома для данных Jenkins, запуск контейнера Jenkins и доступ к веб-интерфейсу Jenkins для начальной настройки.
Этот практический опыт дал вам прочный фундамент в использовании Docker для развертывания Jenkins, что является важным навыком в современных DevOps-практиках. Теперь вы готовы к дальнейшему изучению Jenkins, созданию сборочных заданий и интеграции его в ваш рабочий процесс разработки.

