SwarmクラスタなしでDockerシークレットを使用する方法は?


29

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

実行コマンドにそれらを置いて、イメージとリポジトリに行き着かないようにしますが、非常に安全ではない実行コマンドになります

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

宜しくお願いします、


6
群れなし使用上の秘密にはいくつかの方法がありますblog.mikesir87.io/2017/05/...
アレクサンドルAksarin

回答:


6

できません... Swarmなしでは秘密をサポートしません。「可能」でない限り、1つのノードのみを使用して「スウォーム」します。

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

https://www.vaultproject.io/

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

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


実際、コンテナを作成するときにこれらのシークレットを注入するだけで、実行中のコンテナ内に「シークレット」のままである必要はありません。したがって、ホストがdocker runコマンド、私はvaultへの置き換えと呼び出しの束でスクリプトを書くことができると思います。
フアンセバスチャン

@JuanSebastianユースケースについては、Docker 'build-args'を確認してください。
user23390

私は.....間違っているかもしれませんが、地元のENVを取得することを確認してください.... thosesビルド引数の内側ではありません何を与えるだろう@JuanSebastian
利回り

build-args最終イメージには含まれませんが、イメージのビルド時にのみアクセスできます。適切なソリューションは、ホスト上のファイルにシークレットを書き込み(もちろん、適切なアクセス許可を使用して)、それらをドッカーコンテナーにボリュームマウントすることです。コンテナ内のアプリケーションは、これらのファイルから秘密を読み取ることができます
Brandon

22

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

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シークレットを使用した実用的な例を見せていただけますか?ドキュメントと実装の私の理解は、シークレットがコンテナで設定されないことを示しています。
BMitch

2
Dockerシークレットは、スタンドアロンコンテナではなく、Swarmサービスでのみ使用できます。この機能を使用するには、コンテナをサービスとして実行するように調整することを検討してください。ステートフルコンテナは通常、コンテナコードを変更せずにスケール1で実行できます。ドッカー
アルウィンケスラー

@BMitch例を追加しました。それがあなたを助けることを願っています!(それは私がドッキングウィンドウで働いているし、私の環境はかなり多くに行くしているので、しばらくされている...しかし、私は、これは動作するはずだと思う私が何かを逃した場合は私に知らせてください。!)
リンゼイ・ニーズ・スリープ

Swarmなしのサービス(docker-compose.yml単一ノード上)でこれを複製することはできません。コンテナを起動すると、/runのみが含まれ、nginx.pidMounts表示されませんdocker inspect $container
giorgiosironi

2
これを単純なdocker-compose(swarmなし)に追加したPRにリンクすると思いました。github.com/docker/compose/pull/4368それは本当にそこにあり、コードからは、構成ファイルの最小バージョンは3.1で、APIは1.13.0のように見えます。コードは現在のマスター(github.com/dnephin/compose/blob/…)にあるため、最大バージョンは期待できません。
ssnobody
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.