Câu trả lời:
Đối với phiên bản v17.09.0-ce và mới hơn
Sử dụng các tùy chọn lá cờ --chown=<user>:<group>
với một trong hai ADD
hoặc COPY
lệnh.
Ví dụ
COPY --chown=<user>:<group> <hostPath> <containerPath>
Tài liệu cho cờ --chown hiện có trên trang Tham khảo Dockerfile chính .
Số phát hành 34263 đã được hợp nhất và có sẵn trong phiên bản v17.09.0-ce .
Đối với các phiên bản cũ hơn v17.09.0-ce
Docker không hỗ trợ COPY
như một người dùng khác ngoài root. Bạn cần phải chown
/ chmod
tập tin sau khi các COPY
lệnh.
Ví dụ 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"]
Trước v17.09.0-ce, Tham chiếu Dockerfile cho COPY
lệnh đã nói:
Tất cả các tệp và thư mục mới được tạo với UID và GID bằng 0.
Lịch sử Tính năng này đã được theo dõi thông qua nhiều vấn đề GitHub: 6119 , 9943 , 13600 , 27.303 , 28.499 , Issue 30.110 .
Vấn đề 34263 là vấn đề đã triển khai chức năng cờ tùy chọn và Vấn đề 467 đã cập nhật tài liệu.
chown
trên 40 MB tệp).