خواندن 5 دقیقه ارسال شده در
به عنوان اطلاعات محرمانه Docker طراحی شده است که نام کاربری حساس به Docker است. ، گواهینامه های SSL و هر فایل ایمن
Docker Secret توسط Docker Swarm ایجاد شد و به طور گسترده ای مورد استفاده قرار گرفت و سپس از نسخه 3 به docker compose گسترش یافت.
اگر نگران محافظت از داده های حساس خود هستید، Docker Secret یکی از آنها خواهد بود.
فقط تصور کنید، ما هرگز نمی خواهیم یک فایل پیکربندی را با تمام رمزهای عبور خود در GitHub / هر مخزن، عمومی یا حتی خصوصی ذخیره کنیم.
در این آموزش، جنبه های مختلف پیکربندی و با استفاده از اسرار داکر
قبل از اینکه وارد عمل شویم، در اینجا مقدمه ای درباره نحوه استفاده از آن در خدمات ازدحام داکر آورده شده است. به سرویسهای ما اجازه دسترسی به اسرار مورد نیازشان را بدهید.
هنگامی که یک سرویس ایجاد میشود (یا بهروزرسانی میشود)، راز در یک محفظه در فهرست راهنمای /run/secrets نصب میشود. آزمایش کنید، لطفاً "docker swarm init" را اجرا کنید که گره swarm docker شما را راهاندازی میکند.
اکنون میتوانید از دستور docker secret create برای اضافه کردن یک راز جدید به swarm استفاده کنید
در اینجا یک مثال اساسی وجود دارد:
echo "mypassword" | docker secret create mypass -
حالا بیایید از دستور "docker secret ls" استفاده کنیم تا تأیید کنیم که راز ما اضافه شده است:
docker secret ls
باید چیزی شبیه به این دریافت کنید:
ID NAME CREATED UPDATED rkxav7s9rvnc9d7ct6dhkrsyn mypass 3 دقیقه پیش 3 دقیقه پیش
قبل از اینکه به افزودن راز به سرویس بپردازیم، ببینیم چه کارهای دیگری می توانیم با راز Docker انجام دهیم. دستور برای راز داکر :
داکر مخفی بازرسی secret_name
در مورد ما "mypass" خواهد بود.
حذف یک راز داکر
شما می توانید یک راز را با دستور زیر
docker secret حذف کنید. rm secret_name
افزودن یک راز به سرویس
اکنون که راز را به swarm اضافه کردهاید، باید به سرویس اجازه دسترسی به آن را بدهید.
این را میتوان هنگام ایجاد یا بهروزرسانی یک سرویس انجام داد. 19659006] در اینجا مثالی از نحوه اضافه کردن یک راز هنگام ایجاد یک سرویس آورده شده است:
سرویس docker ایجاد --secret mypass --name secret alpine ping itsecforu.ru
در این مثال، من رمز mypass را که در ایجاد کردیم اضافه می کنم. مرحله قبلی به سرویسی که تصویر آلپاین را اجرا می کند.
🐧 Ka برای به روز رسانی Alpine Linux به آخرین نسخه
اگر سرویس از قبل در حال اجرا است و ما می خواهیم یک راز اضافه کنیم (یا تغییر دهیم)، می توانیم از گزینه -secret-add استفاده کنیم. mypass exist_service_name
چگونه در زمان واقعی کار می کند
چندین روش مختلف برای استفاده از آن در زمان واقعی وجود دارد، و بر اساس نیازهای برنامه خود، می توانید روشی را انتخاب کنید که بهترین کار را برای شما دارد.
Secret. برای هر رمز عبور
در مثال بالا، من نشان دادم که چگونه می توانید یک رمز عبور را مخفی نگه دارید. مخفی کنید و هنگام ایجاد یا به روز رسانی آن ها را به سرویس مناسب اضافه کنید. می تواند خیلی طول بکشد زمان
راز برای هر سرویس
روش ممکن دیگر این است که تمام اسرار مورد نیاز هر سرویس را در یک فایل ذخیره کنید – شاید در یک فایل json به نام "service.json."
حالا شما یکی را اضافه کنید فایل مخفی برای هر سرویس، و همه رمزهای عبور در فایلی ذخیره می شوند که می تواند به سرعت توسط برنامه شما خوانده شود.
اما اشکال آشکار این است که سرویسها اغلب اسرار را به اشتراک میگذارند، بنابراین برخی از دادههای حساس ممکن است تکراری شوند. (نیازی به اجرای Swarm ندارید.)
🐳 مدیریت کانتینرهای Docker با Docker Compose
من به docker-compose تغییر مکان دادم زیرا میخواستم از اسرار استفاده کنم
هر سرویس به یک کانتینر نگاشت
توجه: رازها در محیط کانتینر بارگذاری نمی شوند، بلکه در /run/secrets/ نصب می شوند.
| — docker-compose.yml
| — mysecret.txtdocker-compose.yml شامل:
نسخه: "3.6" خدمات: my_service: تصویر: اوبونتو: 18.04 نقطه ورود: "گربه / اجرا / اسرار / راز" اسرار: - راز اسرار: راز: فایل: ./mysecret.txtmysecret.txt حاوی:
این متن مخفی من استاین دستور را به عنوان root اجرا کنید تا مطمئن شوید که کانتینر باید به راز شما دسترسی داشته باشد (Docker) در حال اجرا و نصب docker-compose):
docker-compose up --build myserviceباید ببینید که کانتینر شما راز شما را به صورت زیر نمایش می دهد،
ایجاد شبکه "secret_default" با درایور پیش فرض کشیدن myservice (centos: 7) ... 7: کشیدن از کتابخانه / centos 524b0c1e57f8: کشیدن کامل است خلاصه: sha256: e9ce0b76f29f942502facd849f3e468232492b259b9d9f076f71b392293f1582 وضعیت: تصویر جدیدتر دانلود شده برای centos: 7 ایجاد Secret_myservice_1 ... انجام شد در حال پیوست کردن به secret_myservice_1 myservice_1 | این متن مخفی من است Secret_myservice_1 با کد 0خارج شد همچنین: