Podczas budowania obrazu Docker, jak mogę COPY
plik do obrazu, aby wynikowy plik był własnością użytkownika innego niż root?Jak wykonać dokowanie jako roota?
Odpowiedz
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.
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
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