Docker Essentials: A Developer Introduction

بواسطة: 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
الذهاب الي الدورة

Docker Essentials: A Developer Introduction

بواسطة: Cognitive Class

  • Cognitive Class
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • beginner
  • N/A
8.1.2PHP Version209msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (126ms)
    • Application (83.16ms)
    • 1 x Booting (60.08%)
      125.86ms
      1 x Application (39.69%)
      83.16ms
      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
      7 statements were executed12.27ms
      • select * from `courses` where `slug_ar` = 'docker-essentials:-a-developer-introduction' limit 1
        10.98ms/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-04-10 11:14:35' where `id` = 6847
        450μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-10 11:14:35
        • 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)
        160μ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)
        130μ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
        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 `providers` where `providers`.`id` in (17) and `providers`.`deleted_at` is null
        150μ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
        230μ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
        Fyj5ew9EUsmRoRUmEX0CfrLmRnJT9rOKdybvXHq2
        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/docker...
        _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/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 => "18.191.4.164" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "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 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "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 => "92e1d246dc21064d-IAD" ] "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" ] "x-forwarded-for" => array:1 [ 0 => "18.191.4.164" ] "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" => "18.191.4.164" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "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" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "92e1d246dc21064d-IAD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "18.191.4.164" "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" => "58324" "REMOTE_ADDR" => "172.71.194.46" "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/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" => 1744283674.9195 "REQUEST_TIME" => 1744283674 ]
        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 11:14:35 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IktFaFAvbHVkOEpSYVh1S3pSTGhlS2c9PSIsInZhbHVlIjoidDNYeURXaFZra2ZGdjg0b0JkVFA0TjJCeHBqZ2IyakxCaTQxWHhKUldURXFWVDk4WjJ4MW02akNxcFZiMEJ2Q01tWTR6dHBMM0V4ZkdjdFRUVFh0S2h4bjBzbnA5azR2ZUkwSVZSYk9ocFlvcTRvVGNQdjF3K0xQZXZWQTIzTnEiLCJtYWMiOiJhMWZhZjM3ZDE0YWY5Y2NjYzQ5YjMzYmMzYzAwOTM0NGRmMDJlNjllOGVhNmUyOGUyYjE4MDE1MWUyNzExNGFlIiwidGFnIjoiIn0%3D; expires=Thu, 10 Apr 2025 13:14:35 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IktFaFAvbHVkOEpSYVh1S3pSTGhlS2c9PSIsInZhbHVlIjoidDNYeURXaFZra2ZGdjg0b0JkVFA0TjJCeHBqZ2IyakxCaTQxWHhKUldURXFWVDk4WjJ4MW02akNxcFZiMEJ2Q01tWTR6d" 1 => "laravel_session=eyJpdiI6ImtGbEhWVk9zRkdLcXpqSm9SWFl4THc9PSIsInZhbHVlIjoiRTkxTXF0RnFKZEV0V0ZGYTc2T01wUG80a29HUTMvLzVlNE44UU5Va2NOK3NOclkxZFR4VUJ0KzEyY3Ztb1ljdzhDTlNUcTczdHBlcUxRc3V3d25TUFhXam1vc0d1QTBERGh6bmNOYnE5WDlrcG1WeGhuMzNZTlhzSXFqK1dTSm4iLCJtYWMiOiI5Zjc2NmQ5ZDlhYzIxODFiNjEzZWJjZTg3YTVjYmFjOTdiZDhmOGQwYjI4YzQyOWUxNTg4ZGI1M2QwM2FlNDRiIiwidGFnIjoiIn0%3D; expires=Thu, 10 Apr 2025 13:14:35 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6ImtGbEhWVk9zRkdLcXpqSm9SWFl4THc9PSIsInZhbHVlIjoiRTkxTXF0RnFKZEV0V0ZGYTc2T01wUG80a29HUTMvLzVlNE44UU5Va2NOK3NOclkxZFR4VUJ0KzEyY3Ztb1ljdzhD" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IktFaFAvbHVkOEpSYVh1S3pSTGhlS2c9PSIsInZhbHVlIjoidDNYeURXaFZra2ZGdjg0b0JkVFA0TjJCeHBqZ2IyakxCaTQxWHhKUldURXFWVDk4WjJ4MW02akNxcFZiMEJ2Q01tWTR6dHBMM0V4ZkdjdFRUVFh0S2h4bjBzbnA5azR2ZUkwSVZSYk9ocFlvcTRvVGNQdjF3K0xQZXZWQTIzTnEiLCJtYWMiOiJhMWZhZjM3ZDE0YWY5Y2NjYzQ5YjMzYmMzYzAwOTM0NGRmMDJlNjllOGVhNmUyOGUyYjE4MDE1MWUyNzExNGFlIiwidGFnIjoiIn0%3D; expires=Thu, 10-Apr-2025 13:14:35 GMT; path=/XSRF-TOKEN=eyJpdiI6IktFaFAvbHVkOEpSYVh1S3pSTGhlS2c9PSIsInZhbHVlIjoidDNYeURXaFZra2ZGdjg0b0JkVFA0TjJCeHBqZ2IyakxCaTQxWHhKUldURXFWVDk4WjJ4MW02akNxcFZiMEJ2Q01tWTR6d" 1 => "laravel_session=eyJpdiI6ImtGbEhWVk9zRkdLcXpqSm9SWFl4THc9PSIsInZhbHVlIjoiRTkxTXF0RnFKZEV0V0ZGYTc2T01wUG80a29HUTMvLzVlNE44UU5Va2NOK3NOclkxZFR4VUJ0KzEyY3Ztb1ljdzhDTlNUcTczdHBlcUxRc3V3d25TUFhXam1vc0d1QTBERGh6bmNOYnE5WDlrcG1WeGhuMzNZTlhzSXFqK1dTSm4iLCJtYWMiOiI5Zjc2NmQ5ZDlhYzIxODFiNjEzZWJjZTg3YTVjYmFjOTdiZDhmOGQwYjI4YzQyOWUxNTg4ZGI1M2QwM2FlNDRiIiwidGFnIjoiIn0%3D; expires=Thu, 10-Apr-2025 13:14:35 GMT; path=/; httponlylaravel_session=eyJpdiI6ImtGbEhWVk9zRkdLcXpqSm9SWFl4THc9PSIsInZhbHVlIjoiRTkxTXF0RnFKZEV0V0ZGYTc2T01wUG80a29HUTMvLzVlNE44UU5Va2NOK3NOclkxZFR4VUJ0KzEyY3Ztb1ljdzhD" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "Fyj5ew9EUsmRoRUmEX0CfrLmRnJT9rOKdybvXHq2" "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/docker-essentials:-a-developer-introduction" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]