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 Version220msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (121ms)
    • Application (98.87ms)
    • 1 x Booting (54.88%)
      120.87ms
      1 x Application (44.89%)
      98.87ms
      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 executed13.33ms
      • select * from `courses` where `slug_ar` = 'docker-essentials:-a-developer-introduction' limit 1
        11.48ms/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-05-14 20:51:33' where `id` = 6847
        550μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-05-14 20:51:33
        • 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)
        240μ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)
        160μ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
        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 `providers` where `providers`.`id` in (17) and `providers`.`deleted_at` is null
        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 * from `html_files` where `html_files`.`id` = 6838 limit 1
        490μ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
        YPh8SjYxoME2TJ6mFMfPj05K7eZEbAFVAJen0nun
        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 => "3.147.103.159" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "3.147.103.159" ] "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 => "93fd4632ff1a0102-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" => "3.147.103.159" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "3.147.103.159" "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" => "93fd4632ff1a0102-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" => "59152" "REMOTE_ADDR" => "172.70.178.169" "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" => 1747255893.2256 "REQUEST_TIME" => 1747255893 ]
        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 => "Wed, 14 May 2025 20:51:33 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImxOMmNpS3FTUFJSLzRySEp3cUtvQWc9PSIsInZhbHVlIjoiSmhEQ1hJa2s1aVlvcjBCMWVPelM3RDVNZHdrVVhkU1dUc1RmN2JMUVFEZDdSVzJGWVpSamZvVGJRd3NUMk1lM3VUaW9tVURoZldlUTJ1Q0JzT3ppdkZvQUhmY1phWGg4eHhBWk5nTFFQRGwzRzM3QkZiTVhPWXptSmEybHptdlYiLCJtYWMiOiI4NDQyMjVlZjRjMTY1NDVkNjk1OWJiOWE4Mjk2YzRiODYxNTgzYTdhYjM3Y2IxNDcwNjZmYTQzZTI1MTVjZmU2IiwidGFnIjoiIn0%3D; expires=Wed, 14 May 2025 22:51:33 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImxOMmNpS3FTUFJSLzRySEp3cUtvQWc9PSIsInZhbHVlIjoiSmhEQ1hJa2s1aVlvcjBCMWVPelM3RDVNZHdrVVhkU1dUc1RmN2JMUVFEZDdSVzJGWVpSamZvVGJRd3NUMk1lM3VUaW9tV" 1 => "laravel_session=eyJpdiI6Ik1kdkZJcW1hc3orU0dyRndNZzZUVmc9PSIsInZhbHVlIjoiT0daNXJKd3BEN3NmNlhWVU1EbW00YTBDSGJsZzJCa0JkSzB6RXZ1UHh2OTl6ajEyNWU0VWZpVy9BZ3FRajcxMDcyZmxCNWZUNUJ0WVRUQm82U3BiWlVYNFZPQmFsc3hHbytaYXJtUnlCbFV5YmFFZUdid3JBTkM5S2s5TTFlbDAiLCJtYWMiOiJhMzdlNTMzMjU1OGZmZjM2NjU2M2Y3NjgwNGJjNzI4OTAzZWZjODFhMjE2Zjc3NTUzZGM1MTA3MmQwMzg2MDE4IiwidGFnIjoiIn0%3D; expires=Wed, 14 May 2025 22:51:33 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik1kdkZJcW1hc3orU0dyRndNZzZUVmc9PSIsInZhbHVlIjoiT0daNXJKd3BEN3NmNlhWVU1EbW00YTBDSGJsZzJCa0JkSzB6RXZ1UHh2OTl6ajEyNWU0VWZpVy9BZ3FRajcxMDcy" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImxOMmNpS3FTUFJSLzRySEp3cUtvQWc9PSIsInZhbHVlIjoiSmhEQ1hJa2s1aVlvcjBCMWVPelM3RDVNZHdrVVhkU1dUc1RmN2JMUVFEZDdSVzJGWVpSamZvVGJRd3NUMk1lM3VUaW9tVURoZldlUTJ1Q0JzT3ppdkZvQUhmY1phWGg4eHhBWk5nTFFQRGwzRzM3QkZiTVhPWXptSmEybHptdlYiLCJtYWMiOiI4NDQyMjVlZjRjMTY1NDVkNjk1OWJiOWE4Mjk2YzRiODYxNTgzYTdhYjM3Y2IxNDcwNjZmYTQzZTI1MTVjZmU2IiwidGFnIjoiIn0%3D; expires=Wed, 14-May-2025 22:51:33 GMT; path=/XSRF-TOKEN=eyJpdiI6ImxOMmNpS3FTUFJSLzRySEp3cUtvQWc9PSIsInZhbHVlIjoiSmhEQ1hJa2s1aVlvcjBCMWVPelM3RDVNZHdrVVhkU1dUc1RmN2JMUVFEZDdSVzJGWVpSamZvVGJRd3NUMk1lM3VUaW9tV" 1 => "laravel_session=eyJpdiI6Ik1kdkZJcW1hc3orU0dyRndNZzZUVmc9PSIsInZhbHVlIjoiT0daNXJKd3BEN3NmNlhWVU1EbW00YTBDSGJsZzJCa0JkSzB6RXZ1UHh2OTl6ajEyNWU0VWZpVy9BZ3FRajcxMDcyZmxCNWZUNUJ0WVRUQm82U3BiWlVYNFZPQmFsc3hHbytaYXJtUnlCbFV5YmFFZUdid3JBTkM5S2s5TTFlbDAiLCJtYWMiOiJhMzdlNTMzMjU1OGZmZjM2NjU2M2Y3NjgwNGJjNzI4OTAzZWZjODFhMjE2Zjc3NTUzZGM1MTA3MmQwMzg2MDE4IiwidGFnIjoiIn0%3D; expires=Wed, 14-May-2025 22:51:33 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik1kdkZJcW1hc3orU0dyRndNZzZUVmc9PSIsInZhbHVlIjoiT0daNXJKd3BEN3NmNlhWVU1EbW00YTBDSGJsZzJCa0JkSzB6RXZ1UHh2OTl6ajEyNWU0VWZpVy9BZ3FRajcxMDcy" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "YPh8SjYxoME2TJ6mFMfPj05K7eZEbAFVAJen0nun" "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" => [] ]