Назад | Перейти на главную страницу

Что означает сообщение об ошибке «Недопустимая связь между устройствами» внутри Jenkins Docker Pipeline?

Я пытаюсь настроить тесты программного обеспечения внутри Jenkins для устаревшего проекта на работе.

Чтобы запустить эти тесты, мне нужно настроить контейнер Docker на основе старой версии Ruby с несколькими установленными пакетами.

(отрывок из Jenkinsfile)

stage("Test") {
    docker.image('ruby:2.2.2').inside('-u 0:0') {
        // preparation of container
        sh 'apt-get update && apt-get -y upgrade'
        sh '''apt-get install -y nginx supervisor mariadb-client git openssh-client
            build-essential libmysqlclient-dev python libqt5webkit5-dev qt5-default qt5-qmake xvfb'''

Однако я получаю следующую ошибку во время apt-get -y upgrade

dpkg: error processing archive /var/cache/apt/archives/libltdl7_2.4.2-1.11+b1_amd64.deb (--unpack):
 unable to make backup link of `./usr/lib/x86_64-linux-gnu/libltdl.so.7.3.0' before installing new version: Invalid cross-device link

это странно, тем более, что запуск этого при создании контейнера работает безупречно.

# Jenkinsfile
stage("Build Container") {
    builtImage = docker.build(projectName + ':' + scmVars.GIT_COMMIT)
    builtImage.tag(envTagName)
}

# Dockerfile
RUN apt-get update && apt-get -y upgrade

Кто-нибудь знает, в чем может быть проблема?

Системная информация:

Host OS: Ubuntu 18.04.2 LTS; Linux 4.15.0-51-generic
Jenkins v2.187 running inside container
Docker version 18.06.1-ce, build e68fc7a