web-dev-qa-db-ja.com

DockerコンテナSSL証明書

Docker pullからの画像にSSL証明書を追加するエレガントな方法はありますか?.

/ etc/ssl/certsにファイルを追加し、update-ca-certificatesを実行する簡単で再現可能な方法を探しています。 (これはubuntuとdebianの画像をカバーするはずです)。

CoreOSでdockerを使用しており、coreosマシンは必要なssl証明書を信頼していますが、dockerコンテナには明らかにデフォルトしかありません。

docker run --entrypoint=/bin/bashを使用して証明書を追加し、update-ca-certificatesを実行しようとしましたが、これによりエントリポイントが永続的に上書きされるようです。

また、ホストマシンのコピーからコンテナに/etc/ssl/certsをマウントする方がよりエレガントになるのではないかと思います。これを行うと、コンテナは暗黙的にホストと同じものを信頼できます。

私はすべてを辞任する迷惑なプロキシで働いています:(。これはSSLを壊し、コンテナを扱うのが奇妙になります。

61
Beau Trepp

証明書をDockerにマウントしますcontainer using -v

docker run -v /Host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates"
57
cdrev

これに似たようなことをしようとしています。上記でコメントしたように、カスタムDockerfile(ベースイメージとしてプルしたイメージを使用)、ADD、証明書、そしてRUN update-ca-certificatesを使用して新しいイメージを作成すると思います。これにより、この新しいイメージからコンテナを起動するたびに一貫した状態になります。

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

そのDockerfileに対するdocker buildがIMAGE_IDを生成したとしましょう。次のdocker run -d [any other options] IMAGE_IDで、そのコマンドによって開始されたコンテナーに証明書情報が含まれます。シンプルで再現可能。

20
shudgston

上記のコメント で提案されたように、ホスト上の証明書ストアがゲストと互換性がある場合、直接マウントすることができます。

Debianホスト(およびコンテナ)で、私は成功しました:

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