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