آموزش Docker برای پروژه های Node.js از یک کاپیتان Docker

Docker for Node.js Projects From a Docker Captain

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: ساخت، آزمایش، استقرار Node برای Docker، Kubernetes، Swarm و ARM با جدیدترین روش‌های DevOps از یک متخصص کانتینر. تنظیمات توسعه محلی خود را برای NodeJS در Docker بهینه کنید. ساخت‌ها و آزمایش‌های Node خود با استفاده از Docker بهترین توییک‌های NodeJS را برای استفاده برای توسعه، آزمایش و تولید تصاویر NodeJS برای استفاده با Kubernetes و Swarm دریافت کنید درباره اسکن امنیتی و قفل کردن برنامه‌های NodeJS خود بیاموزید. مبانی داکر مانند تصاویر، کانتینرها و شبکه‌های داکر NodeJS 101 را بدانید: اصول زبان و فریم ورک NodeJS را بدانید اصول خطوط فرمان و پوسته‌ها و مدیران بسته‌ها مانند apt یا yum آشنا با اصول برنامه‌نویسی، رایانش ابری و نحوه استقرار برنامه‌ها به سرورها از یک رایانه مدرن لینوکس، ویندوز یا macOS استفاده کنید که از Docker پشتیبانی می‌کند

به‌روزرسانی 2021: آماده برای Apple Silicon (M1 arm64) و Raspberry Pi!

2023: در صورت نیاز، اصلاحات همچنان انجام می شود، و دوره به طور منظم نگهداری می شود.
به بهترین دوره روی کره زمین برای استفاده از Docker با Node.js خوش آمدید! با در دست داشتن دانش اولیه Docker و Node.js، Docker Mastery for Node.js یک دوره آموزشی برای هر کسی است که در مسیر Node.js است. این دوره به شما کمک می‌کند در کنار هم به آنها مسلط شوید.

من مربی شما برت، کاپیتان Docker برنده جایزه، رهبر انجمن DevOps و نویسنده پرفروش Udemy هستم. من این دوره را برای شما ساختم زیرا من در کانتینرهای Docker زندگی می‌کنم و تنفس می‌کنم، و از سال 2012 از Node.js استفاده می‌کنم. آنها با هم عالی کار می‌کنند، و من به شما نشان خواهم داد که چگونه!

با ویژگی‌های پیشرفته Docker آشنا شوید که باعث می‌شود برنامه‌های Node.js سریع‌تر، کوچک‌تر و ایمن‌تر و قابل اطمینان‌تر اجرا شوند. Containers و Node.js دو مورد از داغ ترین و محبوب ترین موضوعات در فناوری هستند.

دانستن اینکه چه کاری را نباید انجام داد، و همچنین بهترین راه‌های استفاده از Node.js در Docker بسیار مهم است، و من در این دوره اطلاعات زیادی را برای بایدها و نبایدها با Node.js در Docker آموزش می‌دهم. .

تکالیف می خواهید؟ ما تکالیف را با استفاده از انواع تنظیمات Node.js + Docker انجام می دهیم. برنامه‌های CLI تک کانتینری، برنامه‌های وب مبتنی بر پایگاه داده، Express.js، hapi.js، برنامه‌های میکرو سرویس توزیع‌شده، Angular، Websockets، پراکسی‌های HTTP، MongoDB با خاموش شدن مناسب اتصال، و موارد دیگر.

**توجه: قبل از شروع این دوره مطمئن شوید که مبانی Docker و اصول Node.js را می دانید. اگر تازه وارد Docker هستید، ابتدا دوره تسلط Docker خود را پیشنهاد می کنم. شرایط دوره را نیز بخوانید!**

"... برت شگفت‌انگیز است. می‌توانید بگویید که دقیقاً می‌داند درباره چه چیزی صحبت می‌کند و از کمک به دیگران لذت می‌برد. من هرگز کسی را ندیده‌ام که به اندازه برت با پایگاه کاربر خود درگیر باشد. پیام‌های مستقیم از طریق شلی، پخش زنده یوتیوب، خبرنامه‌ها و غیره. نمی‌دانم او چگونه این کار را می‌کند... من به طور جدی هر دوره‌ای را که برت برگزار می‌کند می‌خرم، زیرا شک ندارم که عالی خواهد بود.» — دیوید اولسون، دانشجوی Udemy، دوره استادی Docker.

"معرفی عالی. برت منابع و دستورالعمل های عالی ارائه می دهد. او فردی است که می خواهید در مورد Docker از او یاد بگیرید. معامله واقعی. ارزش پول و بیشتر را دارد." - جوزف مارتینز، دانشجوی Udemy، دوره Docker Mastery

برخی از بسیاری از کارهای جالبی که در این دوره انجام خواهید داد:

  • تصاویر Node.js بسازید که به صورت خودکار آسیب پذیری های امنیتی را اسکن می کنند

  • از BuildKit پیشرفته Docker با عوامل SSH و حافظه پنهان NPM برای ساخت تصویر بهتر استفاده کنید

  • از docker-compose با Visual Studio Code برای پشتیبانی کامل از اشکال زدایی Node.js در Docker استفاده کنید

  • مطمئن شوید که از آخرین ویژگی‌های Docker Desktop استفاده می‌کنید

  • از BuildKit و سازه های چند مرحله ای برای ایجاد Dockerfiles حداقل و انعطاف پذیر

    استفاده کنید
  • تصاویر سفارشی Node.js را با استفاده از توزیع‌هایی مانند CentOS و Alpine بسازید

  • Docker init، tini و Node.js را به عنوان یک فرآیند PID 1 در کانتینرها آزمایش کنید

  • برنامه‌های Node.js را ایجاد کنید که به درستی راه‌اندازی شوند و به بررسی‌های سلامت پاسخ دهند

  • برای استقرار بدون توقف، کد خاموش کردن برازنده را در برنامه های خود بسازید

  • ارتباطات HTTP را با ارکستراسیون و نحوه کمک پروکسی ها بررسی کنید

  • نمونه‌هایی از استقرار Docker Swarm و Kubernetes را برای Node.js مطالعه کنید

  • برنامه‌های Node.js سنتی (قدیمی) را به کانتینرها منتقل کنید

  • راه حل های میکروسرویس خود را با ویژگی های پیشرفته Docker Compose ساده کنید

"Bret یک مربی طبیعی، داکر و GURU ازدحام است... برت دستور العمل های واضح و بی طرفانه ای را برای سناریوهای دنیای واقعی مدیریت فایل های داکر ارائه می دهد. " — Marciej Domanski، دانشجوی Udemy، دوره استادی Docker.

"این اسپیکر قدرتمند است!... بلندگو فوراً هیجان و لطف من را به دست آورد که دقیقاً همان چیزی است که من امیدوار بودم اتفاق بیفتد. این اتصال عالی باعث می شود تا بتوانم آن را دنبال کنم." — کندرا، دانشجوی Udemy، دوره تسلط داکر.

موارد اضافی که با این دوره ارائه می شود:

  • برای دریافت کمک/مشاوره از من و سایر دانش‌آموزان، به تیم دوره Slack Chat دسترسی پیدا کنید.

  • پرسش پاسخ هفتگی YouTube Live که در آن می توانید به صورت زنده از من سؤال بپرسید.

  • ویدیوهای پاداشی که در جاهای دیگر مانند YouTube قرار داده‌ام و از طریق اطلاعیه‌های Udemy به اشتراک می‌گذارم.

  • هزاران پیوند مرجع برای تکمیل این محتوا.

  • با تغییر ویژگی‌های محصولات در این موضوعات، محتوا به‌روزرسانی می‌شود.

آنچه در این دوره خواهید آموخت:

با مروری سریع درباره راه‌اندازی با Docker و همچنین اصول اولیه Docker Compose شروع می‌کنید. به این ترتیب ما برای اصول اولیه در یک صفحه هستیم.

سپس به اصول Node.js Dockerfile می‌روید، به این ترتیب یک پایه Dockerfile خوب برای ویژگی‌های جدیدی که در طول دوره اضافه خواهیم کرد، خواهید داشت.

شما بر روی همه چیزهای مختلفی که از هر سخنرانی در دوره یاد می گیرید، استفاده خواهید کرد. هنگامی که مقدمات Compose، Dockerfile و Docker Image را به دست آوردید، بر روی نکات ظریف تمرکز خواهید کرد، مانند نحوه کنترل Docker و Linux روند Node و نحوه تغییر Docker برای اطمینان از اینکه می دانید چه گزینه هایی برای راه اندازی و خاموش کردن وجود دارد. Node.js و روش صحیح انجام آن در سناریوهای مختلف.

ما ویژگی‌های پیشرفته و جدیدتر را در مورد ساختن Dockerfile به کارآمدترین و منعطف‌ترین تا حد ممکن با استفاده از مواردی مانند BuildKit و Multi-stage پوشش خواهیم داد.

سپس در مورد محاسبات توزیع شده و طراحی ابری صحبت خواهیم کرد تا مطمئن شویم برنامه های Node.js شما دارای طراحی 12 عاملی در کانتینرهای شما هستند و همچنین یاد می گیریم که چگونه برنامه های قدیمی را به این روش جدید انجام کار منتقل کنید.

در ادامه Compose و ویژگی‌های فوق‌العاده آن را پوشش می‌دهیم تا با استفاده از خط فرمان Docker Compose و فایل YAML Docker Compose، توسعه محلی بسیار کارآمد و راه‌اندازی آزمایشی را دریافت کنیم.

با این همه دانش، به دغدغه‌های تولید و آماده ساختن تصاویر آماده خواهید شد.

سپس ما به استقرار آن کانتینرها و اجرای آنها در تولید می پردازیم. چه از Docker Engine یا ارکستراسیون با Kubernetes یا Swarm استفاده کنید، من شما را تحت پوشش قرار داده ام. علاوه بر این، اتصالات HTTP و پراکسی‌های معکوس را برای مدیریت و مسیریابی اتصال با سیستم‌های چند کانتینری پوشش خواهیم داد.

در نهایت، یک تکلیف نهایی و بزرگ دریافت خواهید کرد که در آن یک راه حل بزرگ و پیچیده، از جمله چندین کانتینر Node.js که کارهای متفاوتی را انجام می دهند، می سازید و به کار می گیرید. شما تصاویر Docker، Dockerfiles، و فایل‌ها را می‌سازید و آنها را برای آزمایش در سرور مستقر می‌کنید. باید بررسی کنید که آیا اتصالات به درستی خراب می شوند یا خیر. شما اساساً همه چیزهایی را که یاد گرفته اید می گیرید و در یک پروژه بزرگ به کار می برید!

"برت می‌داند، زندگی می‌کند، نفس می‌کشد و به پشته فن‌آوری‌اش علاقه دارد. اشتیاق و باور همیشه در تمام دوره‌های او دیده می‌شود، به همین دلیل است که من همیشه کار او را توصیه می‌کنم." — استیون هانت، دانشجوی Udemy، دوره Docker Swarm Mastery

چرا باید از من یاد بگیرید؟

  • من یک پزشک هستم. به دنیای واقعی خوش آمدید: من بیش از 20 سال سابقه sysadmin و توسعه دهنده، بیش از 30 گواهینامه دارم و از Docker و Node.js برای خودم و مشتریان مشاورم از روزهای اولیه استفاده می کنم. با من، شما از کسی یاد می گیرید که به اجرای صدها برنامه کانتینری در ده ها پروژه و سازمان کمک کرده است.

  • من یک معلم هستم. با من، از کسی که می داند چگونه یک برنامه درسی درست کند، یاد می گیرید: می خواهم به شما کمک کنم. مردم می گویند من در آن خوب هستم. من جایزه رهبری 2018 را در DockerCon به دلیل کمک به دیگران در یادگیری برنده شدم. در چند سال گذشته هزاران نفر را در مورد استفاده از Docker در کارگاه‌ها، کنفرانس‌ها و جلسات آموزش داده‌ام. در رویدادهایی مانند DockerCon، O'Reilly Velocity، GOTO و Linux Source Summit تدریس می کنم.

  • من جوامع را رهبری می کنم. همچنین، من یک کاپیتان داکر هستم، یعنی شرکت داکر فکر می‌کند من یک یا دو چیز در مورد داکر می‌دانم و در به اشتراک گذاشتن آن با دیگران به خوبی عمل می‌کنم. در دنیای واقعی: من دو جلسه محلی را در جامعه فناوری شگفت انگیز خود در نورفولک/ویرجینیا بیچ ایالات متحده برگزار می کنم. من به صورت آنلاین کمک می کنم: معمولاً در Slack و Twitter، جایی که از آنها یاد می گیرم و به دیگران کمک می کنم.

"این بهترین معلمی است که من می شناسم، نه به این دلیل که او به من یاد می دهد، بلکه به این دلیل که مرا مجبور می کند خودم در چارچوبی که تعیین کرده است یاد بگیرم." — Fabian Letsch، دانشجوی Udemy، دوره استادی Docker.

بازپرداخت: بخشی از سود من در این دوره به حمایت از منبع باز و محافظت از آزادی های آنلاین ما اهدا می شود! این دوره فقط توسط افراد شگفت انگیز ایجاد منبع باز امکان پذیر است. من روی شانه های غول های (متن باز) ایستاده ام! کمک های مالی بین موسسات خیریه مورد علاقه من از جمله بنیاد مرز الکترونیک و بنیاد نرم افزار آزاد تقسیم خواهد شد. به آنها نگاه کن آنها عالی هستند!

این یک دوره آموزشی زنده است و با تغییر ویژگی ها و گردش کار به روز می شود.

این دوره به گونه ای طراحی شده است که شما را سریع شروع کند، اما همچنین شما را عمیقاً به "چرا" چیزها برساند. به سادگی سریعترین و بهترین راه برای یادگیری آخرین مهارت های داکر. به دامنه موضوعات در جلسات نگاه کنید و وسعت مهارت هایی را که خواهید آموخت.

همچنین شامل یک گروه Slack Chat خصوصی و هفتگی Live YouTube Q A برای دریافت کمک در مورد این دوره و ادامه یادگیری Docker، Node.js و DevOps با کمک من و سایر دانش آموزان است.

از اینکه این دوره را در نظر گرفتید بسیار متشکریم. برای یادگیری جدیدترین فناوری DevOps به من و هزاران نفر دیگر در این دوره (و دیگران من) بپیوندید! - برت


سرفصل ها و درس ها

مقدمه و منابع دوره Introduction and Course Resources

  • مقدمه و نقشه راه دوره Introduction and Course Roadmap

  • بیشترین بهره را از این دوره ببرید Getting The Most Out Of This Course

  • دانلود منابع دوره (Repo GitHub) Download Course Resources (GitHub Repo)

  • چت دوره با دانش آموزان ظروف یادگیری Course Chat with Students Learning Containers

  • پرسش و پاسخ هفتگی YouTube Live با Bret Weekly YouTube Live Q&A with Bret

Docker Compose Basics Docker Compose Basics

  • مقدمه بخش: مبانی نوشتن Section Intro: Compose Basics

  • دریافت نسخه های Docker و Compose مناسب Getting The Right Docker and Compose Versions

  • چرا نوشتن؟ Why Compose?

  • فرمت فایل را بنویسید Compose File Format

  • docker-compose CLI docker-compose CLI

  • تکلیف: نوشتن مبانی CLI Assignment: Compose CLI Basics

  • پاسخ تکلیف: اصول CLI را بنویسید Assignment Answer: Compose CLI Basics

Node Dockerfile Best Practice Basics Node Dockerfile Best Practice Basics

  • مقدمه بخش: مبانی بهترین تمرین Dockerfile Section Intro: Dockerfile Best Practice Basics

  • Dockerfile Best Practice Basics Dockerfile Best Practice Basics

  • از دستورالعمل های تصویر پایه FROM Base Image Guidelines

  • زمان استفاده از تصاویر Alpine، Debian یا CentOS When To Use Alpine, Debian, or CentOS Images

  • تکلیف ساخت یک تصویر گره CentOS Assignment Making a CentOS Node Image

  • پاسخ های تکلیف: ساختن یک تصویر گره CentOS Assignment Answers: Making a CentOS Node Image

  • در حال اجرا کاربران کانتینر غیر ریشه Running Non-root Container Users

  • تغییر ویژگی WORKDIR در ویدیوی بعدی WORKDIR feature change in next video

  • کار با محدودیت های کاربر Node Working With The Node User Limits

  • ساخت تصاویر کارآمد Making Images Efficiently

کنترل فرآیند گره در کانتینرها Controlling The Node Process In Containers

  • بخش مقدمه: کنترل فرآیند گره Section Intro: Controlling The Node Process

  • مدیریت فرآیند گره Node Process Management

  • حقیقت در مورد مشکل PID 1 The Truth About the PID 1 Problem

  • گزینه های مناسب خاموش کردن گره Proper Node Shutdown Options

  • تکلیف: نوشتن Node Dockerfiles Assignment: Writing Node Dockerfiles

  • پاسخ های تکلیف: نوشتن Node Dockerfiles Assignment Answers: Writing Node Dockerfiles

  • تکلیف: آزمایش خاموش شدن های زیبا Assignment: Testing Graceful Shutdowns

  • پاسخ های تکلیف: آزمایش خاموش شدن های دلپذیر Assignment Answers: Testing Graceful Shutdowns

Dockerfiles پیشرفته با چند مرحله و BuildKit Advanced Dockerfiles with Multi-stage and BuildKit

  • بخش مقدمه: Advanced Node Dockerfiles Section Intro: Advanced Node Dockerfiles

  • دستور NPM تغییر می کند NPM command changes

  • ساخت های Docker چند مرحله ای Multi-stage Docker Builds

  • کاربردهای چند مرحله ای بیشتر More Multi-stage Uses

  • تکلیف: ساخت یک Dockerfile 3 مرحله ای Assignment: Building A 3-Stage Dockerfile

  • پاسخ های تکلیف: ساخت یک Dockerfile 3 مرحله ای Assignment Answers: Building a 3-Stage Dockerfile

  • BuildKit، سازنده نسل بعدی BuildKit, The Next Gen Builder

  • استفاده از BuildKit برای فعال کردن کلیدهای SSH برای مخازن خصوصی NPM Using BuildKit to Enable SSH Keys for Private NPM Repositories

  • استفاده از BuildKit برای استفاده مجدد از حافظه پنهان NPM Using BuildKit to Reuse NPM Cache

Node Apps در Cloud Native Docker Node Apps in Cloud Native Docker

  • بخش معرفی: برنامه‌های گره در Cloud Native Docker Section Intro: Node Apps in Cloud Native Docker

  • دستورالعمل‌های Cloud Native App Cloud Native App Guidelines

  • دوازده برنامه عامل - پیکربندی Twelve Factor Apps - Config

  • دوازده برنامه عامل - سیاههها Twelve Factor Apps - Logs

  • فایل .dockerignore The .dockerignore File

  • تکلیف مهاجرت برنامه های سنتی Assignment Migrating Traditional Apps

  • پاسخ های تکلیف مهاجرت برنامه های سنتی Assignment Answers Migrating Traditional Apps

برای توسعه محلی عالی بنویسید Compose for Awesome Local Development

  • بخش مقدمه: نوشتن برای توسعه محلی عالی Section Intro: Compose for Awesome Local Development

  • نکات پروژه را بنویسید Compose Project Tips

  • کد نصب اتصال، بهینه سازی برای عملکرد Bind-Mounting Code, Optimizing for Performance

  • ماژول های گره در تصاویر Node Modules In Images

  • ماژول های گره در Bind-Mounts Node Modules In Bind-Mounts

  • NPM، نخ و سایر ابزارها در Compose NPM, Yarn and Other Tools in Compose

  • نظارت بر فایل و شروع مجدد خودکار گره File Monitoring and Node Auto Restarts

  • ترتیب راه اندازی و وابستگی ها Startup Order and Dependencies

  • بررسی های بهداشتی برای بستگی_on Healthchecks for depends_on

  • کوچک کردن فایل‌های Compose و DRY YAML Shrinking Compose Files and DRY YAML

  • آسان‌تر کردن میکروسرویس‌ها با Compose Making Microservices Easier with Compose

  • VS Code، Debugging و TypeScript VS Code, Debugging and TypeScript

  • تکلیف: ساختن یک فایل آهنگسازی شیرین Assignment: Building a Sweet Compose File

  • پاسخ های تکلیف: ساختن یک فایل آهنگسازی شیرین Assignment Answers: Building a Sweet Compose File

آماده سازی تولید تصاویر کانتینری Making Container Images Production Ready

  • مقدمه بخش: آماده سازی تولید تصاویر ظرف Section Intro: Making Container Images Production Ready

  • اجتناب از وابستگی به dev Dependencies در Prod Avoiding devDependencies In Prod

  • نظرات، آرگومان ها و برچسب های Dockerfile Dockerfile Comments, Arguments, and Labels

  • اجرای تست ها در طول ساخت تصویر Running Tests During Image Builds

  • اسکن امنیتی در حین ساخت تصویر Security Scanning During Image Build

  • تست خودکار CI و برچسب های تصویر مناسب CI Automated Testing and Proper Image Tags

  • افزودن چک های سلامت Adding Healthchecks

  • تکلیف: ساختن Dockerfile نهایی Node.js شما Assignment: Making Your Ultimate Node.js Dockerfile

  • پاسخ های تکلیف: ساختن Dockerfile نهایی Node.js شما Assignment Answers: Making Your Ultimate Node.js Dockerfile

  • پاداش پاسخ های تکلیف: ساختن فایل Docker Node نهایی شما Assignment Answers BONUS: Making Your Ultimate Node Dockerfile

در حال اجرا کانتینرهای تولید Node.js Running Production Node.js Containers

  • بخش معرفی Section Intro

  • نگرانی های چند رشته ای Node.js Node.js Multi-Threaded Concerns

  • چرا از Compose در تولید استفاده نمی کنید؟ Why Not Use Compose In Production?

  • کانتینرهای Node.js با پراکسی Node.js Containers With Proxies

  • تعویض کانتینر و مدیریت اتصال Container Replacement and Connection Management

  • Node.js با کانتینر ارکستراسیون Node.js With Container Orchestration

  • Node.js با Docker Swarm Node.js With Docker Swarm

اجرای Node.js در ARM با Docker Running Node.js on ARM with Docker

  • وضعیت ARM و Docker برای Node.js The State of ARM and Docker for Node.js

  • اجرای Node.js ARM Containers برای توسعه Running Node.js ARM Containers For Development

  • در حال اجرا Node.js ARM Container برای تولید Running Node.js ARM Container for Production

  • آینده Multi-Arch Docker: آسان‌تر کردن ARM The Future of Multi-Arch Docker: Making ARM Easier

موارد اضافی Extras

  • Bret's DockerCon در مورد تولید داکر صحبت می کند Bret's DockerCon Talks on Production Docker

  • پادکست DevOps و Docker Bret's Bret's DevOps and Docker Podcast

  • جایزه Bonus

نمایش نظرات

Udemy (یودمی)

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

یکی از ویژگی‌های برجسته یودمی، کیفیت بالای دوره‌ها و حضور استادان مجرب و با تجربه در هر حوزه است. این امر به کاربران اعتماد می‌دهد که در حال دریافت آموزش از منابع قابل اعتماد و معتبر هستند و می‌توانند به بهترین شکل ممکن از آموزش‌ها بهره ببرند. به طور خلاصه، یودمی به عنوان یکی از معتبرترین و موثرترین پلتفرم‌های آموزشی آنلاین، به افراد امکان می‌دهد تا به راحتی و با کیفیت، مهارت‌های مورد نیاز خود را ارتقا دهند و به دنبال رشد و پیشرفت شغلی خود باشند.

آموزش Docker برای پروژه های Node.js از یک کاپیتان Docker
جزییات دوره
8 hours
84
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
12,333
4.6 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Bret Fisher Bret Fisher

Docker Captain و DevOps Sysadmin

Docker Captain Program Docker Captain Program