ในขณะที่สร้างอิมเมจ Docker ฉันจะCOPY
สร้างไฟล์ลงในอิมเมจได้อย่างไรเพื่อให้ไฟล์ผลลัพธ์เป็นของผู้ใช้อื่นที่ไม่ใช่รูท
ในขณะที่สร้างอิมเมจ Docker ฉันจะCOPY
สร้างไฟล์ลงในอิมเมจได้อย่างไรเพื่อให้ไฟล์ผลลัพธ์เป็นของผู้ใช้อื่นที่ไม่ใช่รูท
คำตอบ:
สำหรับเวอร์ชัน v17.09.0-ce และใหม่กว่า
ใช้แฟล็กทางเลือก--chown=<user>:<group>
กับคำสั่งADD
orCOPY
ตัวอย่างเช่น
COPY --chown=<user>:<group> <hostPath> <containerPath>
เอกสารประกอบสำหรับธง --chown คือตอนนี้อยู่บนหลักหน้า Dockerfile อ้างอิง
ฉบับที่34263ได้รับการรวมและสามารถใช้ได้ในการเปิดตัว v17.09.0-CE
สำหรับเวอร์ชันที่เก่ากว่า v17.09.0-ce
Docker ไม่รองรับCOPY
ในฐานะผู้ใช้อื่นที่ไม่ใช่รูท คุณจำเป็นต้องchown
/ chmod
ไฟล์หลังจากCOPY
คำสั่ง
ตัวอย่าง 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 การอ้างอิง Dockerfile สำหรับCOPY
คำสั่งกล่าวว่า:
ไฟล์และไดเร็กทอรีใหม่ทั้งหมดสร้างขึ้นโดยมี UID และ GID เป็น 0
ประวัติความเป็นมา ที่นี้ได้รับการติดตามผ่านปัญหา GitHub หลาย: 6119 , 9943 , 13600 , 27303 , 28499 , ฉบับที่ 30110
ปัญหา 34263เป็นปัญหาที่ใช้ฟังก์ชันการตั้งค่าสถานะทางเลือกและปัญหา 467อัปเดตเอกสารประกอบ
chown
บนไฟล์ 40MB)