แน่นอนมันเป็นเรื่องกังวล โดยทั่วไปแล้ว Dockerfiles จะถูกเช็คอินในที่เก็บและแชร์กับผู้อื่น อีกทางเลือกหนึ่งคือการให้ข้อมูลประจำตัวใด ๆ (ชื่อผู้ใช้, รหัสผ่าน, สัญญาณอะไรที่สำคัญ) เป็นตัวแปรสภาพแวดล้อมที่รันไทม์ นี้เป็นไปได้ผ่าน-eอาร์กิวเมนต์ (สำหรับ vars แต่ละ CLI) หรือ--env-fileอาร์กิวเมนต์ (สำหรับตัวแปรหลายในไฟล์) docker runเพื่อ อ่านสิ่งนี้เพื่อการใช้งานด้านสิ่งแวดล้อมด้วยนักแต่งเพลง
ใช้--env-fileเป็นมั่นเหมาะตัวเลือกที่ปลอดภัยตั้งแต่นี้ช่วยป้องกันความลับที่แสดงในหรือในบันทึกถ้าใครใช้psset -x
อย่างไรก็ตาม env vars ก็ไม่ได้ปลอดภัยเช่นกัน พวกเขาสามารถมองเห็นได้ผ่านdocker inspectและด้วยเหตุนี้พวกเขาจะสามารถใช้ได้กับผู้ใช้ที่สามารถเรียกใช้dockerคำสั่ง (แน่นอนว่าผู้ใช้ทุกคนที่มีสิทธิ์เข้าถึงdockerบนโฮสต์นั้นก็มีรูทด้วย)
รูปแบบที่แนะนำของฉันคือการใช้สคริปต์เสื้อคลุมเป็นหรือENTRYPOINT CMDสคริปต์ตัวตัดคำแรกสามารถนำเข้าข้อมูลลับจากตำแหน่งภายนอกไปยังคอนเทนเนอร์ในขณะดำเนินการจากนั้นเรียกใช้แอปพลิเคชันโดยระบุความลับ กลไกที่แน่นอนของสิ่งนี้แตกต่างกันไปตามสภาพแวดล้อมของเวลาทำงานของคุณ ใน AWS คุณสามารถใช้การรวมกันของบทบาท IAM, Key Management Serviceและ S3 เพื่อเก็บความลับที่เข้ารหัสไว้ในที่เก็บ S3 สิ่งที่ชอบHashiCorp Vaultหรือcredstashเป็นอีกทางเลือกหนึ่ง
AFAIK ไม่มีรูปแบบที่เหมาะสมที่สุดสำหรับการใช้ข้อมูลที่ละเอียดอ่อนเป็นส่วนหนึ่งของกระบวนการสร้าง อันที่จริงฉันมีคำถาม SOในหัวข้อนี้ คุณสามารถใช้นักเทียบท่าสควอชเพื่อลบเลเยอร์ออกจากรูปภาพ แต่ไม่มีฟังก์ชั่นพื้นฐานใน Docker สำหรับจุดประสงค์นี้
คุณอาจพบความคิดเห็น shykes ในการกำหนดค่าในภาชนะที่มีประโยชน์