Docker Hub -kirjautumistietojen lisääminen projektiin
Docker Hub on asettanut 2. marraskuuta 2020 alkaen image pull -toiminnoille käyttörajoituksen. Rahtissa tämä tarkoittaa 200 vetoa 6 tunnin aikana. Tämä rajoitus voi täyttyä helposti, ja se estää uusien sovellusten käyttöönoton, jos image sijaitsee Docker Hubissa.
Virhe näyttää tältä:
Pulling image "docker.io/centos/python-38-centos7@sha256:da83741689a8d7fe1548fefe7e001c45bcc56a08bc03fd3b29a5636163ca0353" ...
pulling image error : toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Ratkaisu edellyttää sekä selainkäyttöliittymän että asiakasohjelman käyttöä:
-
Ensin tarvitset Docker Hub -tilin. Se voi olla maksuton tili. Tässä tapauksessa käyttörajoitukset ovat edelleen voimassa, mutta käyttörajoituksessa huomioidaan vain ne vedot, jotka on tehty omilla kirjautumistiedoillasi. Maksullisilla tileillä ei ole rajoitusta.
- Tarvitset TOKENIN. Siirry osoitteeseen https://hub.docker.com/settings/security ja luo token. Näet myös, milloin tokenia on viimeksi käytetty. Voit lisäksi luoda useita tokeneita ja käyttää niitä eri projekteissa, mikä parantaa turvallisuutta.
-
Siirry seuraavaksi selainkäyttöliittymään ja valitse kehittäjänäkymä. Valitse vasemman reunan navigaatiosta Secrets.
-
Napsauta oikeasta yläkulmasta "Create"-valikkoa ja valitse "Image pull secret". Aseta seuraavat arvot:
- Secret name = anna selkeä nimi, tätä käytetään myöhemmin
- Authentication type = "Image Registry Credentials"
- Registry server address = "docker.io"
- Username = Docker-käyttäjänimesi
- Password = Docker-tokenisi
- Email = Docker-sähköpostiosoitteesi

-
Varmista, että arvot ovat oikein, ja valitse "Create".
-
Seuraavaksi siirrytään komentoriville. Kirjaudu sisään ja käytä seuraavaa komentoa liittääksesi kirjautumistiedot palvelutileihin:
Huomaa: Korvaa paikkamerkki
Vianmääritys
Jos virhe jatkuu, voit tarkistaa kaksi asiaa:
-
Osoitteessa https://hub.docker.com/settings/security näet, milloin tokenia on viimeksi käytetty. Tarkista, vastaako siellä näkyvä aika viimeisintä ajankohtaa, jolloin sitä olisi pitänyt käyttää.
-
Tarkista, että secretin ja palvelutilien väliset linkitykset ovat olemassa:
Huomaa: Korvaa paikkamerkki
varsinaisella projektin nimellä (ilman <>-merkkejä). -
Tarkista buildissa käytetty Pod ja varmista vielä, että luomaasi secretiä todella käytetään:
$ oc get pod
NAME READY STATUS RESTARTS AGE
my-hello-1-build 0/1 Error 0 5h
my-hello-2-build 0/1 Error 0 1h
Molemmat yllä olevat Podit ovat epäonnistuneita buildeja. Ne nimetään seuraavasti:
Ota viimeisin build, tässä tapauksessa my-hello-2-build. Kuvaa sen tila ja etsi Volume mountit:
$ oc describe pod my-hello-2-build
(...)
Mounts:
/tmp/build from buildworkdir (rw)
/var/run/crio/crio.sock from crio-socket (rw)
/var/run/docker.sock from docker-socket (rw)
/var/run/secrets/kubernetes.io/serviceaccount from builder-token-r5zp8 (ro)
/var/run/secrets/openshift.io/pull from estivadores-secreto2-pull (ro)
/var/run/secrets/openshift.io/push from builder-dockercfg-kn8h6-push (ro)
Yllä olevasta esimerkistä näemme, että käytetty pull secret oli estivadores-secreto2-pull. Voimme vielä varmistaa, että polkua käytettiin vetoon seuraavasti:
$ oc describe pod my-hello-2-build | grep PULL_DOCKERCFG_PATH
PULL_DOCKERCFG_PATH: /var/run/secrets/openshift.io/pull
ja nähdä, että secretimme oli liitetty kyseiseen polkuun.
Jos tarvitset lisätietoja, tutustu upstreamin image pull secretit -dokumentaatioon.