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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL jenkins(("Jenkins")) -.-> jenkins/InstallingJenkinsGroup(["Installing Jenkins"]) jenkins(("Jenkins")) -.-> jenkins/UsingJenkinsGroup(["Using Jenkins"]) jenkins/InstallingJenkinsGroup -.-> jenkins/initial_settings("Jenkins Initial Settings") jenkins/InstallingJenkinsGroup -.-> jenkins/docker_installation("Use Docker Installation") jenkins/UsingJenkinsGroup -.-> jenkins/create_project("Create Project") subgraph Lab Skills jenkins/initial_settings -.-> lab-391174{{"Установка Jenkins с использованием Docker"}} jenkins/docker_installation -.-> lab-391174{{"Установка Jenkins с использованием Docker"}} jenkins/create_project -.-> lab-391174{{"Установка Jenkins с использованием Docker"}} end

Подготовка 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.
Создание вкладки веб-сервиса Jenkins

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

  1. Откройте браузер Firefox на рабочем столе VNC и перейдите по адресу http://localhost:8080.
Страница доступа к Jenkins в Firefox

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

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

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

Учетные данные на странице разблокировки Jenkins

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

Итог

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

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