web-dev-qa-db-ja.com

スウォームクラスターなしでドッカーシークレットを使用するにはどうすればよいですか?

現在、単一のDockerコンテナーで実行中のアプリケーションをimしています。アプリケーションは、あらゆる種類の機密データを環境変数として渡す必要があります。

それらを実行コマンドに入れてイメージに入れられないようにし、その後リポジトリに入れますが、非常に安全ではない実行コマンドになってしまいます、

今、私はドッカーの秘密が存在することを理解していますが、クラスターをデプロイせずにそれらをどのように使用できますか?またはこのデータを保護する他の方法はありますか?

宜しくお願いします、

37
Juan Sebastian

できません。Swarmがないとシークレットはサポートされません。 「かもしれない」でない限り、1つのノードのみを使用して「スウォーム」します。

他の解決策は、次のようなサードパーティ製のボールトソフトウェアを使用することです。

https://www.vaultproject.io/

ただし、Vaultからコンテナのシークレットを使用するには、ドキュメントを読む必要があります。

これがあなたを正しい道に連れて行くことを願っています。

7
yield

はい構成ファイルを使用する場合、シークレットを使用できます。 (群れを実行する必要はありません)。

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

コンテナーがシークレットを出力するのを確認してください。

33