Hyppää sisältöön

A new version of SD Connect and SD Desktop will be available from Monday, September 28. The major upgrade will introduce significant improvements, but also includes changes that are not compatible with the current version of the service. Click here to review the available support materials.

Warning!

Puhti and Mahti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti and Mahti login nodes and storage services are planned to remain available until 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

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 tuli konfiguraatiomuutos. Jotkin imaget on kovakoodattu. Ne imuroituvat tietystä repositoriosta (kuten JFrogista). Vaikutusten minimoimiseksi ja virheiden välttämiseksi imagea DockerHubista imuroitaessa 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 tällä hetkellä arviota aikataulusta.

Could not load image

Usein tälle ongelmalle on yksinkertaisia syitä. 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.

Failed to pull image

Yksityinen image

Toinen syy voi olla 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 todellisella käyttäjänimellä, salasanalla, sähköpostiosoitteella ja salaisuudelle sopivalla nimellä (ilman <>-merkkejä).

Lisätietoja löytyy artikkelista Kuinka lisätä Docker Hub -tunnistetiedot 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 tiedot.

Väliaikaiset ratkaisut

  • Yksinkertainen korjaus on imuroida image yhteensopivalla asiakasohjelmalla, tagittaa se uudelleen ja puskea se Rahdin sisäiseen rekisteriin. Tämä vastikään pushettu image käyttää vanhaa docker-muotoa. Seuraa linkkiä oppaaseen Kuinka välimuistittaa imageja manuaalisesti Rahdin rekisteriin.

  • Jos image on tiimisi rakentama, voidaan käyttää työkalua buildah. Sen avulla voidaan rakentaa docker-imageja 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ää sen sijaan docker-muotoa:

buildah bud -t image/name:tag --format=docker
  • Skopeo on työkalu, jolla voidaan tehdä erilaisia toimenpiteitä kontti-imageille ja image-repositorioille. Sitä voi käyttää kopiointiin DockerHubista Rahdin 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 Rahdin 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 halutulla nimellä ja 'tag' halutulla tagilla

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta