現在、単一のDockerコンテナーで実行中のアプリケーションをimしています。アプリケーションは、あらゆる種類の機密データを環境変数として渡す必要があります。
それらを実行コマンドに入れてイメージに入れられないようにし、その後リポジトリに入れますが、非常に安全ではない実行コマンドになってしまいます、
今、私はドッカーの秘密が存在することを理解していますが、クラスターをデプロイせずにそれらをどのように使用できますか?またはこのデータを保護する他の方法はありますか?
宜しくお願いします、
できません。Swarmがないとシークレットはサポートされません。 「かもしれない」でない限り、1つのノードのみを使用して「スウォーム」します。
他の解決策は、次のようなサードパーティ製のボールトソフトウェアを使用することです。
ただし、Vaultからコンテナのシークレットを使用するには、ドキュメントを読む必要があります。
これがあなたを正しい道に連れて行くことを願っています。
はい、構成ファイルを使用する場合、シークレットを使用できます。 (群れを実行する必要はありません)。
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
コンテナーがシークレットを出力するのを確認してください。