2016-07-11 55 views
5

Sono in versione artifactory 4.6 e ho il seguente requisito nel registro docker.Reperazione docker anonimo in artifactory

Consenti tira anonime repository finestra mobile autenticazione force sulla repository finestra mobile STESSO

So che questo è avaliable out of the box sulle versioni successive di Artifactory. Tuttavia l'aggiornamento non è un'opzione per noi per un po '.

Il seguente lavoro funziona?

  1. Creare un repository finestra mobile virtuale sulla porta 8443 e non forzare l'autenticazione, lo chiamano finestra mobile virtuale
  2. Creare un repository di autenticazione finestra mobile e forza locale, lo chiamano Docker-locale sulla porta 8444
  3. Configura 'finestra mobile virtuale' con la directory di distribuzione di default come 'finestra mobile-local'

    docker pull docker-virtual should work docker push docker-virtual should ask for credentials

In caso di guasto, dovrei essere in grado di finestra mobile login docker-virtual e docker push docker-virtual/myImage

risposta

1

La cosa più vicina si può ottenere sta fallendo sulla finestra mobile spinta senza credenziali (mentre riuscendo con pull).

+0

cosa succede se un repository finestra mobile virtuale è configurato con una directory di distribuzione di default che l'autenticazione forze? –

+0

Se l'utente non ha effettuato l'accesso, la spinta non avrà esito positivo. Docker non supporta alcun accesso interattivo. O accedi di fronte, con il comando 'login docker', oppure no. – JBaruch

+0

C'è un modo per reindirizzare la porta, in qualche modo accedere come 'doker login virtual-docker-repo' ma questo lo indirizza al repository di distribuzione della finestra mobile locale solo per i push? –

2

Non sono sicuro del lato artefatto, ma forse il seguente consiglio Docker è utile.

si può iniziare a eseguire due registri, uno RW con l'autenticazione, e un secondo RO senza alcuna autenticazione, in Docker:

docker run -d -p 5000:5000 --restart=always --name registry \ 
    -v `pwd`/certs:/certs:ro \ 
    -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \ 
    -v `pwd`/registry:/var/lib/registry \ 
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \ 
    -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \ 
    -e "REGISTRY_AUTH=htpasswd" \ 
    -e "REGISTRY_AUTH_HTPASSWD_REALM=My Registry" \ 
    -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ 
    -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \ 
    registry:2 

docker run -d -p 5001:5000 --restart=always --name registry-ro \ 
    -v `pwd`/certs:/certs:ro \ 
    -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \ 
    -v `pwd`/registry:/var/lib/registry:ro \ 
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \ 
    -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \ 
    -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \ 
    registry:2 

Nota le impostazioni del volume per/var/lib/Registro di sistema in ogni contenitore. Quindi per estrarre dal registro anonimo, basterà cambiare la porta. Poiché il filesystem è RO, qualsiasi tentativo di push su 5001 avrà esito negativo.

+0

Non voglio due endpoint –

0

Non so se questo funziona con artifactory scusa .... potresti provare questo pratico progetto per l'autenticazione del registro docker.

Configurare il Registro di sistema per utilizzare questa https://hub.docker.com/r/cesanta/docker_auth/

# registry config.yml 
... 
auth: 
    token: 
    # can be the same as your docker registry if you use nginx to proxy /auth to docker_auth 
    # https://docs.docker.com/registry/recipes/nginx/ 
    realm: "example.com:5001/auth" 
    service: "Docker registry" 
    issuer: "Docker Registry auth server" 
    rootcertbundle: /certs/domain.crt 

e consentire anonimo con il corrispondente ACL

# cesanta/docker_auth auth_config.yml 
... 

users: 
    # Password is specified as a BCrypt hash. Use htpasswd -B to generate. 
    "admin": 
    password: "$2y$05$LO.vzwpWC5LZGqThvEfznu8qhb5SGqvBSWY1J3yZ4AxtMRZ3kN5jC" # badmin 
    "": {} # Allow anonymous (no "docker login") access. 


ldap_auth: 
    # See: https://github.com/cesanta/docker_auth/blob/master/examples/ldap_auth.yml 

acl: 
    # See https://github.com/cesanta/docker_auth/blob/master/examples/reference.yml#L178 
    - match: {account: "/.+/"} 
    actions: ["*"] 
    comment: "Logged in users do anything." 
    - match: {account: ""} 
    actions: ["pull"] 
    comment: "Anonymous users can pull anything." 
    # Access is denied by default. 
+0

Non l'ho usato ma sembra simile a quello che ho: https://the.binbashtheory.com/creating-private-docker-registry-2-0-with-token-authentication- servizio/ – KCD