Skip to content

Docker Secrets đŸ¤Ģ ​

āĻĄāĻ•āĻžāϰ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āϏ⧇āύāϏāĻŋāϟāĻŋāĻ­ āϤāĻĨā§āϝ (āϝ⧇āĻŽāύ: āĻĒāĻžāϏāĻ“ā§ŸāĻžāĻ°ā§āĻĄ, āĻāĻĒāĻŋāφāχ āĻ•āĻŋ, āĻĒā§āϰāĻžāχāϭ⧇āϟ āĻ•āĻŋ) āύāĻŋāϰāĻžāĻĒāĻĻ⧇ āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ Docker Secrets āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤ āĻāϟāĻŋ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇āϰ āϤ⧁āϞāύāĻžā§Ÿ āĻ…āύ⧇āĻ• āĻŦ⧇āĻļāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤


ā§§. Docker Secrets āĻ•āĻŋ? ​

Docker Secrets āĻšāϞ⧋ āĻāĻ•āϟāĻŋ āĻĄāĻ•āĻžāϰ āύ⧇āϟāĻŋāĻ­ āĻĢāĻŋāϚāĻžāϰ āϝāĻž āϏ⧇āύāϏāĻŋāϟāĻŋāĻ­ āĻĄā§‡āϟāĻžāϕ⧇ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āĻŸā§‡āĻĄ āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿ āĻ¸ā§āĻŸā§‹āϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰāϕ⧇ āϏ⧇āϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻāĻ•ā§āϏ⧇āϏ āĻĻā§‡ā§ŸāĨ¤

  • āĻāϟāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ Docker Swarm āĻŽā§‹āĻĄā§‡ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšā§Ÿā§‡āĻ›āĻŋāϞāĨ¤
  • āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ Docker Compose-āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϞ⧋āĻ•āĻžāϞ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡āĻ“ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤

⧍. āϕ⧇āύ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ (.env) āϝāĻĨ⧇āĻˇā§āϟ āύ⧟? ​

āĻ…āύ⧇āĻ• āϏāĻŽā§Ÿ āφāĻŽāϰāĻž .env āĻĢāĻžāχāϞ āĻŦāĻž ENV āχāĻ¨ā§āϏāĻŸā§āϰāĻžāĻ•āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϰ āĻ•āĻŋāϛ⧁ āĻā§āρāĻ•āĻŋ āφāϛ⧇:

  • docker inspect āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāϞ⧇ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϗ⧁āϞ⧋ āĻĒā§āϞ⧇āχāύ āĻŸā§‡āĻ•ā§āϏāϟ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžā§ŸāĨ¤
  • āϞāĻ— āĻĢāĻžāχāϞ⧇ āĻāϗ⧁āϞ⧋ āϚāϞ⧇ āφāϏāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āĻĨāĻžāϕ⧇āĨ¤
  • āĻĄāĻ•āĻžāϰ āĻšāĻŋāĻ¸ā§āĻŸā§‹āϰāĻŋāϤ⧇ āĻāϗ⧁āϞ⧋ āĻĨ⧇āϕ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Docker Secrets āĻāχ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ (tmpfs) āĻŽāĻžāωāĻ¨ā§āϟ āĻšā§Ÿ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āϕ⧇ āĻ¸ā§āĻĨāĻžā§Ÿā§€āĻ­āĻžāĻŦ⧇ āϜāĻŽāĻž āĻĨāĻžāϕ⧇ āύāĻžāĨ¤


ā§Š. Docker Compose-āĻ Secrets āĻŦā§āϝāĻŦāĻšāĻžāϰ ​

āϞ⧋āĻ•āĻžāϞāĻŋ āĻĄāĻ•āĻžāϰ āĻ•āĻŽā§āĻĒā§‹āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āφāĻĒāύāĻŋ āύāĻŋāĻšā§‡āϰ āĻŽāϤ⧋ āĻ•āϰ⧇ āϏāĻŋāĻ•ā§āϰ⧇āϟāϏ āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

yaml
services:
  db:
    image: postgres
    secrets:
      - db_password

secrets:
  db_password:
    file: ./password.txt

āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇ āĻāχ āϏāĻŋāĻ•ā§āϰ⧇āϟāϟāĻŋ /run/secrets/db_password āĻĒāĻžāĻĨ⧇ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžāĻŦ⧇āĨ¤


ā§Ē. Docker Swarm āĻŽā§‹āĻĄā§‡ Secrets Management ​

Swarm āĻŽā§‹āĻĄā§‡ āϏāĻŋāĻ•ā§āϰ⧇āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ:

bash
echo "my_super_secret_password" | docker secret create db_pass -

āϏāĻžāĻ°ā§āĻ­āĻŋāϏ āĻ•ā§āϰāĻŋā§Ÿā§‡āϟ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āϏāĻŋāĻ•ā§āϰ⧇āϟ āϝ⧋āĻ— āĻ•āϰāĻž:

bash
docker service create --name my-app --secret db_pass my-image

ā§Ģ. āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻŽāĻžāωāĻ¨ā§āϟāĻŋāĻ‚ (Mounting) ​

āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āϏāĻŋāĻ•ā§āϰ⧇āϟāϏ /run/secrets/<secret_name> āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āĻĨāĻžāϕ⧇āĨ¤ āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏ⧇āχ āĻĢāĻžāχāϞ āĻĨ⧇āϕ⧇ āĻĄā§‡āϟāĻž āϰāĻŋāĻĄ āĻ•āϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤

python
# Python āωāĻĻāĻžāĻšāϰāĻŖ
with open('/run/secrets/db_password', 'r') as f:
    db_password = f.read().strip()

ā§Ŧ. āĻĨāĻžāĻ°ā§āĻĄ-āĻĒāĻžāĻ°ā§āϟāĻŋ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ (HashiCorp Vault) ​

āĻŦ⧜ āĻāĻ¨ā§āϟāĻžāϰāĻĒā§āϰāĻžāχāϜ āϞ⧇āϭ⧇āϞ⧇ āĻĄāĻ•āĻžāϰ⧇āϰ āĻŦāĻŋāĻ˛ā§āϟ-āχāύ āϏāĻŋāĻ•ā§āϰ⧇āϟāϏ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ HashiCorp Vault, AWS Secrets Manager, āĻŦāĻž Azure Key Vault āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤ āĻāϗ⧁āϞ⧋ āϏāĻŋāĻ•ā§āϰ⧇āϟ āϰ⧋āĻŸā§‡āĻļāύ (Secret Rotation) āĻāĻŦāĻ‚ āφāϰāĻ“ āĻ…ā§āϝāĻžāĻĄāĻ­āĻžāĻ¨ā§āϏāĻĄ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋ āĻĒāϞāĻŋāϏāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤


āϏāĻžāϰāϏāĻ‚āĻ•ā§āώ⧇āĻĒ (Summary) ​

āύāĻŋāϰāĻžāĻĒāĻĻ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϏ⧇āύāϏāĻŋāϟāĻŋāĻ­ āĻĄā§‡āϟāĻž āĻ•āĻ–āύ⧋āχ āĻšāĻžāĻ°ā§āĻĄāϕ⧋āĻĄ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤ āϛ⧋āϟ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ Docker Compose Secrets āĻāĻŦāĻ‚ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āĻŦāĻž āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ Docker Swarm Secrets āĻŦāĻž Vault āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϏāĻŦāĻšā§‡ā§Ÿā§‡ āĻ­āĻžāϞ⧋ āĻĒā§āĻ°ā§āϝāĻžāĻ•āϟāĻŋāϏāĨ¤


CAUTION

āϏāĻŋāĻ•ā§āϰ⧇āϟāϏ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ (āϝ⧇āĻŽāύ: password.txt) āĻ•āĻ–āύ⧋āχ āĻ—āĻŋāϟ āĻŦāĻž āϏ⧋āĻ°ā§āϏ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ⧇ āĻĒ⧁āĻļ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤ āĻāϗ⧁āϞ⧋āϕ⧇ .gitignore-āĻ āϰāĻžāϖ⧁āύāĨ¤

Released under the MIT License.