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 ADDhoặc COPYlệ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ợ COPYnhư một người dùng khác ngoài root. Bạn cần phải chown/ chmodtập tin sau khi các COPYlệ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 COPYlệ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.
chowntrên 40 MB tệp).