Introduction to Docker Course

بواسطة: Treehouse

Overview

Docker allows any developer of any language to package an app into a container, like a shipping container. Containers include an app and all the other software it depends on, like databases. Containers let your users easily run your website, app, or service on any operating system they want. This course will show you how Docker works, and how it can make it easier to distribute your software!

What you'll learn

  • Images and containers
  • Dockerfiles
  • Docker networking
  • Registries

Syllabus

Why Docker?

Docker bundles your app together with all the libraries and services it depends on into a package called a container, which can then be delivered as a single unit wherever it needs to go. In this stage, we'll look at how this powerful new paradigm can help you deliver software more easily.

Chevron 5 steps
  • Why this Course?

    3:15

  • Building an Image and Running a Container

    4:05

  • What is Docker?

    6:14

  • Why Should You Use Docker?

    3:50

  • What is Docker?

    4 questions

Fundamentals of Docker

In this stage, we'll take a closer look at how Docker works.

Chevron 4 steps
  • Virtual Machines versus Containers

    5:25

  • Building Blocks of Docker

    2:56

  • Docker Networking

    9:59

  • Building Blocks of Docker

    7 questions

Building Images Using Dockerfiles

Docker looks for a Dockerfile for instructions on how it should build an image. In this stage, we're going to learn about all the instructions you can include in a Dockerfile so that your image is configured just the way you want it.

Chevron 9 steps
  • Building Images Using Dockerfiles

    5:31

  • The FROM Instruction

    0:55

  • RUN Instructions

    1:46

  • The ENTRYPOINT and CMD Instructions

    3:12

  • WORKDIR, COPY, and ADD Instructions

    3:53

  • EXPOSE Instructions

    0:51

  • ENV Instructions

    3:12

  • USER Instructions

    4:00

  • Dockerfiles

    7 questions

Managing Images and Containers

Now that you know the basics of creating Docker images and containers, it probably won't be long before you build up a substantial collection. Let's look at some features Docker has provided to help you manage your images and containers.

Chevron 4 steps
  • Managing Images

    1:57

  • Managing Containers

    7:36

  • Docker Registries

    4:01

  • Docker Commands

    6 questions

Dockerizing a Web App

In this final stage, we'll take everything we've learned so far and Dockerize this simple Node.js web app.

Chevron 4 steps
  • Configuring the App

    4:05

  • Building the Image and Running the Container

    3:10

  • Next Steps

    1:29

  • Course Review

    8 questions

Taught by

Jay McGavren

Introduction to Docker Course
الذهاب الي الدورة

Introduction to Docker Course

بواسطة: Treehouse

  • Treehouse
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • intermediate
  • N/A
8.1.2PHP Version263msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (159ms)
    • Application (103ms)
    • 1 x Booting (60.4%)
      158.62ms
      1 x Application (39.36%)
      103.36ms
      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 executed10.61ms
      • select * from `courses` where `slug_ar` = 'introduction-to-docker-course' limit 1
        9.37ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. introduction-to-docker-course
        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-02-10 19:32:27' where `id` = 6006
        340μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-02-10 19:32:27
        • 1. 6006
        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)
        220μ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)
        200μ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 (60) and `providers`.`deleted_at` is null
        220μ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` = 5997 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 5997
        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
        zknojwZTRvps6a1LbQQrmuKrIkZDjp3c80PuxFVy
        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/introd...
        _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/introduction-to-docker-course
        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" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "priority" => array:1 [ 0 => "u=0, i" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-connecting-ip" => array:1 [ 0 => "3.16.109.195" ] "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" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "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.16.109.195" ] "cf-ray" => array:1 [ 0 => "90fe867368bee1e6-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_CDN_LOOP" => "cloudflare; loops=1" "HTTP_PRIORITY" => "u=0, i" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_CONNECTING_IP" => "3.16.109.195" "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_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "3.16.109.195" "HTTP_CF_RAY" => "90fe867368bee1e6-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" => "33446" "REMOTE_ADDR" => "172.70.126.24" "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/introduction-to-docker-course" "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" => 1739215947.0303 "REQUEST_TIME" => 1739215947 ]
        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 => "Mon, 10 Feb 2025 19:32:27 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjAwL1FoaXdxOUs4d084a0ExM3o0VlE9PSIsInZhbHVlIjoiNDFLa0EyY3llUkY3YzFGa2EvT1lhMEpkVEhrS1A5bG0wK1pKam0xK204cW42MUttUnk1MElaeUNaejZQZFdTcDR3djFocFRKRXNCd0o1eEMxeXJlQ1U4Q0dmQTdUdmFIZGNyL0dpaGoyNzB6NUNYUUxCWGQzSVZJOWx1NkpGVFIiLCJtYWMiOiJjM2QxMTEwOWRlYTc2MDcwOWQ2MGYwMzc0ODJhNzVmYjE3MjU5OGY4Yzk1OTI5OTgwNzE4ZGRkMzBiMGYwMGU1IiwidGFnIjoiIn0%3D; expires=Mon, 10 Feb 2025 21:32:27 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IjAwL1FoaXdxOUs4d084a0ExM3o0VlE9PSIsInZhbHVlIjoiNDFLa0EyY3llUkY3YzFGa2EvT1lhMEpkVEhrS1A5bG0wK1pKam0xK204cW42MUttUnk1MElaeUNaejZQZFdTcDR3djFoc" 1 => "laravel_session=eyJpdiI6Ijh6UUxId0JSS1gxYU54dG84eWVnS3c9PSIsInZhbHVlIjoid25INFlzd1N6NDJ5ZDN6Z3lzaTVJVkxOaEk0cDNySUxEU0NGQWpmeXRlUkl3N2VkQkNFY0lhTzN5UElSWkRPL2tVRXYySlVTbnM1K0UzdzNLaGRXQXBnRU1QR0czT3pZSHdHNUdSZ1hiYUFRb1VVeEdXWi9OWWxwT2RIa1grMG8iLCJtYWMiOiJhZjcyZTM5Y2I0NTk0MTE4YzhhOGYyYTZlOTQ1YWJhZWUzOWVkOGY1NjIwZDU2OWM2MWM1YTc3ODljNTM3NDhkIiwidGFnIjoiIn0%3D; expires=Mon, 10 Feb 2025 21:32:27 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ijh6UUxId0JSS1gxYU54dG84eWVnS3c9PSIsInZhbHVlIjoid25INFlzd1N6NDJ5ZDN6Z3lzaTVJVkxOaEk0cDNySUxEU0NGQWpmeXRlUkl3N2VkQkNFY0lhTzN5UElSWkRPL2tV" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjAwL1FoaXdxOUs4d084a0ExM3o0VlE9PSIsInZhbHVlIjoiNDFLa0EyY3llUkY3YzFGa2EvT1lhMEpkVEhrS1A5bG0wK1pKam0xK204cW42MUttUnk1MElaeUNaejZQZFdTcDR3djFocFRKRXNCd0o1eEMxeXJlQ1U4Q0dmQTdUdmFIZGNyL0dpaGoyNzB6NUNYUUxCWGQzSVZJOWx1NkpGVFIiLCJtYWMiOiJjM2QxMTEwOWRlYTc2MDcwOWQ2MGYwMzc0ODJhNzVmYjE3MjU5OGY4Yzk1OTI5OTgwNzE4ZGRkMzBiMGYwMGU1IiwidGFnIjoiIn0%3D; expires=Mon, 10-Feb-2025 21:32:27 GMT; path=/XSRF-TOKEN=eyJpdiI6IjAwL1FoaXdxOUs4d084a0ExM3o0VlE9PSIsInZhbHVlIjoiNDFLa0EyY3llUkY3YzFGa2EvT1lhMEpkVEhrS1A5bG0wK1pKam0xK204cW42MUttUnk1MElaeUNaejZQZFdTcDR3djFoc" 1 => "laravel_session=eyJpdiI6Ijh6UUxId0JSS1gxYU54dG84eWVnS3c9PSIsInZhbHVlIjoid25INFlzd1N6NDJ5ZDN6Z3lzaTVJVkxOaEk0cDNySUxEU0NGQWpmeXRlUkl3N2VkQkNFY0lhTzN5UElSWkRPL2tVRXYySlVTbnM1K0UzdzNLaGRXQXBnRU1QR0czT3pZSHdHNUdSZ1hiYUFRb1VVeEdXWi9OWWxwT2RIa1grMG8iLCJtYWMiOiJhZjcyZTM5Y2I0NTk0MTE4YzhhOGYyYTZlOTQ1YWJhZWUzOWVkOGY1NjIwZDU2OWM2MWM1YTc3ODljNTM3NDhkIiwidGFnIjoiIn0%3D; expires=Mon, 10-Feb-2025 21:32:27 GMT; path=/; httponlylaravel_session=eyJpdiI6Ijh6UUxId0JSS1gxYU54dG84eWVnS3c9PSIsInZhbHVlIjoid25INFlzd1N6NDJ5ZDN6Z3lzaTVJVkxOaEk0cDNySUxEU0NGQWpmeXRlUkl3N2VkQkNFY0lhTzN5UElSWkRPL2tV" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "zknojwZTRvps6a1LbQQrmuKrIkZDjp3c80PuxFVy" "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/introduction-to-docker-course" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]