2017-06-26 40 views

Odpowiedz

17

Update - Nowa flaga dodawanych do ADD i polecenia COPY

Issue 34263 zostały połączone i jest dostępny w release v17.09.0-ce.

Rozwiązaniem tego problemu jest dodanie --chown=<user>:<group> jako opcjonalne flagi dla obu ADD i COPY poleceń.

Na przykład

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

Dokumentacja dla --chown flaga jest teraz żyć na głównej Dockerfile Reference page.


Docker obecnie nie obsługuje COPY jako użytkownik inny niż root. Musisz wykonać plik chown/chmod po poleceniu COPY.

Przykład Dockerfile:

from centos:6 
RUN groupadd -r slcs && 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"] 

Próbowałem śledzić dyskusję przez wiele zagadnień GitHub: 6119, 9943, 13600, 27303, 28499

W czasie tego postu , Issue 30110 wydaje się być najbardziej aktualnym, który nie ma rozwiązania. Dlatego wydaje się, że nadal nie można tego zrobić przy użyciu zwykłych poleceń dokowania.

Również Dockerfile Reference na komendę COPY nadal mówi, że

Wszystkie nowe pliki i katalogi są tworzone z UID i GID 0.

+0

To frustating, ponieważ chown-ing wiele plików stało się niewiarygodnie powolne, ponieważ nakładka2 stała się domyślnym nośnikiem pamięci – hbogert

+0

Tak, poza tym tworzy dużą dodatkową warstwę obrazu bez wyraźnego powodu (w moim przypadku:> 300 MB na uruchomienie 'chown' na 40 MB plików). – Dirk