Tl;dr
Sensitive Data
はどう管理すればいいのか、良い方法を知りたい- Usernames and passwords
- TLS certificates and keys
- SSH keys
- Other important data such as the name of a database or internal server
- Generic strings or binary content (up to 500 kb in size)
Docker secret
を使って極秘データを一元に管理できる、利用のコンテナだけに安全で渡せるDocker secrets
are only available toswarm services
, not to standalone containers
Docker containerを立ち上げる時に秘密な情報などをコンテナにどう渡せばよいかについて調べましたのでメモです。Docker Secret
があります。
- Docker Secretを利用しないDocker compose:
1
2
3
4
5
6
7
8
9
10mongo:
image: mongodb
ports:
- 27017:27017
environment:
- MONGO_INITDB_DATABASE=mydb
- MONGO_INITDB_ROOT_USERNAME=rootuser
- MONGO_INITDB_ROOT_PASSWORD=rootpassword
volumes:
- mongo-db:/data/db - Docker Secretを利用するDocker compose:secretsで
1
2
3
4
5
6
7
8
9
10
11
12
13
14services:
mongo:
image: mongodb
ports:
- 27017:27017
environment:
- MONGO_INITDB_DATABASE=mydb
- MONGO_INITDB_ROOT_USERNAME_FILE=rootuser
- MONGO_INITDB_ROOT_PASSWORD_FILE=/run/secrets/db_root_password
volumes:
- mongo-db:/data/db
secrets:
db_root_password:
file: db_password.txtdb_root_password
の秘密データを定義されます。
サービス開始するとき、Dockerは/run/secrets/<key-name>
にマウントします。