Complete Intro to Containers (feat. Docker)

بواسطة: Frontend Masters

Overview

What started as a way to manage multiple servers on one system has grown into the way we develop, write code, ship applications, and coordinate large scale applications! Containers may have started as tools for the ops team, but now everyone needs to learn to build and use them. In this course you’ll learn what containers are, how to create containers from scratch, how to run containers from Dockerhub, how to create your own containers with Dockerfiles, best practices for front-end and Node.js code in containers, and how to create development environments with containers.

Syllabus

  • Introduction
  • Containers
  • chroot
  • chroot Exercise
  • chroot Solution
  • Namespaces
  • cgroups
  • Getting Set Up with Docker
  • Docker Images without Docker
  • Docker Images with Docker
  • Node.js on Docker
  • Docker CLI
  • Dockerfiles Preamble
  • Build a Node.js App
  • Run a Node.js App
  • Add Dependencies to a Node.js App
  • EXPOSE
  • Layers
  • Docker Ignore
  • Alpine Linux
  • Alpine Node.js Container
  • Multi-Stage Builds
  • Static Assets Project Exercise
  • Static Assets Project Solution
  • Bind Mounts
  • Volumes
  • Containers & Dev Environment
  • Dev Containers with Visual Studio Code
  • Networks & Docker: MongoDB Container
  • Networks & Docker: Client Side Container
  • Docker Compose
  • Docker Compose & nodemon
  • Kubernetes Fundamentals
  • Kubernetes & kubectl
  • Kompose
  • Multiple Containers with Kompose
  • Buildah
  • Buildah & Docker
  • Podman
  • Wrapping Up

Taught by

Brian Holt

Complete Intro to Containers (feat. Docker)
الذهاب الي الدورة

Complete Intro to Containers (feat. Docker)

بواسطة: Frontend Masters

  • Frontend Masters
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • الجميع
  • N/A
8.1.2PHP Version259msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (164ms)
    • Application (95.06ms)
    • 1 x Booting (63.11%)
      163.73ms
      1 x Application (36.65%)
      95.06ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed5.81ms
      • select * from `courses` where `slug_ar` = 'complete-intro-to-containers-(feat.-docker)' limit 1
        4.54ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. complete-intro-to-containers-(feat.-docker)
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-10 03:48:34' where `id` = 2150
        520μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-10 03:48:34
        • 1. 2150
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (99)
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (41) and `providers`.`deleted_at` is null
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 2141 limit 1
        170μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2141
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        fbEkRGIB6jCHFRsGCRIXlorNjaM2KDu3Oyy8yXvR
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/comple...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/complete-intro-to-containers-%28feat.-docker%29
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "priority" => array:1 [ 0 => "u=0, i" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "3.138.86.166" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "3.138.86.166" ] "cf-ray" => array:1 [ 0 => "92df44f3bf766191-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_PRIORITY" => "u=0, i" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "3.138.86.166" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "3.138.86.166" "HTTP_CF_RAY" => "92df44f3bf766191-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "53812" "REMOTE_ADDR" => "172.69.7.158" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/complete-intro-to-containers-%28feat.-docker%29" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1744256914.797 "REQUEST_TIME" => 1744256914 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Thu, 10 Apr 2025 03:48:35 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjZZdm1uQ2lQQzFjK1Z5Nlo2QmpZVHc9PSIsInZhbHVlIjoiNTc2eGZ5ZE40RGJKWE1TZTNQWmM0WTl4dTVPVE5vU25CMUY5aGNpMDJ2Nys3WFpLSlBCbjAwNHUxMzVtbGFmNzBZZWlwU2RYempvb1VueHpsbWJoWFVnUStkY0IzNWhIUlBYRnNmSUxjd2FIU1dISmxoTkNFZnlDTDlST1Y5NWIiLCJtYWMiOiIzMzE5ZGQ4ZjZmN2JjYWNlOWM0YzY4OWE3NzI0MjY1MDJjY2MxNmI0MjdkNDFjOTRmNjAzY2ViODZhYzFkYTliIiwidGFnIjoiIn0%3D; expires=Thu, 10 Apr 2025 05:48:35 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IjZZdm1uQ2lQQzFjK1Z5Nlo2QmpZVHc9PSIsInZhbHVlIjoiNTc2eGZ5ZE40RGJKWE1TZTNQWmM0WTl4dTVPVE5vU25CMUY5aGNpMDJ2Nys3WFpLSlBCbjAwNHUxMzVtbGFmNzBZZWlwU" 1 => "laravel_session=eyJpdiI6IjRQdDNZNHAxQVk4cndLSEcxS2RPdGc9PSIsInZhbHVlIjoiY3RKV0N4ZDM1ZWFkTjlwRXg1S3lpdFFBUkdtR3d3QkZBUE50RWREalcvYVk0UVpDelE0OTU0aXNvTlFxTWhpV3N2RXBTSUptSWNvOUZEWk1lTVNmb093VWxJc3phNElmcVp4dHNFNkdDYjZaOXpCdXNDekV1Y1dCbGw5alp0NWkiLCJtYWMiOiIyZDQ2Zjc1YjUzZDkyYTZjNjAyNTcxMDYwZTc5YzA4NjI1ZThkMWVjOWNiNzc4MTdiZjk5ZDYxMzM0MmQ0MGE0IiwidGFnIjoiIn0%3D; expires=Thu, 10 Apr 2025 05:48:35 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IjRQdDNZNHAxQVk4cndLSEcxS2RPdGc9PSIsInZhbHVlIjoiY3RKV0N4ZDM1ZWFkTjlwRXg1S3lpdFFBUkdtR3d3QkZBUE50RWREalcvYVk0UVpDelE0OTU0aXNvTlFxTWhpV3N2" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjZZdm1uQ2lQQzFjK1Z5Nlo2QmpZVHc9PSIsInZhbHVlIjoiNTc2eGZ5ZE40RGJKWE1TZTNQWmM0WTl4dTVPVE5vU25CMUY5aGNpMDJ2Nys3WFpLSlBCbjAwNHUxMzVtbGFmNzBZZWlwU2RYempvb1VueHpsbWJoWFVnUStkY0IzNWhIUlBYRnNmSUxjd2FIU1dISmxoTkNFZnlDTDlST1Y5NWIiLCJtYWMiOiIzMzE5ZGQ4ZjZmN2JjYWNlOWM0YzY4OWE3NzI0MjY1MDJjY2MxNmI0MjdkNDFjOTRmNjAzY2ViODZhYzFkYTliIiwidGFnIjoiIn0%3D; expires=Thu, 10-Apr-2025 05:48:35 GMT; path=/XSRF-TOKEN=eyJpdiI6IjZZdm1uQ2lQQzFjK1Z5Nlo2QmpZVHc9PSIsInZhbHVlIjoiNTc2eGZ5ZE40RGJKWE1TZTNQWmM0WTl4dTVPVE5vU25CMUY5aGNpMDJ2Nys3WFpLSlBCbjAwNHUxMzVtbGFmNzBZZWlwU" 1 => "laravel_session=eyJpdiI6IjRQdDNZNHAxQVk4cndLSEcxS2RPdGc9PSIsInZhbHVlIjoiY3RKV0N4ZDM1ZWFkTjlwRXg1S3lpdFFBUkdtR3d3QkZBUE50RWREalcvYVk0UVpDelE0OTU0aXNvTlFxTWhpV3N2RXBTSUptSWNvOUZEWk1lTVNmb093VWxJc3phNElmcVp4dHNFNkdDYjZaOXpCdXNDekV1Y1dCbGw5alp0NWkiLCJtYWMiOiIyZDQ2Zjc1YjUzZDkyYTZjNjAyNTcxMDYwZTc5YzA4NjI1ZThkMWVjOWNiNzc4MTdiZjk5ZDYxMzM0MmQ0MGE0IiwidGFnIjoiIn0%3D; expires=Thu, 10-Apr-2025 05:48:35 GMT; path=/; httponlylaravel_session=eyJpdiI6IjRQdDNZNHAxQVk4cndLSEcxS2RPdGc9PSIsInZhbHVlIjoiY3RKV0N4ZDM1ZWFkTjlwRXg1S3lpdFFBUkdtR3d3QkZBUE50RWREalcvYVk0UVpDelE0OTU0aXNvTlFxTWhpV3N2" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "fbEkRGIB6jCHFRsGCRIXlorNjaM2KDu3Oyy8yXvR" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/complete-intro-to-containers-%28feat.-docker%29" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]