Docker Essentials: A Developer Introduction

Brought by: Cognitive Class

Overview

Containers are a standard way to package an application and all its dependencies so that the application can be moved between environments and run without changes. Containers work by isolating the application inside the container so that everything outside the container can be standardized.Docker has provided a set of tools to simplify the use of containers. This has led to massive adoption of containers by developers and operators. In this course, you will focus mostly on Docker container technologies.In this course, you'll follow a series of hands-on labs that demonstrate how to use containers for your applications. You'll start with the basics: creating and running your first Docker containers. By the end of the course, you'll get a brief introduction to running containers in production with the and how to solve problems of advanced orchestration such as high availability, service discovery, and reconciliation.

Syllabus

Set up DockerLab 1: Run your first container
  • What are containers?
  • 1. Run a container
  • 2. Run multiple containers
  • 3. Remove the containers
Lab 2: Add CI/CD value with Docker images
  • Docker images
  • 1. Create a Python app (without using Docker)
  • 2. Create and build the Docker image
  • 3. Run the Docker image
  • 4. Push to a central registry
  • 5. Deploy a change
  • 6. Understand image layers
  • 7. Remove containers
Lab 3. Orchestrate applications with Docker Swarm
  • Container orchestration overview
  • 1. Create your first swarm
  • 2. Deploy your first service
  • 3. Scale your service
  • 4. Apply rolling updates
  • 5. Reconcile problems with containers
  • 6. Determine how many nodes you need
  • Final exam
Docker Essentials: A Developer Introduction
Go to course

Docker Essentials: A Developer Introduction

Brought by: Cognitive Class

  • Cognitive Class
  • Free
  • English
  • Certificate Not Available
  • Available at any time
  • beginner
  • N/A
8.1.2PHP Version737msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (455ms)
    • Application (280ms)
    • 1 x Booting (61.73%)
      454.80ms
      1 x Application (38.03%)
      280.18ms
      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 executed21.64ms
      • select * from `courses` where `slug_en` = 'docker-essentials:-a-developer-introduction' limit 1
        19.9ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. docker-essentials:-a-developer-introduction
        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-06-14 08:36:17' where `id` = 6847
        680μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-14 08:36:17
        • 1. 6847
        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)
        170μ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 (46) and `institutions`.`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 `providers` where `providers`.`id` in (17) and `providers`.`deleted_at` is null
        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 * from `html_files` where `html_files`.`id` = 6838 limit 1
        240μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 6838
        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
        s3I3INRZCNkMab1pLhJFG6A55pCbz1XllfrigO31
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/docker-essentials:-a-developer-introducti...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/docker-essentials:-a-developer-introduction
        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 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.236" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.236" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "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" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "94f87fc46c5c61e4-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "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_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.236" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.236" "HTTP_SEC_FETCH_SITE" => "none" "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_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "94f87fc46c5c61e4-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "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" => "40312" "REMOTE_ADDR" => "172.70.194.154" "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:-a-developer-introduction" "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" => 1749890176.9868 "REQUEST_TIME" => 1749890176 ]
        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, 14 Jun 2025 08:36:17 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IldQV0cxSllYVS9iRUlIcytvSW9mSEE9PSIsInZhbHVlIjoiS0x1dHppRVVIc3dTSnhRVVhTUlUzbXFuVUp1VDZOdGxFeUFNdFhubnNveWROUnRRdlNQcUgrT2hCU0VXaUd1aWNQZmh5MWFsaE8wTFpKWU1RbE1uSDR3NWNLMU1EZlFPbTU0emJ0NjdWT3lBRU52d0ZndnB6MjZXckJpeFd2cC8iLCJtYWMiOiI1ODJmYWZmNTNmZGI2NWI3NWUzOTJlZWVlMWVjYzY0OGI3YzkxMzcxMmE1NDM3ZDA1ZGRhYzg5MmQxOGI1Y2Q0IiwidGFnIjoiIn0%3D; expires=Sat, 14 Jun 2025 10:36:17 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IldQV0cxSllYVS9iRUlIcytvSW9mSEE9PSIsInZhbHVlIjoiS0x1dHppRVVIc3dTSnhRVVhTUlUzbXFuVUp1VDZOdGxFeUFNdFhubnNveWROUnRRdlNQcUgrT2hCU0VXaUd1aWNQZmh5M" 1 => "laravel_session=eyJpdiI6Ik42K2w0eXpiRm9mNkVUbVRXbkFzUGc9PSIsInZhbHVlIjoicmpja0JiSlFkMUYrejJMSUZ6VFh0QXhucGNyNjVxaDJxQ1BOV2xROGo0QVhwOWF5b1RwTEsvOFdvWnh2czhneGQ3c1dPOTVMMUFJdVAvWDdlR0x4RkNoWkJranlsdUhkUkV1Mk5rK3VjdktsR0xCYThKY2c0L2FEWDN6aXU2b2EiLCJtYWMiOiIwOGViMjVhM2NiYThkZmI1MjdhOWU3ZTQ5OTg4MzYwZmE4YTMwNWQzZjcyNGM2YTNiY2M1MjQ2NjdjZDAxYzQ2IiwidGFnIjoiIn0%3D; expires=Sat, 14 Jun 2025 10:36:17 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik42K2w0eXpiRm9mNkVUbVRXbkFzUGc9PSIsInZhbHVlIjoicmpja0JiSlFkMUYrejJMSUZ6VFh0QXhucGNyNjVxaDJxQ1BOV2xROGo0QVhwOWF5b1RwTEsvOFdvWnh2czhneGQ3" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IldQV0cxSllYVS9iRUlIcytvSW9mSEE9PSIsInZhbHVlIjoiS0x1dHppRVVIc3dTSnhRVVhTUlUzbXFuVUp1VDZOdGxFeUFNdFhubnNveWROUnRRdlNQcUgrT2hCU0VXaUd1aWNQZmh5MWFsaE8wTFpKWU1RbE1uSDR3NWNLMU1EZlFPbTU0emJ0NjdWT3lBRU52d0ZndnB6MjZXckJpeFd2cC8iLCJtYWMiOiI1ODJmYWZmNTNmZGI2NWI3NWUzOTJlZWVlMWVjYzY0OGI3YzkxMzcxMmE1NDM3ZDA1ZGRhYzg5MmQxOGI1Y2Q0IiwidGFnIjoiIn0%3D; expires=Sat, 14-Jun-2025 10:36:17 GMT; path=/XSRF-TOKEN=eyJpdiI6IldQV0cxSllYVS9iRUlIcytvSW9mSEE9PSIsInZhbHVlIjoiS0x1dHppRVVIc3dTSnhRVVhTUlUzbXFuVUp1VDZOdGxFeUFNdFhubnNveWROUnRRdlNQcUgrT2hCU0VXaUd1aWNQZmh5M" 1 => "laravel_session=eyJpdiI6Ik42K2w0eXpiRm9mNkVUbVRXbkFzUGc9PSIsInZhbHVlIjoicmpja0JiSlFkMUYrejJMSUZ6VFh0QXhucGNyNjVxaDJxQ1BOV2xROGo0QVhwOWF5b1RwTEsvOFdvWnh2czhneGQ3c1dPOTVMMUFJdVAvWDdlR0x4RkNoWkJranlsdUhkUkV1Mk5rK3VjdktsR0xCYThKY2c0L2FEWDN6aXU2b2EiLCJtYWMiOiIwOGViMjVhM2NiYThkZmI1MjdhOWU3ZTQ5OTg4MzYwZmE4YTMwNWQzZjcyNGM2YTNiY2M1MjQ2NjdjZDAxYzQ2IiwidGFnIjoiIn0%3D; expires=Sat, 14-Jun-2025 10:36:17 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik42K2w0eXpiRm9mNkVUbVRXbkFzUGc9PSIsInZhbHVlIjoicmpja0JiSlFkMUYrejJMSUZ6VFh0QXhucGNyNjVxaDJxQ1BOV2xROGo0QVhwOWF5b1RwTEsvOFdvWnh2czhneGQ3" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "s3I3INRZCNkMab1pLhJFG6A55pCbz1XllfrigO31" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/docker-essentials:-a-developer-introduction" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]