Bạn có 3 phương pháp để lấy bí mật cho một ứng dụng bên trong thùng chứa docker. 2 đầu tiên liên quan đến cấu hình docker. Việc cuối cùng là để ứng dụng của bạn lấy trực tiếp các bí mật từ một cửa hàng bí mật.
1 - Biến môi trường
Theo hướng dẫn "Ứng dụng 12 yếu tố" , các bí mật chỉ là cấu hình và chúng phải luôn được đặt trong môi trường. Bạn có thể đặt bí mật của mình làm các biến môi trường trong quá trình chạy docker và ứng dụng của bạn truy cập chúng từ đó.
2 - Khối lượng gắn kết
Bạn có thể có tất cả các bí mật của mình trong một tệp cấu hình / bí mật cụ thể, sau đó gắn nó vào thể hiện của bạn dưới dạng một khối lượng được gắn kết .
3 - Lấy từ cửa hàng bí mật
Như @ 030 đã đề cập, bạn có thể sử dụng Hashicorp Vault (hoặc "Trình quản lý bí mật của Amazon" hoặc bất kỳ dịch vụ nào như vậy).
Ứng dụng của bạn hoặc ứng dụng sidecar có thể lấy trực tiếp các bí mật mà nó cần mà không phải xử lý bất kỳ cấu hình nào trên bộ chứa Docker. Phương pháp này sẽ cho phép bạn sử dụng các bí mật được tạo động (một tính năng rất hấp dẫn của các hệ thống như vậy) và không phải lo lắng về các bí mật có thể xem được từ hệ thống tệp hoặc kiểm tra các biến env của bộ chứa docker.
Ý kiến cá nhân
Tôi tin rằng các biến env là con đường để đi. Việc quản lý dễ dàng hơn và bạn vẫn có thể lấy từ một cửa hàng bí mật như Hashicorp Vault, nếu bạn có hệ thống xây dựng CI, hãy lấy các bí mật trong quá trình xây dựng và thiết lập chúng khi bạn triển khai. Bạn có được điều tốt nhất của cả hai thế giới và lợi ích gia tăng của các nhà phát triển của bạn không cần phải viết mã ứng dụng để tìm nạp bí mật. Các nhà phát triển nên tập trung vào chức năng mã của họ và không xử lý các tác vụ quản trị viên như tìm nạp mật khẩu.
Mã ứng dụng của bạn nên tập trung vào chính chức năng ứng dụng của chính nó và không xử lý các tác vụ phụ trợ như tìm nạp mật khẩu. Giống như ứng dụng 12 yếu tố.
Chỉnh sửa: đã thay đổi câu cuối cùng để xóa hàm ý của Nhà phát triển so với SysAdmin silo-ing. Bản thân các nhiệm vụ nên tách biệt khỏi phối cảnh mã, nhưng DevOps là về cùng một người luôn ghi nhớ và không bị giới hạn.
Ý kiến cá nhân (Cập nhật)
Nhận xét tuyệt vời của Per @ Dirk ( Truyền bí mật cho container Docker ), có một lập luận rất mạnh mẽ để ưu tiên một cửa hàng bí mật trên các lọ ENV, do không muốn rò rỉ chúng.