Установка Jenkins с использованием Docker

JenkinsBeginner
Практиковаться сейчас

Введение

В этом практическом занятии мы рассмотрим процесс установки Jenkins с использованием Docker. Jenkins - это широко используемый автоматизационный сервер для процессов непрерывной интеграции и непрерывной поставки (CI/CD). По завершении этого практического занятия у вас будет практический опыт настройки Jenkins с использованием Docker, который даст вам прочный фундамент для будущих проектов DevOps.

Для начинающих важно понимать, что Docker - это платформа, которая позволяет упаковывать и запускать приложения в изолированных средах, называемых контейнерами. Эта изоляция гарантирует, что ваше приложение будет работать стабильно на разных системах. С другой стороны, Jenkins - это инструмент, который помогает автоматизировать части процесса разработки программного обеспечения, в частности сборку, тестирование и развертывание кода.

Подготовка Docker-окружения

На этом этапе мы убедимся, что Docker правильно установлен и запущен на нашей системе. Docker является обязательным компонентом для этого практического занятия, так как он позволяет запускать Jenkins в контейнере, обеспечивая последовательную и изолированную среду.

Сначала проверим, что Docker установлен и запущен. Откройте терминал и выполните следующую команду:

docker --version
Вывод команды для проверки версии Docker

Эта команда должна отобразить версию 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-томов важно по следующим причинам:

  1. Они позволяют сохранять данные даже после завершения жизненного цикла контейнера.
  2. Их можно легко резервное копировать и восстанавливать.
  3. Их можно совместно использовать между контейнерами при необходимости.

Запуск 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:

  1. Нажмите на символ + на верхней вкладке виртуальной среды, чтобы создать новую Web Service (Веб-службу) и ввести порт 8080.

    Creating Jenkins web service tab

    Этот метод работает внутри лабораторной среды, создавая новую вкладку, на которой отображается интерфейс Jenkins.

  2. Откройте браузер Firefox на рабочем столе VNC. Браузер автоматически откроется по адресу http://localhost:8080, поэтому вам не нужно вводить URL вручную.

    Firefox Jenkins access page

Вы должны увидеть страницу Jenkins "Unlock Jenkins" (Разблокировать Jenkins). Эта мера безопасности гарантирует, что только авторизованные пользователи могут настроить Jenkins.

Для данной лабораторной среды имя пользователя по умолчанию — admin, и пароль также admin.

Введите эти учетные данные на странице "Unlock Jenkins" и нажмите "Continue" (Продолжить).

Jenkins unlock page credentials

После разблокировки Jenkins вы будете перенаправлены в процесс первоначальной настройки, который включает установку плагинов и создание учетной записи администратора. Для этой лаборатории вы можете выбрать опцию "Install suggested plugins" (Установить рекомендуемые плагины), чтобы быстро начать работу.

Резюме

В этом практическом занятии мы успешно установили и настроили Jenkins с использованием Docker. Мы рассмотрели важные этапы, включая подготовку Docker-окружения, загрузку образа Jenkins, создание постоянного тома для данных Jenkins, запуск контейнера Jenkins и доступ к веб-интерфейсу Jenkins для начальной настройки.

Этот практический опыт дал вам прочный фундамент в использовании Docker для развертывания Jenkins, что является важным навыком в современных DevOps-практиках. Теперь вы готовы к дальнейшему изучению Jenkins, созданию сборочных заданий и интеграции его в ваш рабочий процесс разработки.