2014-09-25 25 views
27

Có cách nào thanh lịch để thêm chứng chỉ ssl vào hình ảnh đến từ docker pull không ?.giấy chứng nhận ssl container docker

Tôi đang tìm cách đơn giản và có thể lặp lại để thêm tệp vào/etc/ssl/certs và chạy cập nhật-ca-chứng chỉ. (Điều này sẽ bao gồm ubuntu và debian hình ảnh).

Tôi đang sử dụng docker trên CoreOS và máy coreos tin cậy các chứng chỉ ssl cần thiết, nhưng các vùng chứa docker rõ ràng chỉ có mặc định.

Tôi đã thử sử dụng docker run --entrypoint=/bin/bash để sau đó thêm chứng chỉ và chạy update-ca-certificates, nhưng điều này dường như vĩnh viễn ghi đè điểm nhập.

Tôi cũng tự hỏi bây giờ, sẽ thanh lịch hơn khi chỉ gắn /etc/ssl/certs trên vùng chứa từ máy chủ sao chép? Làm điều này sẽ ngầm cho phép các thùng chứa tin tưởng những thứ tương tự như máy chủ.

tôi tại nơi làm việc với một proxy gây phiền nhiễu mà từ chức tất cả mọi thứ :(Mà phá vỡ SSL và làm cho container loại của lạ để làm việc với

+1

Bạn có nghĩ đến việc tạo Dockerfile có thể sử dụng hình ảnh của bạn, thêm tệp và chạy cập nhật-ca-chứng chỉ không? hoặc đó không phải là những gì bạn đang tìm kiếm? –

+0

Tôi đã làm điều đó cho một số hình ảnh. Nó không phải là một giải pháp tồi. Có yêu cầu bạn phải xây dựng trên tất cả các hình ảnh với mặc dù của riêng bạn. –

Trả lời

34

Gắn kết các Certs vào Docker chứa sử dụng -v:..

docker run -v /host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates" 
+2

Điều đó khá tiện lợi. Nếu vùng chứa sử dụng cùng một kiểu ssl_certs, bạn thậm chí không cần dòng cập nhật-ca-chứng chỉ, máy chủ lưu trữ có thể đã thực hiện nó :). –

10

Như đã được đề xuất trong một comment above, nếu lưu trữ chứng chỉ trên máy chủ tương thích với vị khách, bạn chỉ có thể gắn nó trực tiếp.

O n máy chủ Debian (và vùng chứa), tôi đã thực hiện thành công:

docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ... 
9

Tôi đang cố gắng làm điều gì đó tương tự như thế này. Như đã nhận xét ở trên, tôi nghĩ bạn sẽ muốn tạo một hình ảnh mới với một Dockerfile tùy chỉnh (sử dụng hình ảnh bạn đã kéo làm hình ảnh cơ sở), ADD chứng chỉ của bạn, sau đó RUN update-ca-certificates. Bằng cách này, bạn sẽ có trạng thái nhất quán mỗi lần bạn bắt đầu vùng chứa từ hình ảnh mới này.

# Dockerfile 
FROM some-base-image:0.1 
ADD you_certificate.crt:/container/cert/path 
RUN update-ca-certificates 

Hãy nói rằng một docker build so với Dockerfile sản xuất IMAGE_ID. Vào ngày docker run -d [any other options] IMAGE_ID tiếp theo, vùng chứa bắt đầu bằng lệnh đó sẽ có thông tin chứng chỉ của bạn. Đơn giản và tái sản xuất.

+0

Thông thường tôi thích giải pháp docker run -v được đề cập trong các câu trả lời khác. Nhưng giải pháp của bạn cũng hoạt động nếu bạn cần chứng chỉ trong khi xây dựng docker. Cảm ơn! – bastian

+3

Tôi sẽ cảnh giác với việc đưa chứng chỉ vào bất kỳ thùng chứa công cộng nào. Một người khác có thể kéo thùng chứa của bạn và trích xuất chứng chỉ riêng của bạn. – skibum55

+2

Trong khi đó là một điểm rất tốt, giải pháp trên không làm bất cứ điều gì công khai. Điều này có nghĩa là thêm chứng chỉ của riêng bạn vào một hình ảnh được xây dựng cục bộ và sau đó được sử dụng riêng tư. Bạn _could_ sau đó đẩy hình ảnh kết quả vào một kho lưu trữ công cộng, nhưng đó sẽ là một ý tưởng tồi như bạn đã nói. – shudgston

Các vấn đề liên quan