Я пытался запустить Docker Save после сборки, чтобы сохранить образ Docker в файле .tar
фрагмент скрипта .sh:
#build new docker image
$docker build -f Dockerfile -t "$module":$imageversion .
#creating a copy
$docker save "$module":$imageversion > "$module".tar
ls -al
Я выполняю вышеуказанный скрипт параллельно, чтобы собрать свои модули одновременно:
Jenkinsfile:
pipeline {
agent {
label 'DOCKER_BUILD'
}
stages {
stage("Build") {
parallel {
stage("Build module foo") {
steps {
script {
sh "chmod +x script.sh"
sh """
./script.sh foo 1.0
"""
}
}
}
stage("Build module bar") {
steps {
script {
sh "chmod +x script.sh"
sh """
./script.sh bar 1.0
"""
}
}
}
}
}
}
}
Ниже приведен результат:
Step 1/3 : FROM rhel7.5
---> 7b875638cfd8
Step 2/3 : COPY foo /
---> 03486e60a155
Removing intermediate container 294374c335e2
Step 3/3 : CMD /foo
---> Running in b443c0353f03
---> 7cf9cea4eb63
Removing intermediate container b443c0353f03
Successfully built 7cf9cea4eb63
Error response from daemon: open /var/lib/docker/devicemapper/mnt/ea79ca596a1bdf10526762edf47ac439e3a54d3d327ee3b19b9d11e589299298/rootfs/root/buildinfo/Dockerfile-rhel7-7.5-433: no such file or directory
drwxr-xr-x 3 pdcifadm dcifgrp 4096 Jun 13 17:09 .
drwxr-xr-x 31 pdcifadm dcifgrp 4096 Jun 13 17:05 ..
-rwxr-xr-x 1 pdcifadm dcifgrp 15370790 Jun 13 17:07 foo
-rw-r--r-- 1 pdcifadm dcifgrp 0 Jun 13 17:09 module-foo.tar
-rw-r--r-- 1 pdcifadm dcifgrp 74 Jun 13 17:07 Dockerfile
-rwxr-xr-x 1 pdcifadm dcifgrp 105 Jun 13 17:07 script.sh
Обратите внимание, что файл .tar содержит 0 байтов. Я получил тот же результат при просмотре Build module bar
журналов.
Я попытался протестировать больше параллельных сборок и увидел, что docker save
иногда в некоторых шагах иногда работает как положено.
Последовательный запуск сборки работает как положено.
Я что-то здесь упускаю? Может быть, проблемы с агентом или рабочей областью?
Заранее спасибо!
Ура!