[解決済み] docker-compose v3.1でsecret値をどのように管理するのですか?
質問
docker-compose.yml仕様のバージョン3.1では、以下のサポートが導入されています。 秘密 .
こんなことをやってみました。
version: '3.1'
services:
a:
image: tutum/hello-world
secret:
password: the_password
b:
image: tutum/hello-world
$ docker-compose up
を返します。
Unsupported config option for services.secret: 'password'
シークレット機能は、実際にどのように使えばいいのでしょうか?
どのように解決するのですか?
を読むことができます。 公式ドキュメントの該当箇所 .
secretを使用するには、以下の2点を
docker-compose.yml
ファイルを作成します。まず、トップレベルの
secrets:
ブロックがあり、すべてのシークレットを定義しています。次に、別の
secrets:
ブロックは、各サービスの下にある
どの
の秘密は、サービスが受け取るべきものです。
例として、Dockerが理解できる2種類のsecretを作成します。 外部 の秘密と ファイル の秘密です。
1. を使用して「外部」シークレットを作成します。
docker secret create
まず最初に、Dockerでsecretを使用するには、あなたのいるノードがswarmの一部である必要があります。
$ docker swarm init
次に、「外部」シークレットを作成します。
$ echo "This is an external secret" | docker secret create my_external_secret -
(最後のダッシュを必ず入れてください。
-
. 見逃しがちです)
2. 別の秘密をファイルに書き込む
$ echo "This is a file secret." > my_file_secret.txt
3. を作成します。
docker-compose.yml
ファイルでは、両方のシークレットを使用します。
両方のタイプのシークレットが作成されたので、以下は
docker-compose.yml
このファイルは、その両方を読み込み、それらを
web
サービスを提供します。
version: '3.1'
services:
web:
image: nginxdemos/hello
secrets: # secrets block only for 'web' service
- my_external_secret
- my_file_secret
secrets: # top level secrets block
my_external_secret:
external: true
my_file_secret:
file: my_file_secret.txt
Dockerは、自身のデータベースからsecretを読み込むことができます。
docker secret create
) またはファイルからです。上記は両方の例を示しています。
4. テストスタックをデプロイする
を使ってスタックをデプロイします。
$ docker stack deploy --compose-file=docker-compose.yml secret_test
これは、1つのインスタンスを作成します。
web
という名前のサービスです。
secret_test_web
.
5. サービスによって作成されたコンテナが、両方のシークレットを持つことを確認する
使用する
docker exec -ti [container] /bin/sh
を使用して、秘密が存在することを確認します。
(注)以下の
docker exec
コマンドでは
m2jgac...
の部分は、あなたのマシンでは異なるでしょう。実行
docker ps
をクリックすると、コンテナ名が表示されます)。
$ docker exec -ti secret_test_web.1.m2jgacogzsiaqhgq1z0yrwekd /bin/sh
# Now inside secret_test_web; secrets are contained in /run/secrets/
root@secret_test_web:~$ cd /run/secrets/
root@secret_test_web:/run/secrets$ ls
my_external_secret my_file_secret
root@secret_test_web:/run/secrets$ cat my_external_secret
This is an external secret
root@secret_test_web:/run/secrets$ cat my_file_secret
This is a file secret.
うまくいけば、手順 1 と 2 で作成した 2 つの secret が
web
コンテナは、スタックをデプロイしたときに作成されたものです。
関連
-
[解決済み] ファイル全体を見たり、ファイル全体を走査するのを待たずに、ログの現在の位置からドッカーログをテールする方法
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み] Docker-Composeを使用して、複数のコマンドを実行する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】Docker ComposeはYを起動する前にコンテナXを待ちます。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] docker-compose: バインドマウントとマネージドマウントのマウントを定義する
-
[解決済み] docker-machine: コマンドが見つかりません。
-
[解決済み] Docker: 停止したDockerコンテナを表示する
-
[解決済み] kubernetesでPodを停止/一時停止する方法
-
[解決済み】終了したDockerコンテナを継続する方法
-
[解決済み】Dockerでディレクトリを変更するコマンドは?
-
[解決済み】Dockerエラーは、Dockerコンテナを削除することはできません、競合:リポジトリ参照を削除することはできません。
-
[解決済み] standard_init_linux.go:190: exec user process caused "no such file or directory" - Docker
-
[解決済み】DockerFileの "VOLUME "命令を理解する。
-
[解決済み】非 root で Docker COPY するには?