Docker Essentials & Building a Containerized Web Application

Brought by: Coursera

Overview

This is a 2-hour long project-based course and the most comprehensive one about Docker Containers. By the end of this project, you will have packaged, built, and deployed a static web application using Docker. Along the way, you will also learn the essential concepts and commands about Docker containers. Apart from demystifying the Docker landscape, it'll prepare you with hands-on experience for building and containerizing your own applications.

Even if you have no prior experience with containers, this project should be all you need to:
- Get started with Docker containers & related concepts.
- Deep-dive to get your hands dirty with Docker command-line.
- Emerge as someone who knows how to use Docker and build containerized applications.

Note: This course works best for learners who are based in the North America region. We’re currently working on providing the same experience in other regions.

Syllabus

  • Project Overview
    • This is the most comprehensive project-based Docker course that introduces you to the most important Docker topics. By the end of this project, you will have packaged, built, and deployed a static web application using Docker. Along the way, you will also learn the essential concepts and commands about Docker containers. Apart from demystifying the Docker landscape, this will prepare you with hands-on experience for building and containerizing your own applications.

Taught by

Prasanjit Singh

Docker Essentials & Building a Containerized Web Application
Go to course

Docker Essentials & Building a Containerized Web Application

Brought by: Coursera

  • Coursera
  • Paid
  • English
  • Certificate Available
  • Available at any time
  • beginner
  • English
8.1.2PHP Version265msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (162ms)
    • Application (103ms)
    • 1 x Booting (61.06%)
      161.89ms
      1 x Application (38.69%)
      102.59ms
      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 en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed6.26ms
      • select * from `courses` where `slug_en` = 'docker-essentials-&-building-a-containerized-web-application' limit 1
        4.85ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. docker-essentials-&-building-a-containerized-web-application
        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-12 16:27:48' where `id` = 1829
        450μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-12 16:27:48
        • 1. 1829
        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)
        210μ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)
        150μ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 `institutions` where `institutions`.`id` in (106) and `institutions`.`deleted_at` is null
        180μ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 `providers` where `providers`.`id` in (2) 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` = 1820 limit 1
        250μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 1820
        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\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        J1IiPZVFLOv7UBJebKcRrkdLfQ2vHC6EDK7Vu7yo
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/docker-essentials-&-building-a-containeri...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/docker-essentials-&-building-a-containerized-web-application
        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 => "52.14.88.125" ] "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 => "52.14.88.125" ] "cf-ray" => array:1 [ 0 => "92f417d92c0b5c91-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" => "52.14.88.125" "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" => "52.14.88.125" "HTTP_CF_RAY" => "92f417d92c0b5c91-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" => "12222" "REMOTE_ADDR" => "108.162.216.180" "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" => "/en/courses/docker-essentials-&-building-a-containerized-web-application" "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" => 1744475268.2802 "REQUEST_TIME" => 1744475268 ]
        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 => "Sat, 12 Apr 2025 16:27:48 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Im1SSmxLSkY5eStnYVEwRVFHTUpQNFE9PSIsInZhbHVlIjoiaUlxbG4vN0tVZ29yYXZBY0diemlkckIwcWZvUTJOd2Y1VU8vMmJoODhMTlgxSUdlNG5VTlE4QngzK3kxT3dITjR3b0lTTUdhZUNuQmp1ajV6ejVQWStYaHA3Qks5SU1icmdkc0pBWm5Nc2piMTVZZnh0WlZxbUo3Z01NVkJFcDAiLCJtYWMiOiIyMGUyYzFiYmVmYmU0ZDgwY2QxM2QxMzIwODFmMzU1MTQ2ZTU4NTBjODkxZjdhMDNjYjEyYjQyNTg2ZDUyNjQ2IiwidGFnIjoiIn0%3D; expires=Sat, 12 Apr 2025 18:27:48 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Im1SSmxLSkY5eStnYVEwRVFHTUpQNFE9PSIsInZhbHVlIjoiaUlxbG4vN0tVZ29yYXZBY0diemlkckIwcWZvUTJOd2Y1VU8vMmJoODhMTlgxSUdlNG5VTlE4QngzK3kxT3dITjR3b0lTT" 1 => "laravel_session=eyJpdiI6IjlsQnh3VzY2WjlDbWw1T2NSazk1ZWc9PSIsInZhbHVlIjoia1RNNlJnVlRjRW5kUzJqVnE1L3Ywak04NEZ1dWh1ak9iR1MwNEp3aEdXUllXRGNkUWVjY3VDLy9RYmYvVTk1RW5CSTVQeVlSRWdCRkRZUkxvUFczRE51aE9OKzE5TnBROEZ1MUxBS3lWcDdYamh1c0JMckNsam9pMXpQU0QyY1IiLCJtYWMiOiJkZWQwNzE3ZjcwOWMxZWM2NzMwYTNjYWY3ODcxMjllNDYxOWI4ZjdlOTM5ZDRhNWVlYjNlMWY1NjBkZmRjYzFiIiwidGFnIjoiIn0%3D; expires=Sat, 12 Apr 2025 18:27:48 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IjlsQnh3VzY2WjlDbWw1T2NSazk1ZWc9PSIsInZhbHVlIjoia1RNNlJnVlRjRW5kUzJqVnE1L3Ywak04NEZ1dWh1ak9iR1MwNEp3aEdXUllXRGNkUWVjY3VDLy9RYmYvVTk1RW5C" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Im1SSmxLSkY5eStnYVEwRVFHTUpQNFE9PSIsInZhbHVlIjoiaUlxbG4vN0tVZ29yYXZBY0diemlkckIwcWZvUTJOd2Y1VU8vMmJoODhMTlgxSUdlNG5VTlE4QngzK3kxT3dITjR3b0lTTUdhZUNuQmp1ajV6ejVQWStYaHA3Qks5SU1icmdkc0pBWm5Nc2piMTVZZnh0WlZxbUo3Z01NVkJFcDAiLCJtYWMiOiIyMGUyYzFiYmVmYmU0ZDgwY2QxM2QxMzIwODFmMzU1MTQ2ZTU4NTBjODkxZjdhMDNjYjEyYjQyNTg2ZDUyNjQ2IiwidGFnIjoiIn0%3D; expires=Sat, 12-Apr-2025 18:27:48 GMT; path=/XSRF-TOKEN=eyJpdiI6Im1SSmxLSkY5eStnYVEwRVFHTUpQNFE9PSIsInZhbHVlIjoiaUlxbG4vN0tVZ29yYXZBY0diemlkckIwcWZvUTJOd2Y1VU8vMmJoODhMTlgxSUdlNG5VTlE4QngzK3kxT3dITjR3b0lTT" 1 => "laravel_session=eyJpdiI6IjlsQnh3VzY2WjlDbWw1T2NSazk1ZWc9PSIsInZhbHVlIjoia1RNNlJnVlRjRW5kUzJqVnE1L3Ywak04NEZ1dWh1ak9iR1MwNEp3aEdXUllXRGNkUWVjY3VDLy9RYmYvVTk1RW5CSTVQeVlSRWdCRkRZUkxvUFczRE51aE9OKzE5TnBROEZ1MUxBS3lWcDdYamh1c0JMckNsam9pMXpQU0QyY1IiLCJtYWMiOiJkZWQwNzE3ZjcwOWMxZWM2NzMwYTNjYWY3ODcxMjllNDYxOWI4ZjdlOTM5ZDRhNWVlYjNlMWY1NjBkZmRjYzFiIiwidGFnIjoiIn0%3D; expires=Sat, 12-Apr-2025 18:27:48 GMT; path=/; httponlylaravel_session=eyJpdiI6IjlsQnh3VzY2WjlDbWw1T2NSazk1ZWc9PSIsInZhbHVlIjoia1RNNlJnVlRjRW5kUzJqVnE1L3Ywak04NEZ1dWh1ak9iR1MwNEp3aEdXUllXRGNkUWVjY3VDLy9RYmYvVTk1RW5C" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "J1IiPZVFLOv7UBJebKcRrkdLfQ2vHC6EDK7Vu7yo" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/docker-essentials-&-building-a-containerized-web-application" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]