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を壊し、コンテナを扱うのが奇妙になります。
証明書をDockerにマウントしますcontainer using -v
:
docker run -v /Host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates"
これに似たようなことをしようとしています。上記でコメントしたように、カスタム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
で、そのコマンドによって開始されたコンテナーに証明書情報が含まれます。シンプルで再現可能。
上記のコメント で提案されたように、ホスト上の証明書ストアがゲストと互換性がある場合、直接マウントすることができます。
Debianホスト(およびコンテナ)で、私は成功しました:
docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ...