Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Miksi Rahti ei löydä tätä docker-imagea?

Imuroitaessa imageja DockerHubista

Viimeisimmän käyttöön otetun Rahti-version (OpenShift 4.17) jälkeen imagejen imurointiin liittyvä määritys on muuttunut. Osa imageista on kovakoodattu. Ne imuroituvat tietystä repositoriosta (kuten JFrogista). Vaikutusten minimoimiseksi ja virheiden välttämiseksi imuroitaessa image DockerHubista sinun täytyy käyttää täysin määriteltyä imagen nimeä.

Esimerkiksi sen sijaan, että käyttäisit image: mongo:latest, sinun tulisi käyttää image: docker.io/library/mongo:latest.

Tämä toiminta korjataan OpenShift 4.18:ssa. Meillä ei ole vielä arviota aikataulusta.

Imagen lataaminen ei onnistunut

Usein tämän ongelman taustalla on yksinkertainen syy. Imagen nimessä voi olla kirjoitusvirhe, tai image on voitu poistaa sen jälkeen, kun se viimeksi onnistuneesti imuroitiin. Nämä kaksi ongelmaa ovat yleisiä, joten imagen lähde kannattaa tarkistaa huolellisesti.

Imagen imurointi epäonnistui

Yksityinen image

Toinen mahdollinen syy on se, että image on yksityinen. Tässä tapauksessa on tarpeen määrittää docker-registry-salaisuus käyttäjätilin tunnistetiedoilla, joilla on tarvittavat oikeudet imagen imurointiin. Esimerkiksi Docker Hubiin tallennetulle imagelle:

oc create secret docker-registry <SECRET-NAME> \
      --docker-username=<USERNAME> \
      --docker-server=docker.io \
      --docker-email=<EMAIL> \
      --docker-password=<PASSWORD>
oc secrets link default <SECRET-NAME> --for=pull

Huom.: Korvaa paikkamerkit oikealla käyttäjänimellä, salasanalla, sähköpostiosoitteella ja salaisuudelle sopivalla nimellä (ilman <>-merkkejä).

Lisätietoja löytyy artikkelista Docker Hub -tunnistetietojen lisääminen projektiin.

Tukematon image-muoto

Harvinaisempi ongelma on se, että imagen muoto ei ole nykyisen Rahti-version (v3.11) tukema, koska se käyttää docker-asiakasohjelman vanhaa versiota. Tällä hetkellä docker-imageille on kaksi muotoa, docker (application/vnd.docker.container.image.v1+json) ja OCI (application/vnd.oci.image.manifest.v1+json), ja nykyinen Rahti-versio tukee vain docker-muotoa.

Kun vanhalla asiakasohjelmalla yritetään imuroida uudemmassa muodossa oleva image, asiakasohjelma ei löydä sitä ja palauttaa virheen repository does not exist tai Error response from daemon: missing signature key. Helpoin tapa tarkistaa imagen mediaType on käyttää komentoa docker manifest inspect <image>:<tag>. Tämä komento näyttää imagen mediatyypin ja jokaisen sen kerroksen mediatyypin.

Väliaikaiset ratkaisut

  • Yksinkertainen ratkaisu on imuroida image yhteensopivalla asiakasohjelmalla, lisätä sille uusi tagi ja viedä se Rahtin sisäiseen rekisteriin. Tämä vastikään viety image käyttää vanhaa docker-muotoa. Katso ohje linkistä Miten imageja välimuistitetaan käsin Rahtin rekisteriin.

  • Jos image on tiimisi rakentama, voidaan käyttää työkalua buildah. Sen avulla docker-imageja voidaan rakentaa ilman niitä ylimääräisiä oikeuksia, joita docker build vaatii, ja vaikka se oletuksena rakentaa imagen OCI-muodossa, siinä on myös mahdollisuus käyttää docker-muotoa:

buildah bud -t image/name:tag --format=docker
  • Skopeo on työkalu, jolla voidaan tehdä erilaisia toimenpiteitä kontti-imageille ja image-repositorioille. Sillä voi kopioida DockerHubista Rahtin sisäiseen rekisteriin, ja se muuntaa imagen automaattisesti docker-muotoon. Tässä on esimerkki:

Ensin sinun täytyy olla yhteydessä Rahtiin. Kun yhteys on muodostettu, kirjoita tämä komento kopioidaksesi Docker-imagen DockerHubista Rahtin sisäiseen rekisteriin:

skopeo copy docker://publisher/image:tag --dest-creds $(oc whoami):$(oc whoami -t) docker://docker-registry.rahti.csc.fi/project/image:tag
Korvaa 'project' Rahti-projektillasi, 'image' imagelle haluamallasi nimellä ja 'tag' haluamallasi tagilla

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta