Не удается подключиться к docker внутри jenkins docker контейнера MacOS - PullRequest
2 голосов
/ 29 апреля 2020

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

Я нахожусь на макросе 10.13 .6 (High Sierra)

Работает Docker Рабочий стол для ма c 2.2.0.5 (43884)

Engine: 19.03.8
Compose 1.25.4

Я хочу запустить Дженкинса, чтобы изучить некоторые конвейерные вещи, так что это мой ´ docker -compose.yml´

version: "3.2"

services:
  jenkins:

    build: 
      dockerfile: dockerfile
      context: ./build

    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/var/jenkins_home

Первая проблема заключается в том, что в образе, который я использую jenkins/jenkins:lts, не установлен клиент docker, поэтому даже при подключении сокета через тома, которые я не могу использовать docker version, вывод этой команды bash: docker: command not found.

Это мой конвейер только для тестирования (из документации jenkins):

pipeline {
    agent { docker { image 'node:6.3' } }
    stages {
        stage('build') {
            steps {
                sh 'npm --version'
            }
        }
    }
}

Итак, через это Плагин https://plugins.jenkins.io/docker-plugin/ Я могу go, чтобы "Управление Jenkins> Управление узлами и облаками> Настройка облаков> Добавить новое облако" и "Docker Сведения о облаке ..."

У меня есть URI хоста где я могу поставить "unix: ///var/run/docker.sock", что он будет использовать docker из моего хоста macos, чтобы делать то, что я Нужно сделать nkins.

Я испробовал все предложения от inte rnet, от создания пользователя jenkins, пользователя docker, помещения пользователя jenkins в docker группу e и другие вещи, но ни один из них не работает на ма c.

Подавляющее большинство заданных вопросов относится к linux, и все они, кажется, решили проблему, но когда я пытаюсь выполнить репликацию на макросы, это просто не работа.

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

Некоторые из шаги, которые я попробовал:

создать использовать пользователя и группу jenkins:

sudo dscl . create /Users/jenkins UniqueID 1000 PrimaryGroupID 1000
sudo dscl . create /Groups/jenkins gid 1000

создал группу docker:

sudo dscl . create /Groups/docker gid 1001

Добавил пользователя jenkins в docker group

sudo dscl . append /Groups/docker GroupMembership jenkins

Проверено, действительно ли пользователь находится в группе

$ dsmemberutil checkmembership -u 1000 -g 1001
user is a member of the group

Попытался изменить владельца сокета из контейнера jenkins (вот почему я собирал изображение, но это не сработало)

Пытался изменить владельца сокета на хосте macos, но он просто не меняется. Сокет всегда с этими разрешениями.

lrwxr-xr-x 1 root daemon 68B Apr 28 10:14 docker.sock -> /Users/metasix/Library/Containers/com.docker.docker/Data/docker.sock

1 Ответ

0 голосов
/ 05 мая 2020

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

В некоторые годы go я создаю агента JNLP, который регистрируется в Мастер Дженкинс, вы можете проверить мой репо здесь: https://github.com/jmaitrehenry/docker-jenkins-jnlp Как я уже сказал, я сделал это как 3 года go и, возможно, немного устарел.

По поводу вашей проблемы, вам нужно знать, что Docker для Ma c запускает контейнеры внутри маленькой виртуальной машины, поэтому, когда вы добавляете пользователя в MacOS, у виртуальной машины его нет. И Docker для Ма c сделайте много магов c, чтобы отобразить uid внутри вашей мамы c с некоторыми uid внутри контейнеров.

Вы можете попробовать добавить docker клиента внутри вашего Dockerfile, для этого попробуйте добавить эти шаги:

FROM jenkins/jenkins:lts
[...]

# Switch to root as the base image switch to jenkins user
USER root

# Download docker-cli and install it
RUN curl -o docker-ce-cli.deb https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce-cli_19.03.8~3-0~debian-stretch_amd64.deb && \
    dpkg -i docker-ce-cli.deb && \
    rm docker-ce-cli.deb

# Switch back to jenkins user
USER jenkins
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...