Nextflow, "en son" Docker Görüntüsünü Çekmiyor
İki VM çalıştırıyorum. Sonraki akışı çalıştırmak için bir VM kullanılır, diğer VM'de bir Jenkins oluşturma sunucusu vardır. Jenkins, yeni Docker görüntüleri oluşturmaktan ve yeni Docker görüntülerini özel google kapsayıcı kayıt defterimize aktarmaktan sorumludur.
Dosyam nextflow.config
şuna benzer:
process {
withLabel: awesome_image {
container = "eu.gcr.io/best-project-1234/coolest_os:latest"
}
}
Jenkins sunucusunu kullanarak yeni bir imaj oluşturduktan sonra, yeni bir nextflow betiği çalıştırıyordum ve nextflow'un hala eski imajı kullandığını fark ettim. Biraz araştırmadan sonra (https://stackoverflow.com/a/58539792/1820480), Bunun latest
etiketi kullanmamla ilgisi olduğunu fark ettim ve zaten nextflow VM'de en yenisi olarak adlandırılan bir görüntü olduğundan, nextflow bunu kullanıyor ve kayıt defterini kontrol etmekle uğraşmıyor.
Soru: Her sonraki akış çalıştırılmadan önce kayıt defterinde yeni görüntüler olup olmadığını kontrol ettiğinden nasıl emin olabilirim? Veya, kayıt defterini kontrol eden (sonraki akış yerine) VM'de çalıştırabileceğim bir komut dosyası / program var mı?
Teşekkür ederim.
Yanıtlar
Nextflow, komutlarınızı kullanarak bir konteynerde çalıştırır docker run
. Henüz çekmediğiniz bir görüntü belirlerseniz docker run
, önce docker pull
görüntüyü indirmek / yerelleştirmek için bir işlem yapacaktır . Daha yeni görüntüler için kayıt defterini yeniden kontrol etmek için, docker pull
Nextflow'u çalıştırmadan önce (her görüntü için) aradığınızdan emin olmanız yeterlidir. Bunun yerine, her işlem başladığında kayıt defterinde daha yeni görüntüler olup olmadığını kontrol etmek istiyorsanız, lütfen aşağıya bakın.
Biraz araştırmadan sonra, en son Docker cli (v20.10.0) artık konteyner çalıştırırken çekme davranışını değiştirmek için bir işarete sahip gibi görünüyor:
--pull string Pull image before running ("always"|"missing"|"never") (default "missing")
Bu güzel, çünkü artık bunu aşağıdakilerden geçirmenin mümkün olması gerektiği anlamına geliyor nextflow.config
:
docker {
enabled = true
runOptions = '--pull=always'
}
Ancak bu, ortaya çıkan docker pull
her işlem için bir işlem yapma ek yüküne sahip olacaktır ve kayıt defterinize yeni görüntülerin ne zaman gönderileceğine bağlı olarak, bazı işlemlerin iş akışı yürütme sırasında farklı kapsayıcılar alacağı anlamına gelebilir. Ancak, yalnızca 'en son' kaplara ihtiyacınız varsa ve yeniden üretilebilirliği önemsemiyorsanız, bu bir endişe kaynağı olmayabilir.