6.1 コマンド docker config
Docker は、設定ファイルや秘密データを安全に管理するための組み込みのメカニズムを提供しているよ。これを使うと、コンテナで設定ファイルや機密データを簡単に扱えるんだ。これらのメカニズムはセキュリティを向上させたり、分散システムの設定管理を簡略化するのに役立つよ。この講義では、docker config
と docker secret
のコマンドの使い方、例、それからベストプラクティスについて見ていくね。
設定の基本的な使い方
docker config
コマンド は、Docker Swarm のサービスで使える設定ファイルを管理するためのものだよ。設定はアプリケーションの設定やパラメータを簡単に渡す方法を提供してくれるんだ。
docker config
の基本コマンド
docker config create
— 新しい設定を作成するdocker config ls
— 全ての設定をリスト表示する-
docker config inspect
— 設定の詳細情報を取得する docker config rm
— 設定を削除する
docker config
を使った例
設定の作成
設定を作成するには docker config create
コマンドを使うんだ。例えば、Nginx 用の設定ファイルを作成する例を見てみよう。
nginx.conf
ファイルを作成する:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
server {
listen 80;
location / {
return 200 'こんにちは、世界!';
add_header Content-Type text/plain;
}
}
}
Docker で設定を作成する:
docker config create nginx_config ./nginx.conf
2. 全ての設定のリスト表示
作成された全ての設定を見るには、docker config ls
コマンドを使うよ:
docker config ls
コマンドの出力例:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 nginx_config 10 seconds ago 10 seconds ago
3. サービスでの設定の利用
作成した設定を使用してサービスを作成する:
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p 8080:80 nginx
4. 設定の削除
設定を削除するには、docker config rm
コマンドを使うよ:
docker config rm nginx_config
6.2 コマンド docker secret
コマンド docker secret
は、パスワード、APIキー、証明書のような「シークレット」を安全に管理するためのものだよ。これらはDocker Swarmで使うサービスが安全に利用できるんだ。シークレットは暗号化されて保存されて、使うサービスだけがアクセスできるよ。
主なコマンド docker secret
docker secret create
— 新しいシークレットを作るdocker secret ls
— 全シークレットのリストを見るdocker secret inspect
— シークレットの情報を確認するdocker secret rm
— シークレットを削除する
使い方の例 docker secret
1. シークレットの作成
シークレットを作るには docker secret create
コマンドを使うよ。例として、データベースパスワードのシークレットを作成しよう。
db_password.txt
というファイルを作成しよう:
mysecretpassword
Dockerでシークレットを作成する:
docker secret create db_password ./db_password.txt
2. 全シークレットのリスト
全ての作成済みシークレットを確認するには docker secret ls
コマンドを使うよ:
docker secret ls
コマンドの出力:
ID NAME CREATED UPDATED
f8f8ff8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8 db_password 10 seconds ago 10 seconds ago
3. サービスでのシークレットの使用
作成したシークレットを使用してサービスを作成しよう:
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
4. シークレットの削除
シークレットを削除するには docker secret rm
コマンドを使うよ:
docker secret rm db_password
6.3 実践例とベストプラクティス
実践例とベストプラクティス
例1: Webアプリでの設定とシークレットの使用
設定ファイルとシークレットの作成
echo "user www-data;" > ./nginx.conf
echo "worker_processes auto;" >> ./nginx.conf
docker config create nginx_config ./nginx.conf
echo "mysecretpassword" > ./db_password.txt
docker secret create db_password ./db_password.txt
設定とシークレットを使用するサービスの作成
docker service create --name nginx --config source=nginx_config,target=/etc/nginx/nginx.conf -p
8080:80 nginx
docker service create --name postgres --secret db_password -e
POSTGRES_PASSWORD_FILE=/run/secrets/db_password postgres
例2: 設定の更新
設定ファイルの内容を更新する
nginx.conf
ファイルを変更してください:
user www-data;
worker_processes 4;
新しいバージョンの設定を作成する
docker config create nginx_config_v2 ./nginx.conf
新しい設定でサービスを更新する
docker service update --config-rm nginx_config --config-add
source=nginx_config_v2,target=/etc/nginx/nginx.conf nginx
GO TO FULL VERSION