Образ Ubuntu Docker, эквивалентный vmImage: ubuntu

Я пытаюсь собрать пакет Debian для задания контейнера Ubuntu в конвейере Azure.

Вот моя установка:

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04

Но это выглядит как Ubuntu: в образе докера 20.04 не установлены некоторые необходимые инструменты. (SUDO, SVN, dpkg-architecture)

------Update and install packages------
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 6: sudo: command not found
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 7: sudo: command not found
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 8: sudo: command not found
------Initialize build environment------
/__w/_temp/40c7e2e3-ed1a-4d0f-a8da-5f7bf062cb90.sh: line 11: sudo: command not found
------Build DEBIAN------
/__w/16/DEBIAN/scripts/build.includes: line 78: dpkg-architecture: command not found
../../../scripts/build_template.includes: line 118: svnversion: command not found

Но у меня нет проблем с недостающими инструментами при сборке Ubuntu vmImage, как показано ниже:

pool:
  vmImage: ubuntu-20.04  

Поэтому мой план состоит в том, чтобы вытащить образ Ubuntu Docker куда-нибудь, эквивалентному vmImage: ubuntu, и отправьте его в мой личный реестр Harbour, чтобы сослаться на него в спецификации контейнера:

container:
  image: registry:ubuntu2004
  endpoint: private_harbor_connection

Вопрос в том, где найти этот образ Ubuntu Docker, эквивалентный vmImage: ubuntu? Есть ли лучшее решение моей проблемы? Спасибо.

/////////////////////////////////////////////////// /////////////////

Вот обновленный файл yaml:

trigger:
- master

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04
  options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
  
steps:
- checkout: self
  lfs: true
  path: HVD
  clean: true

- script: |
    /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
    /tmp/docker exec -t -u root sample apt-get -qq update
    /tmp/docker exec -t -u root sample apt-get -qq install sudo
    /tmp/docker exec -t -u root sample apt-get -qq install subversion
    /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
    /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers

- script: |

    cd HVD/Sources/Proprietary/hvd-client/
  
    echo ------Update and install packages------
    sudo apt update -y
    sudo apt upgrade -y
    sudo apt install -y build-essential devscripts equivs git git-lfs

    echo ------Initialize build environment------
    sudo ./init-dev-hvd

    echo ------Build HVD------
    ./build.tp

    echo ------Build finshed------

Но второй скрипт застрял на следующем экране при запуске части «Обновление и установка пакетов».

Setting up tzdata (2024a-0ubuntu0.20.04) ...
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 
##[error]The operation was canceled.

/////////////////////////////////////////////////// //////////

Вот обновленный yaml от 5 июня.

trigger:
- master

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04
  options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
  
steps:
- checkout: self
  lfs: true
  path: HVD
  clean: true

- script: |
    /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
    /tmp/docker exec -t -u root sample apt-get -qq update
    /tmp/docker exec -t -u root sample apt-get -qq install sudo
    /tmp/docker exec -t -u root sample apt-get -qq install subversion
    /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
    /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers

- script: |

    cd HVD/Sources/Proprietary/hvd-client/
  
    echo ------Update and install packages------
    sudo apt update -y
    sudo apt upgrade -y
    sudo DEBIAN_FRONTEND=noninteractive apt install -y build-essential devscripts equivs git git-lfs

    echo ------Initialize build environment------
    sudo ./init-dev-hvd

    echo ------Build HVD------
    ./build.tp

    echo ------Build finshed------

Сценарий завершился неудачно на шаге: «./build.tp» с ошибкой ниже:

------Build HVD------
No packages directory, rebuilding...
I: Cleaning hvd-client
dh clean
All build files have been removed.
I: Checking external version for hvd-client
I: This is not an external
I: Copying hvd-client
I: Checking source requirements for hvd-client
I: Checking build requirements for hvd-client
dpkg-checkbuilddeps: error: Unmet build dependencies: lbzip2 cmake qt5-default libssl-dev libpcsclite-dev libpng-dev libpulse-dev libxrandr-dev libxkbfile-dev libxcursor-dev libxt-dev chrpath python3-pip python3-venv libpython3-dev libxcb-xinerama0 libfreetype6-dev libxft-dev libqt5x11extras5-dev libxinerama-dev libudev-dev upx wmctrl libxmu-headers libxmu-dev libglib2.0-dev freerdp2-dev liblz4-tool cython3 clang-tidy-11 libuvc-dev libcups2-dev qtmultimedia5-dev qtpositioning5-dev libxext-dev libxcomposite-dev libxdamage-dev libxfixes-dev libxtst-dev libavcodec-dev libavutil-dev libicu-dev libgbm-dev libdrm-dev libjson-c-dev libopencv-dev libcurl4-openssl-dev

Обычно вам не нужен sudo в контейнере докеров. Вы просто запускаете команды apt во время сборки

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

Ответы 1

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

где найти этот образ Ubuntu Docker, эквивалентный vmImage: ubuntu

Боюсь, в настоящее время не существует образа докера с той же конфигурацией, что и последняя версия Ubuntu VmImage.

Вот общедоступные изображения связанных с агентами, размещенными в Microsoft, в Docker Hub: Агент Azure Pipelines. Но они устарели.

это выглядит как Ubuntu: в образе докера 20.04 не установлены некоторые необходимые инструменты. (SUDO, SVN, dpkg-architecture)

Чтобы решить эту проблему, вы можете использовать команду apt-get install для установки необходимых инструментов.

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

Это приведет к следующей ошибке разрешения:

Для их установки вам необходимо выполнить следующий YAML-скрипт:

pool: 
  vmImage: ubuntu-20.04

container: 
 image: ubuntu:20.04
 options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"

steps:
- script: |
    /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
    /tmp/docker exec -t -u root sample apt-get -qq update
    /tmp/docker exec -t -u root sample apt-get -qq install sudo
    /tmp/docker exec -t -u root sample apt-get -qq install subversion
    /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
    /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers

- next tasks:

Затем вы можете использовать инструменты в работе с контейнером.

Для получения более подробной информации вы можете обратиться к этому билету: Невозможно получить root в обычных контейнерных дистрибутивах

Обновлять:

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

Чтобы решить эту проблему, вам нужно добавить DEBIAN_FRONTEND=noninteractive перед командой apt install.

Вы можете попробовать использовать следующий образец yaml:

trigger:
- master

pool: 'AWSLinux'

container: 
  image: ubuntu:20.04
  options: "--name sample -v /usr/bin/docker:/tmp/docker:ro"
  
steps:
- checkout: self
  lfs: true
  path: HVD
  clean: true

- script: |
    /tmp/docker exec -t -u root sample mv /etc/sudoers /etc/sudoers.bak
    /tmp/docker exec -t -u root sample apt-get -qq update
    /tmp/docker exec -t -u root sample apt-get -qq install sudo
    /tmp/docker exec -t -u root sample apt-get -qq install subversion
    /tmp/docker exec -t -u root sample apt-get -qq install dpkg-dev
    /tmp/docker exec -t -u root sample mv /etc/sudoers.bak /etc/sudoers

- script: |

    cd HVD/Sources/Proprietary/hvd-client/
  
    echo ------Update and install packages------
    sudo apt update -y
    sudo apt upgrade -y
    sudo DEBIAN_FRONTEND=noninteractive apt install -y build-essential devscripts equivs git git-lfs

    echo ------Initialize build environment------
    sudo ./init-dev-hvd

    echo ------Build HVD------
    ./build.tp

    echo ------Build finshed------

Спасибо, ваш скрипт для инструментов установки сработал, но возникла новая проблема, из-за которой скрипт сборки завис. Я обновил описание вопроса, не могли бы вы взглянуть?

Ming 03.06.2024 12:11

@Ming Пожалуйста, обратитесь к моему обновлению в ответе. Это может помочь вам решить последнюю проблему в конвейере. Вы можете обратиться к этому билету: serverfault.com/questions/949991/…

Kevin Lu-MSFT 03.06.2024 13:58

Кевин, твое решение сработало. Но теперь сборка завершилась неудачно из-за ошибки «Неудовлетворенные зависимости сборки» (см. обновленное описание вопроса). Есть ли какая-нибудь команда для установки этих зависимостей, спасибо.

Ming 05.06.2024 01:16

@Ming Вы можете добавить к командам следующее: sudo apt-get install devscripts и mk-build-deps --install для установки необходимых пакетов. Пожалуйста, проверьте, может ли он работать. Если проблема все еще существует, я предлагаю вам создать новую заявку и поделиться примером кода в файле /build.tp. Это будет полезно для понимания новой проблемы.

Kevin Lu-MSFT 05.06.2024 04:27
stackoverflow.com/questions/78584903/… @Kevin Lu-MSFT, вот новый вопрос, который я создал.
Ming 06.06.2024 08:57

@Ming Спасибо за ваше обновление. Новый выпуск проверю позже.

Kevin Lu-MSFT 06.06.2024 09:17

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