2014-09-25 28 views
27

Czy istnieje elegancki sposób dodawania certyfikatów ssl do obrazów pochodzących z funkcji dokowania?certyfikaty ssl kontenera kontenera

Szukam prostego i powtarzalnego sposobu dodawania pliku do/etc/ssl/certs i uruchamiania aktualizacji-ca-certyfikatów. (Powinno to obejmować obrazy ubuntu i debian).

Używam programu do obsługi dokowania w systemie CoreOS, a urządzenie typu coreos ufa potrzebnym certyfikatom SSL, ale kontenery dokowane mają oczywiście domyślną wartość.

Próbowałem użyć docker run --entrypoint=/bin/bash, aby dodać certyfikat i uruchomić update-ca-certificates, ale wydaje się, że to na stałe zastąpiło punkt wejścia.

Zastanawiam się teraz, czy bardziej elegancko byłoby po prostu zamontować /etc/ssl/certs na kontenerze z kopii komputera hosta? Wykonanie tej czynności domyślnie pozwoliłoby kontenerom na zaufanie tym samym rzeczom co host.

jestem w pracy z irytujące pełnomocnika że rezygnuje wszystko :(który rozkłada SSL i sprawia, że ​​pojemniki na rodzaj dziwne pracować

+1

Czy zastanawiałeś się nad stworzeniem pliku Docker, który użyłby Twojego obrazu, dodałbyś plik i uruchom aktualizację-ca-certyfikatów? czy nie tego szukasz? –

+0

Zrobiłem to dla niektórych obrazów. To nie jest złe rozwiązanie. Wymaga budowania na wszystkich obrazach z własnym. –

Odpowiedz

34

zamontować certyfikatów na pojemniku Docker użyciu -v..

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

To całkiem fajne. Jeśli kontener używa tego samego stylu ssl_certs, nie potrzebujesz nawet linii update-ca-certificates, host już by to zrobił :). –

10

Jak sugerowano w comment above, jeśli magazyn certyfikatów na komputerze jest kompatybilny z gościem, można po prostu zamontować go bezpośrednio.

o n Host Debiana (i kontener), udało mi się:

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

Próbuję zrobić coś podobnego do tego. Jak wspomniano powyżej, myślę, że chciałbyś zbudować nowy obraz z niestandardowym plikiem Docker (używając obrazu, który wyciągnąłeś jako podstawowy obraz), ADD twój certyfikat, a następnie RUN update-ca-certificates. W ten sposób będziesz mieć spójny stan za każdym razem, gdy otworzysz kontener z tego nowego obrazu.

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

powiedzmy docker build przeciwko tej Dockerfile produkowanego IMAGE_ID. W następnym docker run -d [any other options] IMAGE_ID kontener uruchomiony przez to polecenie będzie zawierał informacje o twoim certyfikacie. Prosty i powtarzalny.

+0

Zwykle wolałbym, aby rozwiązanie do-dokowania -v wspomniane w innych odpowiedziach. Ale twoje rozwiązanie działa również, jeśli potrzebujesz certyfikatów podczas budowania dockingu. Dzięki! – bastian

+3

Byłbym nieufny wobec umieszczania certyfikatów w dowolnym publicznym pojemniku. Ktoś inny może wyciągnąć kontener i wyodrębnić prywatne certyfikaty. – skibum55

+2

Chociaż jest to bardzo dobry punkt, powyższe rozwiązanie nie czyni nic publicznego. Ma to na celu dodanie własnych certyfikatów do obrazu, który jest zbudowany lokalnie, a następnie używany prywatnie. Ty możesz wtedy przekazać wynikowy obraz do publicznego repozytorium, ale to byłby zły pomysł, jak powiedziałeś. – shudgston