یکی از ساده ترین نمونه هایی که مردم در طی سالهای آزمایشی از Docker استفاده کرده اند ، به سرعت ایستاده و یک سرور Minecraft را اجرا می کند. این قدرت استفاده از Docker را نشان می دهد و کاربردی بسیار کاربردی دارد!

اخیراً من می خواستم سرور را تنظیم کنم اما می خواستم یکی از آنها را ادامه دهم و همانطور که من آخرین تمشک تمشک خود را به من داده ام ، باید روش جدیدی پیدا کنم. این. من تصمیم گرفتم که با استفاده از 200 دلار اعتبار رایگان که در ماه اول دریافت می کنید ، این کار را انجام دهم.

اولین کاری که من تصمیم گرفتم انجام دهم اینست که تصاویر Docker Images موجود برای سرورهای Minecraft را بررسی کنید تا ببینم وجود دارد برای استفاده از این موارد ، به داکر هاب رفتم و به جستجوی کنکوری پرداختم:

من از ظاهر repo سرورهای minecraft ، پسندیدم ، بنابراین با کلیک بر روی آن ، نگاهی به تصویر و پیوند از طریق repo Github.

برای شروع تصمیم می گیرم فقط با اجرای دستور ساده Docker Run ، تست اجرای محلی این دستگاه بر روی دستگاه را انجام دهم:

 docker $ run -d -p 25565: 25565 --name mc -e EULA = TRUE
 itzg / minecraft-server

در داشبورد دسکتاپ Docker ، می توانم ببینم که من کانتینر را اجرا می کنم و گزارش های سرور را بررسی می کنم تا مطمئن شوم که همه چیز به درستی آغاز شده است:

اگر Minecraft را بارگذاری کنم می توانم با استفاده از میزبان محلی و من به سرور خود وصل شوم. درگاه باز:

از آنجا ، می توانم سعی کنم این را در آزور مستقر کنم تا سرور اصلی من در ابر فعال شود.

با ادغام Docker ACI ، می توانم با استفاده از:

 $ docker لاجورد لاجورد وارد لاجوردی شوم.

پس از ورود به سیستم ، می توانم زمینه ای را ایجاد کنم که به من اجازه دهد کانتینرها را به یک گروه منبع Azure مستقر کنم (این پیشنهاد ایجاد گروه جدید منابع لاجوردی یا استفاده از یک گروه موجود) را ایجاد می کند:

 زمینه docker $ ایجاد aci acicontext
فقط با استفاده از اشتراک موجود: اشتراک من (xxx)
؟ یک گروه منبع را انتخاب کنید [Use arrows to move, type to filter]
> ایجاد یک گروه منبع جدید
  gtardif (وستروپه)

سپس می توانم از این زمینه جدید استفاده کنم:

 زمینه docker از acicontext استفاده کند

اکنون سعی خواهم کرد سرور minecraft را با استفاده از همان دستوری که قبلاً در محلی اجرا کردم مستقر کنم:

 docker run -d -p 25565: 25565 --name mc -e EULA = TRUE itzg / Minecraft-server
[+] در حال اجرا 2/2
 m گروه mc 4.6s ایجاد شده است
 ⠿ mc انجام شده 36.4s
mc

با ذکر کانتینرهای لاجوردی ، IP عمومی را که برای سرور Minecraft من ارائه شده است ، می بینم:

 $ docker ps
CONTAINER ID IMAGE Command PATTS STATUS
mc itzg / minecraft-server در حال اجرا 51.105.116.56:25565->25565/tcp

اما اگر گزارش های مربوط به ظروف ACI را دنبال کنم ، به نظر می رسد سرور در مرحله اولیه گیر شده است ، و من نمی توانم از Minecraft به آن متصل شوم.

 $ پرونده docker - پیروی از mc

در سیاهههای مربوط می بینیم که سرور Minecraft دارای 1G حافظه است ، که اتفاق می افتد حافظه پیش فرض است که توسط ACI به کل کانتینر اختصاص داده می شود. بیایید مقدار ACI را با گزینه –memory کمی افزایش دهیم:

 docker run -d --memory 1.5G -p 25565: 25565 --name mc -e EULA = TRUE
itzg / minecraft-server

گزارش های سرور از ACI اکنون نشان می دهد که سرور به درستی آغاز شده است. من می توانم دوباره docker ps را اجرا کنم تا IP عمومی ظرف من را بگیرم ، و از Minecraft به آن وصل شده و بازی را شروع کنم!

این عالی است ، اما اکنون می خواهم راهی پیدا کنم تا اطمینان حاصل کنم که داده های من همچنان ادامه دارد و طول فرمان مورد نیاز برای استفاده از سرور را کاهش می دهم.

برای این کار از یک فایل کامپوزیت استفاده می کنم تا دستوری را که من استفاده می کنم ، ثبت کنید و در مرحله بعدی یک جلد به این اضافه می کنم که می توانم داده های خود را روی آن سوار کنم.

 نسخه: '3.7'
خدمات:
 کنکوری:
   تصویر: itzg / minecraft-server
   پورت ها:
     - "25565: 25565"
   محیط:
     EULA: "TRUE"
   استقرار:
     منابع:
       محدودیت ها:
         حافظه: 1.5G

با نگاه به دستور ما از قبل از انتقال نام تصویر به بخش تصویر ، ما را برای درگاه ها به درگاه ها اضافه كرده و پذیرش EULA ما را به متغیرهای محیط افزوده است. ما همچنین اطمینان حاصل می کنیم که ظرف سرور از حافظه کافی برای شروع کار برخوردار باشد.

دستور شروع به کار محلی اکنون بسیار ساده تر است:

 docker-compose - project-name mc up

و برای اعزام به ACI ، هنوز هم با استفاده از زمینه ACI که قبلاً ایجاد کردم:

 docker $ آهنگسازی - پروژه نام mc2 up
[+] در حال اجرا 2/2
 ⠿ گروه mc2 6.7s ایجاد شده است
 ⠿ Minecraft انجام شده 51.7s

البته با نوشتن ، این اجازه می دهد تا برنامه نویسی شامل چندین ظروف باشد (در اینجا ما فقط یک "کنفرانس کنکوری" را داریم). ظروف در صفحه نمایش قابل مشاهده است (در اینجا خط "Minecraft").
و لیست ظروف ، نام برنامه و نام ظرف را نشان می دهد mc2_minecraft :

 $ docker ps
CONTAINER ID IMAGE Command PATTS STATUS
mc itzg / minecraft-server در حال اجرا 20.50.245.84:25565->25565/tcp
mc2_minecraft itzg / Minecraft-server در حال اجرا 40.74.20.143:25565->25565/tcp

در مرحله بعد می خواهیم یک حجم اضافه کنیم تا داده های Minecraft را درج کنیم و در صورت تمایل می توانیم در نقشه های دیگر بارگذاری کنیم. برای این کار باید بدانم که چه پوشه ای از داده های Minecraft را در تصویر Docker دارد ، اگر من بروم و در حال حرکت در حال اجرا در داشبورد داکر را بررسی کنم ، می توانم ببینم که آن فهرست / Data است:

اگر می خواستم این را در خط فرمان خود اضافه كنم ، باید فرمان خود را با چیزی مانند:

 docker run -d -p 25565: 25565 --v / path / on / host: / data - name mc -e
EULA = TRUE itzg / minecraft-server

من می توانم این را در زیر جلد پرونده تألیف خود اضافه کنم: [نسخه19659027]: نسخه 3.7
خدمات:
کنکوری:
تصویر: itzg / minecraft-server
پورت ها:
– "25565: 25565"
محیط:
EULA: "TRUE"
استقرار:
منابع:
محدودیت ها:
حافظه: 1.5G
جلد:
– "~ / tmp / minecraft_data: / data"

اکنون وقتی یک docker را تنظیم می کنم و برای بازرسی باز می گردم می توانم پوشه / data موجود در آن را همانطور که انتظار می رود مشاهده کنم. با استفاده از این پوشه محلی ، می توانم تمام داده های Minecraft را ببینم.

اکنون بیایید یک Azure File Share ایجاد کنیم و برنامه خود را نصب کنیم تا / data را در پوشه مداوم Azure سوار کنیم تا بتوانیم همان کار را در ACI

ابتدا باید یک حساب ذخیره سازی آزور ایجاد کنم. ما می توانیم این کار را با استفاده از خط فرمان Azure "az" انجام دهیم ، یا از طریق پرتال Azure ، تصمیم گرفته ام که از این پورتال استفاده کنم:

من باید یک اسم را برای حساب ذخیره سازی مشخص کنم ، گروه منبع را برای پیوست کردن به آن انتخاب کنید ، سپس من به این مثال گزینه های دیگر را پیش فرض می دهم.

پس از ایجاد حساب ذخیره سازی "minecraftdocker" ، من یک فایلی را ایجاد خواهم کرد که تمام پرونده های Minecraft را در خود جای دهد:

فقط باید یک اسم برای این اشتراک پرونده و سهمیه اندازه مشخص کنم. بیایید آن را "minecraft-volume" بنامیم:

من باید یک کلید دستیابی را مشخص کنم تا در پرونده تألیف خود ، بتوانم کلید دسترسی به حساب ذخیره سازی را از فهرست سمت چپ من ، تنظیمات> کلیدهای دستیابی دریافت کنم.

سپس در پرونده نوشتن من ، مشخصات صدا را به روز می کنم تا به این نسخه Azure File Share اشاره کنم:

 نسخه: '3.7'
خدمات:
 کنکوری:
   تصویر: itzg / minecraft-server
   پورت ها:
     - "25565: 25565"
   محیط:
     EULA: "TRUE"
   استقرار:
     منابع:
       محدودیت ها:
         حافظه: 1.5G
   جلد:
     - "Minecraft: / data"
جلد:
 کنکوری:
   راننده: azure_file
   driver_opts:
     share_name: Minecraftdocker
     storage_account_name: Minecraft-volume
     storage_account_key: xxxxxxx

توجه داشته باشید که نحو برای تعیین میزان ACI در پرونده های نوشتن در آینده تغییر می کند.

سپس می توانم برنامه نوشتن خود را در ACI ، هنوز با همان خط فرمان مانند گذشته ، دوباره تغییر دهم:

 docker - -context acitest آهنگسازی - پیش نویس نام کنکوری تا
[+] در حال اجرا 2/2
 min Minecraft Group ایجاد شده 5.3s
 ⠿ Minecraft Done 56.4s

و می توانم با استفاده از گزینه Azure File Share ، فقط انتخاب minecraft-volume Share در پرتال Azure را بررسی کنم:

من می توانم دوباره از طریق Minecraft به سرورم وصل شوم ، آدرس سرور را به اشتراک بگذارم و از بازی لذت ببرم با دوستان!

برای شروع کار با سرور Minecraft خود می توانید آخرین Edge نسخه Docker Desktop را بارگیری کنید. می توانید تصویر Minecraft را که در Docker Hub استفاده کرده ایم بیابید ، و یا ایجاد تصاویر خود را از تصاویر رسمی Dockers شروع کنید. یا اگر می خواهید محتوا مانند این برای اشتراک گذاری ایجاد کنید ، یک حساب Docker ایجاد کنید و به اشتراک گذاری ایده های خود در بازپرداخت های عمومی خود بپردازید.