Apptainer-konttien rakentaminen alusta alkaen
CSC-alustoilla on kaksi tapaa luoda Apptainer-kontteja (aiemmin tunnettu nimellä Singularity). Voit:
- Muuntaa Docker-kontteja Apptainer-kuvatiedostoiksi, tai
- Rakentaa Apptainer-kuvan täysin alusta alkaen.
Tämä opas keskittyy jälkimmäiseen tapaukseen, ja lisätietoja on saatavilla Apptainer-verkkosivustolla.
Kontit erillisinä ympäristöinä
Yksi voi ajatella konteista erillisinä ympäristöinä. Esimerkiksi kontissa käytetty Linux-jakelu voi erota isäntäympäristöstä, jossa kontti suoritetaan. Apptainer-kuvilla on myös sisäinen tiedostojärjestelmä, joka ei ole näkyvissä konttien ulkopuolella. Samoin suurin osa isäntäympäristöstä ei ole näkyvissä kontille, ellei sitä ole erikseen määritelty. Valitut isännän kansiot voidaan altistaa kontille käyttämällä bind mountseja.
Kun suunnittelet Apptainer-kontin sisältöä ja konfigurointia, on tehtävä päätös siitä, pitäisikö tietyt asennukset tehdä konttiin vai lisätä bind mountseina. Esimerkiksi tietyt riippuvuudet voivat olla jo olemassa isännässä. Kontin Linux-jakelu vaikuttaa luonnollisesti tähän päätökseen.
Usein kontissa käytetyt ympäristömuuttujat verrattuna isäntäympäristöön tulevat myös eroamaan (lisätietoja alla).
Määrittelytiedoston valmistelu
Määrittelytiedosto (pääte .def
) sisältää komennot, jotka
vaaditaan kontin rakentamiseen. Esimerkkejä CSC:n
laskentaympäristössä käytetyistä määrittelytiedostoista löytyvät
singularity-recipes-repositoriosta.
Määrittelytiedosto on jaettu eri tarkoituksiin palveleviin osiin (katso tarkemmat tiedot täältä). Tiedoston yläosassa on annettava otsikko, joka sisältää bootstrap-avainsanan ja Linux-jakelun. Esimerkiksi Ubuntu 22.04 -kontin otsikon luomiseksi kirjoitetaan:
Linux-jakelun valinta määrittää komentosarjassa käytetyt
komennot. Esimerkiksi CentOS-kontti käyttäisi komentoja kuten
yum -y install
, kun taas Ubuntu-kontti käyttäisi komentoja kuten
apt-get -y install
.
Muita osioita, joita voi käyttää, ovat esimerkiksi:
%labels
(esim. kuvan ylläpitäjän nimi ja yhteystiedot).%files
(komennot ulkoisten tiedostojen kopioimiseksi tiettyyn paikkaan kontissa).%post
(osio ohjelmistojen asennuskomentoja varten).%environment
(ympäristömuuttujat, jotka määritellään kontin käynnistyessä).
Huomaa, että eri osioita voidaan lisätä tai jättää pois tarpeidesi mukaan.
Esimerkiksi, jos sinulla ei ole ulkoisia tiedostoja lisättävänä konttiin,
ei ole tarpeen lisätä %files
-osaa.
Muutama sana ympäristömuuttujista
Ympäristömuuttujat voidaan määritellä sekä %post
- että %environment
-osioissa.
Ensimmäiseen osioon määritellyt voivat olla hyödyllisiä ohjelmistojen
asentamisessa, mutta toisin kuin %environment
-osiossa määritellyt muuttujat,
ne eivät ole näkyvissä kontin käynnistyessä.
Jos haluat määritellä ympäristömuuttujia isäntäympäristössä niin, että ne ovat
näkyvissä kontin sisällä, niiden on alettava APPTAINERENV_
.
Ilman tätä etuliitettä olevia muuttujia ei siirretä kontille.
Kontin rakentaminen
Apptainer-kontin rakentaminen vaatii root-oikeuksia (sudo
).
CSC:n supertietokoneilla, missä käyttäjillä ei ole
root-oikeuksia, voit käyttää
fakeroot-ominaisuutta
kiertääksesi tämän vaatimuksen (muutamin rajoituksin).
Katso dokumentaatiomme konttien luomisesta lisätietoja varten.
Vaihtoehtoisesti voit käyttää omaa tietokonettasi tai järjestelmäkonetta, jossa sinulla on root-oikeudet, kontin kuvan rakentamiseen. Yksi vaihtoehto on käyttää Pouta-virtuaalikonetta. Tämä mahdollistaa määrittelemäsi ympäristön tyypin, jota käytetään kuvan rakentamiseen. Useimmiten ympäristö, joka käytetään kontin rakentamiseen, ei ole merkityksellinen verrattuna kontin ja isännän yhteneväisyyteen, mutta tietyt asennukset (esim. Nvidia CUDA -ajurit) vaativat tarkkoja versioita ytimien otsikoille, mikä tarkoittaa, että työn alustana käytettävä jakelu on sovitettava vastaamaan.
Määrittelytiedostoa käyttäen kontin rakentaminen voidaan suorittaa ajamalla:
tai ilman sudo
käyttämällä --fakeroot
-vaihtoehtoa:
Huomautus
Vanhoissa Linux-versioissa komento voi olla singularity
apptainer
:n
sijaan.
Jos kaikki suoritetaan onnistuneesti, lopputuloksena on kontin kuva
(.sif
-tiedosto), joka voidaan siirtää valitsemaasi
laskentaympäristöön. Kuvan tiedosto on muuttumaton, tarkoittaen, että
sitä ei voi muokata rakentamisen jälkeen. On myös mahdollista luoda
kirjoitettavia sandbox-hakemistoja
joita voidaan käyttää testaamiseen (ja voidaan myöhemmin muuntaa Apptainer
kuviksi).
Kontin suorittaminen
On useita tapoja suorittaa Apptainer-kontteja CSC:n laskentaympäristössä. Yksityiskohtaisia ohjeita varten, katso dokumentaatiomme konttien suorittamisesta.
Vaihtoehdot ovat:
apptainer exec
apptainer_wrapper exec
(kääreskripti, joka yhdistää usein käytetyt paikalliset hakemistot, esim.$TMPDIR
)
Monet CSC:n laskentaympäristön kontit ovat saatavilla valituille komennoille tarkoitetuilla kääreskripteillä, joiden ansiosta ne voidaan suorittaa ilman tarvetta yllä mainituille komennoille. On myös mahdollista valmistella kääreskriptejä alusta alkaen rakennetuille konteille, vaikka tämä vaatii jonkin verran Bash-skriptaamisen tuntemusta. Tarjoamme myös konttikääretyökalun "Tykky", jota voidaan käyttää konttien helppoon luomiseen ja kääreiden luomiseen Python-ympäristöille.
Konttien siirtäminen CSC:n laskentaympäristöön
Puhti, Mahti ja LUMI
Apptainer-kuvatiedostoja voidaan siirtää Puhtiin, Mahtiin tai LUMIin esim.
scp
, rsync
tai graafista tiedostonsiirto-ohjelmaa käyttäen.
CSC Sensitive Data Desktop
Jos haluat käyttää itse rakennettua konttia CSC Sensitive Data Desktopilla, siirrä ensin kuvatiedosto Puhtiin. Seuraa sitten ohjeitamme konttien siirtämisestä SD Desktopille Allasin avulla.