Действия GitHub (docker-run-action): невозможно подключиться к демону Docker

Я создал рабочий процесс на сервере GitHub Enterprise. Я хочу собрать и отправить контейнер с помощью docker/build-push-action, и перед отправкой я хочу запустить в контейнере несколько тестов.

Мой файл рабочего процесса выглядит так:

name: Docker Image Build & Push

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
  workflow_dispatch:

permissions:
  contents: read
  packages: write

jobs:
  build:
    name: Build & Push Container
    runs-on: [self-hosted, linux, docker]
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Docker Meta
        id: meta
        uses: docker/metadata-action@v5
        with:
          images: |
           registry.private/user/image
          tags: |
            type=schedule
            type=ref,event=branch
            type=ref,event=pr
            type=semver,pattern = {{version}}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
        with:
          driver: docker-container

      - name: Login to Registry
        uses: docker/login-action@v3
        with:
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
          registry: registry.private

      - name: Docker Build
        uses: docker/build-push-action@v5
        with:
          push: false
          context: .devcontainer
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

      - name: Run some commands in the container
        uses: addnab/docker-run-action@v3
        with:
          image: registry.private/user/image
          run: whoami && pwd
      
      # Put here the step for the push


Все работает нормально, кроме выполнения действия addnab/docker-run-action@v3. Я получил следующее сообщение об ошибке:

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

Я нашел эту проблему на GitHub, но рабочего решения не нашлось.

Вам нужны какие-то действия третьей стороны для этого? Просто - run: docker run ....

jonrsharpe 23.05.2024 13:38

Я бы предпочел использовать многоразовое действие из маркетплейса. Если это невозможно, мне придется использовать команду docker run .... Но поскольку я хочу работать с многострочными командами, использовать многократное действие будет проще.

millerluki 23.05.2024 13:42

...yaml-multiline.info . Весь этот многоразовый экшен — всего лишь тонкая обертка вокруг… docker run. Зачем быть обязанным за исправления какой-то случайной третьей стороне?

jonrsharpe 23.05.2024 13:45

вы пытаетесь запустить докер внутри докера, он же dind. Это возможно, но вам нужно смонтировать сокет docker /var/run/docker.sock:/var/run/docker.sock. Пример: контейнер: изображение: параметры образа докера: -v /var/run/docker.sock:/var /run/docker.sock

Dayananda D R 23.05.2024 17:10

Акция из addnab/docker-run-action делает именно такой вариант. В моем случае такое монтирование произошло, но сокет докера по-прежнему недоступен.

millerluki 24.05.2024 06:26
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
5
228
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как @jonrsharpe упомянул в комментариях, запуск докера работает довольно хорошо, в том числе и с многострочными командами.

.yaml-multiline.info. Все это многоразовое действие — всего лишь тонкая оболочка вокруг… запуска докера.

Мой шаг теперь выглядит так:

      - name: Run Tests in Container
        run: >
          docker run ${{ needs.build.outputs.tag }} bash -c "
          whoami &&
          whoami &&
          ls -la"

Другие вопросы по теме