Docker COPY'yi root olmayan olarak nasıl kullanabilirim?


143

Docker görüntüsü COPYoluştururken, ortaya çıkan dosyanın root dışındaki bir kullanıcıya ait olması için görüntüye nasıl dosya eklerim ?

Yanıtlar:


206

V17.09.0-ce ve daha yeni sürümler için

Opsiyonel bayrağını kullanın --chown=<user>:<group>biriyle ADDveya COPYkomutlar.

Örneğin

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

--Chown bayrağıyla ilgili belgeler artık ana Dockerfile Başvuru sayfasında yayınlanmaktadır .

Sayı 34263 birleştirildi ve v17.09.0-ce sürümünde mevcut .


V17.09.0-ce'den daha eski sürümler için

Docker, COPYroot dışında bir kullanıcı olarak desteklenmez . Sen gerek chown/ chmoddosyanın sonraCOPY komuta.

Örnek Dockerfile:

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"]

V17.09.0-ce'den önce, komutun Dockerfile Başvurusu COPYşunları söyledi:

Tüm yeni dosyalar ve dizinler UID ve GID 0 ile oluşturulur.


Geçmiş Bu özellik birçok GitHub sorunu ile izlenmiştir: 6119 , 9943 , 13600 , 27303 , 28499 , Sayı 30110 .

Sayı 34263 , isteğe bağlı bayrak işlevini uygulayan sorundur ve Sayı 467 , belgeleri güncelleştirmiştir.


3
Bu çok canlandırıcıdır, çünkü bindirme2 varsayılan depolama sürücüsü haline geldiğinden çok fazla dosya kesilmesi inanılmaz derecede yavaş hale gelmiştir
hbogert

1
Evet, ayrıca, belirgin bir sebep olmadan büyük bir ekstra görüntü katmanı oluşturur (benim durumumda: chown40MB dosyalarda çalıştırmak için> 300MB ).
Dirk

Boyut küçültme olan KOPYA komutu ile birlikte chown çalıştırmanın bir yararı da vardır. Bu iki komutu ayrı olarak çalıştırırsak (COPY <host_path> <source_path>; chown other_user: other_user), daha sonra görüntü boyutunu iki katına çıkaran bir ekstra katman oluşturdu.
abhishek thakur

Bu cevap bir cankurtaran. Çok teşekkür ederim, birkaç saattir savaştığım bir sorunu çözdüm.
Colby Hill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.