Come posso copiare Docker come non root?


143

Durante la creazione di un'immagine Docker, come posso creare COPYun file nell'immagine in modo che il file risultante sia di proprietà di un utente diverso da root?

Risposte:


206

Per le versioni v17.09.0-ce e successive

Utilizzare il flag opzionale --chown=<user>:<group>con i comandi ADDo COPY.

Per esempio

COPY --chown=<user>:<group> <hostPath> <containerPath>

La documentazione per il flag --chown è ora disponibile nella pagina di riferimento del file Docker principale .

Il numero 34263 è stato unito ed è disponibile nella versione v17.09.0-ce .


Per versioni precedenti alla v17.09.0-ce

Docker non supporta COPYcome utente diverso da root. È necessario chown/ chmodil file dopo il COPYcomando.

File Docker di esempio:

from centos:6
RUN groupadd -r myuser && adduser -r -g myuser myuser
USER myuser
#Install code, configure application, etc...
USER root
COPY run-my-app.sh /usr/local/bin/run-my-app.sh
RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \
    chmod 744 /usr/local/bin/run-my-app.sh
USER myuser
ENTRYPOINT ["/usr/local/bin/run-my-app.sh"]

Prima della v17.09.0-ce, il Dockerfile Reference per il COPYcomando diceva:

Tutti i nuovi file e directory vengono creati con un UID e GID pari a 0.


Storia Questa caratteristica è stata monitorata attraverso molteplici temi GitHub: 6119 , 9943 , 13600 , 27303 , 28499 , Problema 30110 .

Il numero 34263 è il problema che ha implementato la funzionalità flag opzionale e il numero 467 ha aggiornato la documentazione.


3
Questo è frustrante, dal momento che scaricare molti file è diventato incredibilmente lento poiché l'overlay2 è diventato il driver di archiviazione predefinito
hbogert

1
Sì, inoltre, crea un grande livello di immagine extra senza motivo apparente (nel mio caso:> 300 MB per l'esecuzione chownsu 40 MB di file).
Dirk,

C'è anche un vantaggio per l'esecuzione di chown insieme al comando COPY che è la riduzione delle dimensioni. Se eseguiamo questi due comandi separatamente (COPY <percorso_host> <percorso_origine>; chown altro_utente: altro_utente), creerebbe un ulteriore livello che alla fine raddoppia la dimensione dell'immagine.
Abhishek Thakur,

Questa risposta è un vero toccasana. Grazie mille, risolto un problema che avevo combattuto per alcune ore.
Colby Hill il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.