Quando si esegue uno docker push
o quando si tira un'immagine, in che modo Docker determina se esiste un server del registro nel nome dell'immagine o se si tratta di un percorso/nome utente nel registro predefinito (ad esempio Docker Hub)?Come vengono analizzati i nomi delle immagini della finestra mobile?
sto vedendo quanto segue dal 1.1 image spec:
Tag
Un tag serve per mappare un nome descrittivo, user-data ad ogni singola immagine ID. I valori di tag sono limitati al set di caratteri [a-zA-Z_0-9].
Repository
Una collezione di etichette raggruppate sotto un prefisso comune (la componente del nome prima :). Ad esempio, in un'immagine taggata con il nome my-app: 3.1.4, my-app è il componente Repository del nome. Il nome del repository è costituito da componenti del nome separati da barre, eventualmente preceduti da un nome host DNS . Il nome host deve essere conforme alle regole DNS standard, ma non può contenere _ caratteri. Se è presente un nome host, è possibile che sia seguito facoltativamente da un numero di porta nel formato: 8080. I componenti del nome possono contenere caratteri minuscoli, cifre e separatori. Un separatore è definito come un punto, uno o due caratteri di sottolineatura o uno o più trattini. Un componente nome non può iniziare o terminare con un separatore.
Per il nome host DNS, è necessario essere pienamente qualificato con punti oppure "my-local-server" è un nome host del registro valido? Per i componenti del nome, vedo periodi come validi, il che implica che "team.user/appserver" è un nome immagine valido. Se il server del registro è in esecuzione sulla porta 80 e quindi non è necessario alcun numero di porta sul nome host nel nome dell'immagine, sembra che ci sarebbe un'ambiguità tra il nome host e il percorso sul server del registro. Sono curioso di sapere come Docker risolve quell'ambiguità.
secondo l'immagine-spec il tag è limitato a 127 caratteri. Quindi penso che il tag regex dovrebbe essere /[\w][ww] {0,126}/ –
La lunghezza regolare è da 0 a 127 caratteri, quindi penso che sia giusto. In caso contrario, questo sarebbe un PR per cambiare questo: https://github.com/docker/distribution/blob/master/reference/regexp.go#L37 – BMitch
Ecco come lo immagino .... Comincia l'espressione regolare [/w][\w.-]{0,127} e non c'è | tra i [ ]. Quindi significa abbinare a/w e quindi abbinare fino a 127 \ w o punto o trattino. Provando /^([\w][ww-]{0,4})$/.match('ssss- ') in irb di Ruby conferma che quei 5 caratteri sono consumati ... –