現在、単一のdockerコンテナで実行中のアプリケーションを使用しています。アプリケーションでは、環境変数として渡すためにあらゆる種類の機密データが必要です。
実行コマンドにそれらを置いて、イメージとリポジトリに行き着かないようにしますが、非常に安全ではない実行コマンドになります
今、ドッカーシークレットが存在することを理解していますが、クラスターをデプロイせずにどのように使用できますか?または、このデータを保護する他の方法はありますか?
宜しくお願いします、
現在、単一のdockerコンテナで実行中のアプリケーションを使用しています。アプリケーションでは、環境変数として渡すためにあらゆる種類の機密データが必要です。
実行コマンドにそれらを置いて、イメージとリポジトリに行き着かないようにしますが、非常に安全ではない実行コマンドになります
今、ドッカーシークレットが存在することを理解していますが、クラスターをデプロイせずにどのように使用できますか?または、このデータを保護する他の方法はありますか?
宜しくお願いします、
回答:
できません... Swarmなしでは秘密をサポートしません。「可能」でない限り、1つのノードのみを使用して「スウォーム」します。
他の解決策は、次のようなサードパーティ製のボールトソフトウェアを使用することです。
しかし、その後、Vaultのコンテナ内のシークレットを使用するには、ドキュメントを読む必要があります。
これが開始する正しい道にあなたを連れてくることを願っています。
build-args
最終イメージには含まれませんが、イメージのビルド時にのみアクセスできます。適切なソリューションは、ホスト上のファイルにシークレットを書き込み(もちろん、適切なアクセス許可を使用して)、それらをドッカーコンテナーにボリュームマウントすることです。コンテナ内のアプリケーションは、これらのファイルから秘密を読み取ることができます
はい、構成ファイルを使用する場合、シークレットを使用できます。(群れを実行する必要はありません)。
docker-composeで構成ファイルを使用します。docker-compose.ymlファイルには「秘密」のドキュメントがあります。
シークレットを使用したかったため、docker-composeに切り替えました。やったことはうれしいです。各サービスはコンテナにマッピングされます。そして、代わりにスウォームの実行に切り替えたい場合、あなたは基本的にすでにそこにいます。
注:秘密はコンテナーの環境にロードされず、/ run / secrets /にマウントされます
以下に例を示します。
1)プロジェクト構造:
|
|--- docker-compose.yml
|--- super_duper_secret.txt
2)docker-compose.ymlの内容:
version: "3.6"
services:
my_service:
image: centos:7
entrypoint: "cat /run/secrets/my_secret"
secrets:
- my_secret
secrets:
my_secret:
file: ./super_duper_secret.txt
3)super_duper_secret.txtの内容:
Whatever you want to write for a secret really.
4)プロジェクトのルートから次のコマンドを実行して、コンテナがシークレットにアクセスできることを確認します(Dockerが実行され、docker-composeがインストールされている必要があります)。
docker-compose up --build my_service
コンテナがシークレットを出力するのが見えるはずです。
docker-compose
シークレットを使用した実用的な例を見せていただけますか?ドキュメントと実装の私の理解は、シークレットがコンテナで設定されないことを示しています。
docker-compose.yml
単一ノード上)でこれを複製することはできません。コンテナを起動すると、/run
のみが含まれ、nginx.pid
でMounts
表示されませんdocker inspect $container
。