title
Docker Tutorial for Beginners - A Full DevOps Course on How to Run Applications in Containers
description
Get started using Docker with this end-to-end beginners course with hands-on labs.
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications, whether on laptops, data center VMs, or the cloud.
In this course you will learn Docker through a series of lectures that use animation, illustration and some fun analogies that simply complex concepts, we have demos that will show how to install and get started with Docker and most importantly we have hands-on labs that you can access right in your browser.
💻 Practice Labs: https://bit.ly/3IxaqRN
🔗 KodeKloud Website: https://www.kodekloud.com
🎥 Tutorial from KodeKloud. Check out their Youtube Channel: https://www.youtube.com/user/mmumshad
⭐️ Course Contents ⭐️
⌨️ (0:00:00) Introduction
⌨️ (0:02:35) Docker Overview
⌨️ (0:05:10) Getting Started
⌨️ (0:16:58) Install Docker
⌨️ (0:21:00) Commands
⌨️ (0:29:00) Labs
⌨️ (0:33:12) Run
⌨️ (0:42:19) Environment Variables
⌨️ (0:44:07) Images
⌨️ (0:51:38) CMD vs ENTRYPOINT
⌨️ (0:58:37) Networking
⌨️ (1:03:55) Storage
⌨️ (1:16:27) Compose
⌨️ (1:34:49) Registry
⌨️ (1:39:38) Engine
⌨️ (1:46:20) Docker on Windows
⌨️ (1:53:22) Docker on Mac
⌨️ (1:55:20) Container Orchestration
⌨️ (1:59:25) Docker Swarm
⌨️ (2:03:21) Kubernetes
⌨️ (2:09:30) Conclusion
--
Learn to code for free and get a developer job: https://www.freecodecamp.org
Read hundreds of articles on programming: https://www.freecodecamp.org/news
detail
{'title': 'Docker Tutorial for Beginners - A Full DevOps Course on How to Run Applications in Containers', 'heatmap': [{'end': 6103.146, 'start': 6014.986, 'weight': 1}], 'summary': 'This docker tutorial provides a comprehensive course covering docker basics, setup, networking, storage, registry, and solutions for windows and mac, with emphasis on benefits, environment setup, and practical applications, aiming to simplify complex concepts and provide a fun learning experience.', 'chapters': [{'end': 149.459, 'segs': [{'end': 43.43, 'src': 'embed', 'start': 18.899, 'weight': 1, 'content': [{'end': 28.741, 'text': "I've been working in the industry as a consultant for over 13 years and have helped hundreds of 1000s of students learn technology in a fun and interactive way.", 'start': 18.899, 'duration': 9.842}, {'end': 34.625, 'text': 'In this course, you will learn Docker through a series of lectures that use animation,', 'start': 29.401, 'duration': 5.224}, {'end': 39.128, 'text': 'illustration and some fun analogies that simplify complex concepts.', 'start': 34.625, 'duration': 4.503}, {'end': 43.43, 'text': 'We have demos that will show you how to install and get started with Docker.', 'start': 39.708, 'duration': 3.722}], 'summary': 'Over 13 years of industry experience, teaching 1000s of students docker with interactive, fun lectures and demos.', 'duration': 24.531, 'max_score': 18.899, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo18899.jpg'}, {'end': 130.466, 'src': 'embed', 'start': 104.843, 'weight': 0, 'content': [{'end': 113.365, 'text': 'But as part of this course, we provide real labs that you can access right in your browser, anywhere, anytime, and as many times as you want.', 'start': 104.843, 'duration': 8.522}, {'end': 119.993, 'text': 'The labs give you instant access to a terminal to a Docker host and an accompanying quiz portal.', 'start': 114.145, 'duration': 5.848}, {'end': 125.92, 'text': 'The quiz portal asks a set of questions such as exploring the environment and gathering information.', 'start': 120.694, 'duration': 5.226}, {'end': 130.466, 'text': 'Or you might be asked to perform an action such as run Docker container.', 'start': 126.481, 'duration': 3.985}], 'summary': 'Course offers real labs accessible in browser, with quizzes and docker access.', 'duration': 25.623, 'max_score': 104.843, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo104843.jpg'}], 'start': 4.156, 'title': 'Docker for beginners course', 'summary': "Introduces the docker for beginners course, covering the instructor's background, course objectives, hands-on labs, and interactive quizzes, aiming to simplify complex concepts and provide a fun learning experience.", 'chapters': [{'end': 149.459, 'start': 4.156, 'title': 'Docker for beginners course', 'summary': "Introduces the docker for beginners course, covering the instructor's background, course objectives, and hands-on labs that provide real-time access to docker environments and interactive quizzes, aiming to simplify complex concepts and provide a fun learning experience.", 'duration': 145.303, 'highlights': ['The course offers hands-on labs that provide real-time access to a terminal, Docker host, and accompanying quiz portal, allowing users to access the labs anywhere, anytime, and as many times as desired. The labs give instant access to a terminal to a Docker host and an accompanying quiz portal, providing flexibility and convenience for users to access the labs.', 'The instructor has over 13 years of industry experience as a DevOps and cloud trainer, aiming to make learning technology fun and interactive. The instructor has over 13 years of industry experience and aims to make learning technology fun and interactive, demonstrating expertise and commitment to engaging teaching.', 'The course aims to simplify complex concepts through animation, illustration, and fun analogies, and includes hands-on demos for installing and starting with Docker. The course uses animation, illustration, and fun analogies to simplify complex concepts, combined with hands-on demos for practical learning experiences.']}], 'duration': 145.303, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo4156.jpg', 'highlights': ['The labs provide real-time access to a terminal, Docker host, and quiz portal, offering flexibility and convenience for users.', 'The instructor has over 13 years of industry experience as a DevOps and cloud trainer, demonstrating expertise and commitment to engaging teaching.', 'The course simplifies complex concepts through animation, illustration, and fun analogies, combined with hands-on demos for practical learning experiences.']}, {'end': 1084.842, 'segs': [{'end': 185.384, 'src': 'embed', 'start': 159.087, 'weight': 5, 'content': [{'end': 164.771, 'text': "We're going to start by looking at a high level overview on why you need Docker and what it can do for you.", 'start': 159.087, 'duration': 5.684}, {'end': 168.093, 'text': 'Let me start by sharing how I got introduced to Docker.', 'start': 165.371, 'duration': 2.722}, {'end': 176.698, 'text': 'In one of my previous projects, I had this requirement to set up an end to end application stack including various different technologies,', 'start': 168.633, 'duration': 8.065}, {'end': 185.384, 'text': 'like a web server using NodeJS and a database such as MongoDB, and a messaging system like Redis and an orchestration tool like Ansible.', 'start': 176.698, 'duration': 8.686}], 'summary': 'Docker provides solution for setting up complex application stack with various technologies.', 'duration': 26.297, 'max_score': 159.087, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo159087.jpg'}, {'end': 343.069, 'src': 'embed', 'start': 320.99, 'weight': 0, 'content': [{'end': 332.82, 'text': 'With Docker, I was able to run each component in a separate container with its own dependencies and its own libraries, all on the same VM and the OS,', 'start': 320.99, 'duration': 11.83}, {'end': 335.842, 'text': 'but within separate environments or containers.', 'start': 332.82, 'duration': 3.022}, {'end': 338.425, 'text': 'we just had to build the Docker configuration once.', 'start': 335.842, 'duration': 2.583}, {'end': 343.069, 'text': 'And all our developers could now get started with a simple Docker run command.', 'start': 338.945, 'duration': 4.124}], 'summary': 'Docker enabled separate containerization for each component, simplifying setup for developers.', 'duration': 22.079, 'max_score': 320.99, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo320990.jpg'}, {'end': 645.145, 'src': 'embed', 'start': 618.363, 'weight': 1, 'content': [{'end': 622.487, 'text': 'whereas Docker containers are lightweight and are usually in megabytes in size.', 'start': 618.363, 'duration': 4.124}, {'end': 631.074, 'text': 'This allows Docker containers to boot up faster, usually in a matter of seconds, whereas VMs, as we know, takes minutes to boot up,', 'start': 623.308, 'duration': 7.766}, {'end': 634.637, 'text': 'as it needs to boot up the entire operating system.', 'start': 631.074, 'duration': 3.563}, {'end': 642.182, 'text': 'is also important to note that Docker has less isolation, as more resources are shared between the containers, like the kernel,', 'start': 634.637, 'duration': 7.545}, {'end': 645.145, 'text': 'whereas VMs have complete isolation from each other.', 'start': 642.182, 'duration': 2.963}], 'summary': 'Docker containers are lightweight, boot up in seconds, have less isolation compared to vms.', 'duration': 26.782, 'max_score': 618.363, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo618363.jpg'}, {'end': 695.531, 'src': 'embed', 'start': 665.638, 'weight': 2, 'content': [{'end': 667.339, 'text': 'containers and virtual machines.', 'start': 665.638, 'duration': 1.701}, {'end': 674.161, 'text': 'Now, when you have large environments with 1000s of application containers running on 1000s of Docker hosts,', 'start': 667.999, 'duration': 6.162}, {'end': 677.882, 'text': 'you will often see containers provisioned on virtual Docker hosts.', 'start': 674.161, 'duration': 3.721}, {'end': 682.344, 'text': 'That way, we can utilize the advantages of both technologies.', 'start': 678.543, 'duration': 3.801}, {'end': 688.286, 'text': 'we can use the benefits of virtualization to easily provision or decommission Docker hosts as required.', 'start': 682.344, 'duration': 5.942}, {'end': 695.531, 'text': 'At the same time, make use of the benefits of Docker to easily provision applications and quickly scale them as required.', 'start': 688.766, 'duration': 6.765}], 'summary': 'In large environments, 1000s of application containers run on 1000s of docker hosts, utilizing both virtualization and docker technologies for provisioning and scaling applications.', 'duration': 29.893, 'max_score': 665.638, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo665638.jpg'}, {'end': 877.591, 'src': 'embed', 'start': 846.293, 'weight': 3, 'content': [{'end': 851.779, 'text': 'Since the ops team did not really develop the application on their own, they struggle with setting it up.', 'start': 846.293, 'duration': 5.486}, {'end': 855.102, 'text': 'When they hit an issue, they work with the developers to resolve it.', 'start': 852.259, 'duration': 2.843}, {'end': 865.605, 'text': 'With Docker, the developers and operations teams work hand in hand to transform the guide into a Docker file with both of their requirements.', 'start': 856.141, 'duration': 9.464}, {'end': 869.967, 'text': 'This Docker file is then used to create an image for their applications.', 'start': 866.266, 'duration': 3.701}, {'end': 877.591, 'text': 'This image can now run on any host with Docker installed on it, and is guaranteed to run the same way everywhere.', 'start': 870.668, 'duration': 6.923}], 'summary': 'Ops team collaborates with developers to create docker image for applications, ensuring consistent deployment.', 'duration': 31.298, 'max_score': 846.293, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo846293.jpg'}, {'end': 926.289, 'src': 'embed', 'start': 892.821, 'weight': 4, 'content': [{'end': 898.105, 'text': "And that's one example of how a tool like Docker contributes to the DevOps culture.", 'start': 892.821, 'duration': 5.284}, {'end': 899.947, 'text': "Well, that's it for now.", 'start': 898.966, 'duration': 0.981}, {'end': 904.11, 'text': 'And in the upcoming lecture, we will look at how to get started with Docker.', 'start': 900.447, 'duration': 3.663}, {'end': 916.926, 'text': 'We will now see how to get started with Docker.', 'start': 914.485, 'duration': 2.441}, {'end': 922.248, 'text': 'Now Docker has two editions, the Community Edition and the Enterprise Edition.', 'start': 917.486, 'duration': 4.762}, {'end': 926.289, 'text': 'The Community Edition is the set of free Docker products.', 'start': 922.988, 'duration': 3.301}], 'summary': 'Docker contributes to devops culture. docker has community and enterprise editions.', 'duration': 33.468, 'max_score': 892.821, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo892821.jpg'}], 'start': 159.087, 'title': 'Docker: benefits, overview & basics', 'summary': "Covers docker's benefits, including compatibility and ease of environment setup, its use in large environments with 1000s of application containers running on 1000s of docker hosts, and basics such as images, containers, and collaboration between developers and ops teams. it also emphasizes the process of installing docker on different operating systems, particularly the community edition for linux.", 'chapters': [{'end': 387.95, 'start': 159.087, 'title': 'Docker benefits and overview', 'summary': 'Discusses the challenges faced in managing multiple technologies in an application stack, the need for docker, and the benefits it brings, including compatibility, ease of environment setup, and development consistency.', 'duration': 228.863, 'highlights': ['Docker helped in resolving compatibility issues between various services and the underlying OS, saving time and effort in finding compatible versions. The issues with compatibility between different services and the underlying OS, along with the effort required to find compatible versions, made the application development challenging.', 'The process of setting up new environments for developers was simplified with Docker, reducing the number of commands and ensuring consistent environments across different OS. Docker simplified the setup of new environments for developers, reducing the number of commands and ensuring consistent environments across different operating systems.', 'Docker enabled running each component in a separate container with its own dependencies, allowing for modification of components without affecting others and ensuring compatibility across different environments. With Docker, each component could run in a separate container with its own dependencies, enabling modification without affecting others and ensuring compatibility across different environments.']}, {'end': 781.079, 'start': 388.05, 'title': 'Docker: os kernel sharing & containerization', 'summary': 'Explains how docker utilizes os kernel sharing, differentiates containers from virtual machines, and the advantages of using docker in large environments with 1000s of application containers running on 1000s of docker hosts.', 'duration': 393.029, 'highlights': ["Docker containers share the underlying kernel, allowing them to run different OS flavors as long as they are based on the same kernel, resulting in lightweight containers in megabytes compared to gigabytes for VMs. Docker's utilization of OS kernel sharing enables the lightweight nature of containers, typically in megabytes, compared to virtual machines, which are usually in gigabytes in size.", "Docker's purpose is to package and containerize applications, ship them, and run them anywhere, anytime, as many times as needed, distinguishing it from virtualization technologies like hypervisors. The main purpose of Docker is to package and containerize applications, allowing them to be run anywhere and anytime, in contrast to hypervisors, which are meant to virtualize and run different operating systems and kernels on the same hardware.", 'In large environments with 1000s of application containers running on 1000s of Docker hosts, containers are often provisioned on virtual Docker hosts to combine the advantages of both technologies. In large environments, containers are provisioned on virtual Docker hosts to leverage the benefits of both technologies - virtualization for easy provisioning or decommissioning of Docker hosts and Docker for quickly scaling applications.']}, {'end': 1084.842, 'start': 781.98, 'title': 'Understanding docker basics', 'summary': 'Explains the basics of docker, including the difference between images and containers, the collaboration between developers and ops teams in using docker, and the process of installing docker on different operating systems, emphasizing the community edition for linux.', 'duration': 302.862, 'highlights': ['Developers and operations teams collaborate to transform the guide into a Docker file, which is then used to create an image for their applications, ensuring consistent deployment across different hosts. Explain the collaboration between developers and ops teams in using Docker for consistent application deployment.', 'Containers are running instances of images that are isolated and have their own environments and set of processes, contributing to the DevOps culture by allowing the ops team to use the image to deploy the application. Describe the nature and purpose of containers in Docker, enabling consistent deployment and DevOps culture.', "The chapter explains the basics of Docker, including the difference between images and containers, the collaboration between developers and ops teams in using Docker, and the process of installing Docker on different operating systems, emphasizing the Community Edition for Linux. Provide an overview of the chapter's content, covering the basics of Docker and installation process."]}], 'duration': 925.755, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo159087.jpg', 'highlights': ['Docker simplified the setup of new environments for developers, reducing the number of commands and ensuring consistent environments across different operating systems.', "Docker's utilization of OS kernel sharing enables the lightweight nature of containers, typically in megabytes, compared to virtual machines, which are usually in gigabytes in size.", 'In large environments, containers are provisioned on virtual Docker hosts to leverage the benefits of both technologies - virtualization for easy provisioning or decommissioning of Docker hosts and Docker for quickly scaling applications.', 'Explain the collaboration between developers and ops teams in using Docker for consistent application deployment.', 'Describe the nature and purpose of containers in Docker, enabling consistent deployment and DevOps culture.', "Provide an overview of the chapter's content, covering the basics of Docker and installation process."]}, {'end': 1976.146, 'segs': [{'end': 1139.217, 'src': 'embed', 'start': 1113.916, 'weight': 0, 'content': [{'end': 1120.44, 'text': 'then installing the prerequisite packages and then adding Dockers, official GPT keys and then installing Docker.', 'start': 1113.916, 'duration': 6.524}, {'end': 1122.841, 'text': "But I'm not going to go that route.", 'start': 1121.46, 'duration': 1.381}, {'end': 1124.782, 'text': 'There is an easier way.', 'start': 1123.781, 'duration': 1.001}, {'end': 1132.353, 'text': 'If you scroll all the way to the bottom, you will find the instructions to install Docker using the convenience script.', 'start': 1125.99, 'duration': 6.363}, {'end': 1139.217, 'text': "It's a script that automates the entire installation process and works on most operating systems.", 'start': 1133.574, 'duration': 5.643}], 'summary': 'Install docker using the convenience script for easier, automated installation.', 'duration': 25.301, 'max_score': 1113.916, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1113916.jpg'}, {'end': 1362.226, 'src': 'embed', 'start': 1334.829, 'weight': 2, 'content': [{'end': 1339.372, 'text': "We'll talk about the command and port fields shown in this output later in this course.", 'start': 1334.829, 'duration': 4.543}, {'end': 1342.294, 'text': "For now, let's just focus on the basic commands.", 'start': 1339.912, 'duration': 2.382}, {'end': 1351, 'text': 'To stop a running container, use the Docker stop command, but you must provide either the container ID or the container name in the stop command.', 'start': 1343.295, 'duration': 7.705}, {'end': 1353.462, 'text': "you're not sure of the name.", 'start': 1351.821, 'duration': 1.641}, {'end': 1356.843, 'text': 'run the Docker ps command to get it on success.', 'start': 1353.462, 'duration': 3.381}, {'end': 1362.226, 'text': 'you will see the name printed out and running Docker ps again will show no running containers.', 'start': 1356.843, 'duration': 5.383}], 'summary': 'Learn basic docker commands - stop containers using docker stop command and get container name using docker ps command.', 'duration': 27.397, 'max_score': 1334.829, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1334829.jpg'}, {'end': 1503.813, 'src': 'embed', 'start': 1474.184, 'weight': 3, 'content': [{'end': 1477.085, 'text': 'Say you were to run a Docker container from an Ubuntu image.', 'start': 1474.184, 'duration': 2.901}, {'end': 1484.007, 'text': 'When you run the Docker run Ubuntu command, it runs an instance of Ubuntu image and exits immediately.', 'start': 1477.705, 'duration': 6.302}, {'end': 1488.288, 'text': "If you were to list the running containers, you wouldn't see the container running.", 'start': 1484.847, 'duration': 3.441}, {'end': 1495.769, 'text': 'If you list all containers, including those that are stopped, you will see that the new container you ran is in an exited state.', 'start': 1488.748, 'duration': 7.021}, {'end': 1503.813, 'text': 'Now, why is that? Unlike virtual machines, containers are not meant to host an operating system.', 'start': 1496.57, 'duration': 7.243}], 'summary': 'Running docker container from ubuntu image exits immediately due to containers not meant to host an operating system.', 'duration': 29.629, 'max_score': 1474.184, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1474184.jpg'}, {'end': 1636.341, 'src': 'embed', 'start': 1610.615, 'weight': 1, 'content': [{'end': 1615.018, 'text': "Finally, let's look at one more option before we head over to the practice exercises.", 'start': 1610.615, 'duration': 4.403}, {'end': 1620.162, 'text': "I'm now going to run a Docker image I developed for a simple web application.", 'start': 1615.959, 'duration': 4.203}, {'end': 1624.875, 'text': 'The repository name is code cloud slash simple web app.', 'start': 1620.933, 'duration': 3.942}, {'end': 1630.058, 'text': 'It runs a simple web server that listens on port 8080.', 'start': 1625.656, 'duration': 4.402}, {'end': 1636.341, 'text': 'When you run a Docker run command like this, it runs in the foreground or in an attached mode,', 'start': 1630.058, 'duration': 6.283}], 'summary': 'Running a docker image for a simple web app on port 8080.', 'duration': 25.726, 'max_score': 1610.615, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1610615.jpg'}, {'end': 1817.698, 'src': 'embed', 'start': 1786.804, 'weight': 4, 'content': [{'end': 1789.666, 'text': 'The quiz portal on the right gives you challenges to solve.', 'start': 1786.804, 'duration': 2.862}, {'end': 1794.448, 'text': 'Follow the quiz and try and answer the questions asked and complete the tasks given to you.', 'start': 1790.086, 'duration': 4.362}, {'end': 1801.632, 'text': 'Each scenario consists of anywhere from 10 to 20 questions that needs to be answered within 30 minutes to an hour.', 'start': 1795.389, 'duration': 6.243}, {'end': 1804.774, 'text': 'At the top, you have the question numbers.', 'start': 1802.853, 'duration': 1.921}, {'end': 1807.455, 'text': 'Below that is the remaining time for your lab.', 'start': 1805.014, 'duration': 2.441}, {'end': 1808.855, 'text': 'Below that is the question.', 'start': 1807.775, 'duration': 1.08}, {'end': 1813.617, 'text': 'If you are not able to solve the challenge, look for hints in the hints section.', 'start': 1809.355, 'duration': 4.262}, {'end': 1817.698, 'text': 'You may skip a question by hitting the skip button in the top right corner.', 'start': 1814.237, 'duration': 3.461}], 'summary': 'Quiz portal provides challenges with 10-20 questions, to be answered in 30 minutes to an hour.', 'duration': 30.894, 'max_score': 1786.804, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1786804.jpg'}, {'end': 1982.629, 'src': 'embed', 'start': 1953.429, 'weight': 5, 'content': [{'end': 1958.29, 'text': 'Also, remember to not store any private or confidential data on these systems.', 'start': 1953.429, 'duration': 4.861}, {'end': 1966.992, 'text': 'Remember that this environment is for learning purposes only and is only alive for an hour, after which the lab is destroyed.', 'start': 1959.19, 'duration': 7.802}, {'end': 1968.872, 'text': 'So does all your work.', 'start': 1967.892, 'duration': 0.98}, {'end': 1976.146, 'text': 'you may start over and access these labs as many times as you want until you feel confident.', 'start': 1970.203, 'duration': 5.943}, {'end': 1982.629, 'text': 'i will also post solutions to these lab quizzes, so if you run into issues, you may refer to those.', 'start': 1976.146, 'duration': 6.483}], 'summary': 'Lab environment is for learning only, lasts an hour, can access as many times as needed, solutions provided for reference.', 'duration': 29.2, 'max_score': 1953.429, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1953429.jpg'}], 'start': 1085.763, 'title': 'Docker setup and basics', 'summary': 'Covers setting up docker with version 19.03, running simple containers, and understanding basic docker commands. it also explains running containers, executing commands, and accessing and utilizing hands-on lab practice environment.', 'chapters': [{'end': 1473.624, 'start': 1085.763, 'title': 'Setting up docker and basic commands', 'summary': 'Covers setting up docker using a convenience script, installing a specific docker version 19.03, running a simple container, and understanding basic docker commands such as run, ps, stop, rm, images, and pull.', 'duration': 387.861, 'highlights': ['The convenience script automates the installation process and works on most operating systems.', 'The installation of Docker version 19.03 is successful.', 'Running a simple container using the Docker run command pulls the image from Docker Hub and runs it.', 'The Docker run command is used to run a container from an image, and the Docker ps command lists all running containers with basic information.', 'The Docker stop command is used to stop a running container, and the Docker rm command is used to remove a stopped or exited container permanently.', 'The Docker images command shows a list of available images and their sizes, and the Docker pull command is used to only pull the image and not run the container.']}, {'end': 1730.281, 'start': 1474.184, 'title': 'Understanding docker: basics and running containers', 'summary': 'Explains the basics of running docker containers, including the concept of containers running specific tasks, reasons for immediate container exits, executing commands on running containers, and running containers in detached mode.', 'duration': 256.097, 'highlights': ['Containers are meant to run specific tasks or processes, and they exit once the task is complete. Containers are intended for running specific tasks or processes, such as hosting web servers, application servers, databases, or computation/analysis tasks, and they exit once the task is complete.', 'Reason for immediate container exit from an Ubuntu image is due to the absence of a running process or application by default. The immediate exit of a container from an Ubuntu image is due to the absence of a running process or application by default, as Ubuntu is primarily a base image for other applications.', 'Executing commands on a running container using the Docker exec command, such as printing the contents of a file. The Docker exec command allows executing commands on a running container, for example, printing the contents of a file inside the container.', 'Running containers in attached and detached modes, with differences in interaction and behavior. Running containers in attached mode allows viewing the output of the web service and interacting with the console, while running in detached mode allows the container to run in the background without interaction until reattachment.']}, {'end': 1976.146, 'start': 1730.541, 'title': 'Accessing docker labs', 'summary': "Discusses how to access and utilize the hands-on lab practice environment, providing guidance on accessing the labs, navigating the interface, handling challenges, and emphasizing the learning environment's limitations and accessibility.", 'duration': 245.605, 'highlights': ['The labs open up right in your browser, with each scenario consisting of anywhere from 10 to 20 questions that need to be answered within 30 minutes to an hour. The labs open in the browser and contain 10-20 questions per scenario to be completed within 30 minutes to an hour.', 'The interface consists of two parts, a terminal on the left and a quiz portal on the right, with the quiz portal providing challenges to solve, each lecture having its own lab. The interface includes a terminal and quiz portal, with each lecture having its own lab and the quiz portal presenting challenges to solve.', 'The environment is for learning purposes only and is only alive for an hour, after which the lab is destroyed, and all work is lost. The environment is solely for learning, lasting for an hour, after which all work is lost and the lab is destroyed.']}], 'duration': 890.383, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1085763.jpg', 'highlights': ['The convenience script automates the installation process and works on most operating systems.', 'Running a simple container using the Docker run command pulls the image from Docker Hub and runs it.', 'The Docker run command is used to run a container from an image, and the Docker ps command lists all running containers with basic information.', 'Running containers in attached and detached modes, with differences in interaction and behavior.', 'The labs open in the browser and contain 10-20 questions per scenario to be completed within 30 minutes to an hour.', 'The environment is solely for learning, lasting for an hour, after which all work is lost and the lab is destroyed.']}, {'end': 2577.222, 'segs': [{'end': 2031.955, 'src': 'embed', 'start': 2005.878, 'weight': 2, 'content': [{'end': 2012.1, 'text': 'We learned that we could use the Docker run Redis command to run a container running a Redis service.', 'start': 2005.878, 'duration': 6.222}, {'end': 2016.121, 'text': 'In this case, the latest version of Redis, which happens to be 5.0.', 'start': 2012.64, 'duration': 3.481}, {'end': 2018.182, 'text': '5 as of today.', 'start': 2016.121, 'duration': 2.061}, {'end': 2029.352, 'text': 'But what if we want to run another version of Redis, like for example, an older version, say 4.0? Then you specify the version separated by a colon.', 'start': 2019.263, 'duration': 10.089}, {'end': 2031.955, 'text': 'This is called a tag.', 'start': 2030.333, 'duration': 1.622}], 'summary': "Using 'docker run redis' to run redis container, with example of version 5.0 and how to specify a different version using a tag.", 'duration': 26.077, 'max_score': 2005.878, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2005878.jpg'}, {'end': 2089.505, 'src': 'embed', 'start': 2058.713, 'weight': 0, 'content': [{'end': 2064.034, 'text': 'So, as a user, how do you find information about these versions and what is the latest?', 'start': 2058.713, 'duration': 5.321}, {'end': 2072.458, 'text': 'At dockerhub.com, look up an image and you will find all the supported tags in its description.', 'start': 2065.636, 'duration': 6.822}, {'end': 2079.44, 'text': 'Each version of the software can have multiple short and long tags associated with it, as seen here.', 'start': 2073.299, 'duration': 6.141}, {'end': 2083.901, 'text': 'In this case, the version 5.0.', 'start': 2080.918, 'duration': 2.983}, {'end': 2085.842, 'text': '5 also has the latest tag on it.', 'start': 2083.901, 'duration': 1.941}, {'end': 2089.505, 'text': "Let's now look at inputs.", 'start': 2088.125, 'duration': 1.38}], 'summary': "Users can find version information on dockerhub.com, with version 5.0 having multiple tags including 'latest'.", 'duration': 30.792, 'max_score': 2058.713, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2058713.jpg'}, {'end': 2304.237, 'src': 'embed', 'start': 2278.484, 'weight': 3, 'content': [{'end': 2287.969, 'text': '1.5 But for that to work, you must have mapped the port inside the Docker container to a free port on the Docker host.', 'start': 2278.484, 'duration': 9.485}, {'end': 2294.292, 'text': 'For example, if I want the users to access my application through port 80 on my Docker host,', 'start': 2288.629, 'duration': 5.663}, {'end': 2304.237, 'text': 'I could map port 80 of local host to port 5000 on the Docker container using the dash p parameter in my run command like this', 'start': 2294.292, 'duration': 9.945}], 'summary': 'To access an application through port 80 on the docker host, map port 80 of local host to port 5000 on the docker container using the -p parameter in the run command.', 'duration': 25.753, 'max_score': 2278.484, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2278484.jpg'}, {'end': 2445.235, 'src': 'embed', 'start': 2419.615, 'weight': 4, 'content': [{'end': 2428.301, 'text': 'If you would like to persist data, you would want to map a directory outside the container on the Docker host to a directory inside the container.', 'start': 2419.615, 'duration': 8.686}, {'end': 2434.606, 'text': 'In this case, I create a directory called slash opt slash data dir.', 'start': 2428.961, 'duration': 5.645}, {'end': 2445.235, 'text': 'and map that to var lib MySQL inside the Docker container using the dash v option and specifying the directory on the Docker host,', 'start': 2435.246, 'duration': 9.989}], 'summary': 'To persist data, map /opt/data/dir on docker host to /var/lib/mysql in container.', 'duration': 25.62, 'max_score': 2419.615, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2419615.jpg'}, {'end': 2496.313, 'src': 'embed', 'start': 2472.076, 'weight': 5, 'content': [{'end': 2478.12, 'text': 'The Docker PS command is good enough to get basic details about containers like their names and IDs.', 'start': 2472.076, 'duration': 6.044}, {'end': 2486.807, 'text': "But if you'd like to see additional details about a specific container, use the Docker inspect command and provide the container name or ID.", 'start': 2478.541, 'duration': 8.266}, {'end': 2496.313, 'text': 'It returns all details of a container in a JSON format, such as the state mounts, configuration data, network settings, etc.', 'start': 2488.007, 'duration': 8.306}], 'summary': "Using 'docker inspect' provides detailed container information in json format.", 'duration': 24.237, 'max_score': 2472.076, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2472076.jpg'}], 'start': 1976.146, 'title': 'Docker basics and container management', 'summary': 'Covers docker run command for redis versions, emphasizing software versions on dockerhub.com, and introduces image tags. it also discusses dockerizing applications, managing containers, and accessing applications using docker, covering topics such as interactive mode, port mapping, and container inspection.', 'chapters': [{'end': 2089.505, 'start': 1976.146, 'title': 'Docker run commands and image tags', 'summary': 'Covers the docker run command for running different versions of redis using tags, with the latest version being 5.0.5, and emphasizes finding information about software versions on dockerhub.com. it also introduces the concept of image tags and their association with software versions.', 'duration': 113.359, 'highlights': ['The chapter covers the Docker run command for running different versions of Redis using tags, with the latest version being 5.0.5 The lecture introduces the usage of Docker run command to run different versions of Redis using tags, such as the latest version 5.0.5.', 'Emphasizes finding information about software versions on dockerhub.com The lecture highlights the importance of finding information about software versions on dockerhub.com to identify supported tags and their association with different software versions.', 'Introduces the concept of image tags and their association with software versions The lecture introduces the concept of image tags and their association with software versions, emphasizing the significance of specifying tags to run specific versions of software.']}, {'end': 2577.222, 'start': 2090.766, 'title': 'Dockerizing applications and container management', 'summary': 'Discusses dockerizing applications, managing containers, and accessing applications using docker. it covers topics such as interactive mode, pseudo terminal, port mapping, data persistence, container inspection, and log viewing.', 'duration': 486.456, 'highlights': ['Docker containers do not listen to standard input by default, requiring the -i parameter for interactive mode and the -t parameter for a pseudo terminal. Docker container does not wait for the prompt, and the prompt is missing when dockerizing the application.', 'Port mapping allows users to access applications from outside the Docker host by mapping the port inside the Docker container to a free port on the Docker host. Users can access the application through the Docker host IP and a mapped port, enabling multiple instances of applications to run on different ports.', 'Persistent data storage involves mapping a directory outside the container on the Docker host to a directory inside the container using the -v option. Data is stored in an external volume and remains even if the Docker container is deleted.', 'The Docker inspect command provides detailed information about a specific container in JSON format, including state, mounts, configuration data, and network settings. Useful for obtaining additional details about a specific container.', 'The Docker logs command allows viewing the standard output contents of a container ran in detached mode using the -d parameter. Useful for viewing logs of containers ran in the background.']}], 'duration': 601.076, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo1976146.jpg', 'highlights': ['The lecture introduces the concept of image tags and their association with software versions, emphasizing the significance of specifying tags to run specific versions of software.', 'Emphasizes finding information about software versions on dockerhub.com to identify supported tags and their association with different software versions.', 'The chapter covers the Docker run command for running different versions of Redis using tags, with the latest version being 5.0.5.', 'Port mapping allows users to access applications from outside the Docker host by mapping the port inside the Docker container to a free port on the Docker host.', 'Persistent data storage involves mapping a directory outside the container on the Docker host to a directory inside the container using the -v option.', 'The Docker inspect command provides detailed information about a specific container in JSON format, including state, mounts, configuration data, and network settings.']}, {'end': 3482.772, 'segs': [{'end': 2659.777, 'src': 'embed', 'start': 2578.102, 'weight': 0, 'content': [{'end': 2583.805, 'text': 'The next time you run the application, set an environment variable called app color to a desired value.', 'start': 2578.102, 'duration': 5.703}, {'end': 2586.406, 'text': 'And the application now has a new color.', 'start': 2584.365, 'duration': 2.041}, {'end': 2595.534, 'text': 'Once your application gets packaged into a Docker image, you would then run it with the Docker run command followed by the name of the image.', 'start': 2587.691, 'duration': 7.843}, {'end': 2600.837, 'text': 'However, if you wish to pass the environment variable, as we did before,', 'start': 2596.195, 'duration': 4.642}, {'end': 2607.98, 'text': 'you would now use the Docker run commands dash E option to set an environment variable within the container.', 'start': 2600.837, 'duration': 7.143}, {'end': 2611.842, 'text': 'To deploy multiple containers with different colors.', 'start': 2608.8, 'duration': 3.042}, {'end': 2618.245, 'text': 'you would run the Docker command multiple times and set a different value for the environment variable each time.', 'start': 2611.842, 'duration': 6.403}, {'end': 2624.948, 'text': "So how do you find the environment variable set on a container that's already running?", 'start': 2619.786, 'duration': 5.162}, {'end': 2630.371, 'text': 'Use the Docker inspect command to inspect the properties of a running container.', 'start': 2625.989, 'duration': 4.382}, {'end': 2636.481, 'text': 'Under the config section, you will find the list of environment variables set on the container.', 'start': 2631.257, 'duration': 5.224}, {'end': 2641.584, 'text': "Well, that's it for this lecture on configuring environment variables in Docker.", 'start': 2637.041, 'duration': 4.543}, {'end': 2654.613, 'text': 'Hello, and welcome to this lecture on Docker images.', 'start': 2651.691, 'duration': 2.922}, {'end': 2659.777, 'text': "In this lecture, we're going to see how to create your own image.", 'start': 2656.034, 'duration': 3.743}], 'summary': 'Configure environment variables in docker and create your own image.', 'duration': 81.675, 'max_score': 2578.102, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2578102.jpg'}, {'end': 2776.307, 'src': 'embed', 'start': 2750.561, 'weight': 3, 'content': [{'end': 2761.006, 'text': 'First create a Docker file named Docker file and write down the instructions for setting up your application in it, such as installing dependencies,', 'start': 2750.561, 'duration': 10.445}, {'end': 2766.168, 'text': 'where to copy the source code from and to and what the entry point of the application is, etc.', 'start': 2761.006, 'duration': 5.162}, {'end': 2776.307, 'text': 'Once done, build your image using the Docker build command and specify the Docker file as input as well as a tag name for the image.', 'start': 2767.623, 'duration': 8.684}], 'summary': 'Create a docker file, set up application, build image with tag name.', 'duration': 25.746, 'max_score': 2750.561, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2750561.jpg'}, {'end': 2833.987, 'src': 'embed', 'start': 2807.303, 'weight': 4, 'content': [{'end': 2812.066, 'text': 'Docker file is a text file written in a specific format that Docker can understand.', 'start': 2807.303, 'duration': 4.763}, {'end': 2815.368, 'text': "It's in an instruction and arguments format.", 'start': 2812.607, 'duration': 2.761}, {'end': 2822.173, 'text': 'For example, in this Docker file, everything on the left in caps is an instruction.', 'start': 2816.349, 'duration': 5.824}, {'end': 2828.217, 'text': 'In this case, from run, copy and entry point are all instructions.', 'start': 2822.713, 'duration': 5.504}, {'end': 2833.987, 'text': 'Each of these instruct Docker to perform a specific action while creating the image.', 'start': 2829.221, 'duration': 4.766}], 'summary': 'Docker file is a text file with instructions for creating images.', 'duration': 26.684, 'max_score': 2807.303, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2807303.jpg'}, {'end': 2987.858, 'src': 'embed', 'start': 2962.696, 'weight': 5, 'content': [{'end': 2967.9, 'text': 'You could see this information if you run the docker history command followed by the image name.', 'start': 2962.696, 'duration': 5.204}, {'end': 2978.871, 'text': 'When you run the Docker build command, you could see the various steps involved and the result of each task.', 'start': 2973.527, 'duration': 5.344}, {'end': 2981.393, 'text': 'All the layers built are cast.', 'start': 2979.512, 'duration': 1.881}, {'end': 2987.858, 'text': 'So the layered architecture helps you restart Docker build from that particular step in case it fails.', 'start': 2981.613, 'duration': 6.245}], 'summary': 'Docker history command shows steps, layers help restart builds.', 'duration': 25.162, 'max_score': 2962.696, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2962696.jpg'}, {'end': 3106.828, 'src': 'embed', 'start': 3073.787, 'weight': 8, 'content': [{'end': 3078.009, 'text': "And going forward, I see that's how everyone is going to run applications.", 'start': 3073.787, 'duration': 4.222}, {'end': 3082.672, 'text': 'Nobody is going to install anything anymore going forward.', 'start': 3078.909, 'duration': 3.763}, {'end': 3086.554, 'text': "Instead, they're just going to run it using Docker.", 'start': 3083.072, 'duration': 3.482}, {'end': 3092.398, 'text': "And when they don't need it anymore, get rid of it easily without having to clean up too much.", 'start': 3087.255, 'duration': 5.143}, {'end': 3106.828, 'text': 'In this lecture, we will look at commands, arguments and entry points in Docker.', 'start': 3102.265, 'duration': 4.563}], 'summary': 'In the future, everyone will run applications using docker, eliminating the need for installations and facilitating easy disposal.', 'duration': 33.041, 'max_score': 3073.787, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo3073787.jpg'}, {'end': 3182.81, 'src': 'embed', 'start': 3151.473, 'weight': 7, 'content': [{'end': 3155.094, 'text': 'or simply to carry out some kind of computation or analysis.', 'start': 3151.473, 'duration': 3.621}, {'end': 3159.156, 'text': 'Once the task is complete, the container exits.', 'start': 3156.255, 'duration': 2.901}, {'end': 3164.539, 'text': 'A container only lives as long as the process inside it is alive.', 'start': 3159.776, 'duration': 4.763}, {'end': 3170.883, 'text': 'If the web service inside the container is stopped, or crashes, the container exits.', 'start': 3165.66, 'duration': 5.223}, {'end': 3174.945, 'text': 'So who defines what process is run within the container.', 'start': 3171.403, 'duration': 3.542}, {'end': 3182.81, 'text': 'If you look at the Docker file for popular Docker images like nginx, you will see an instruction called CMD,', 'start': 3175.465, 'duration': 7.345}], 'summary': 'Containers only live as long as the process inside is alive, stopping when the web service stops or crashes.', 'duration': 31.337, 'max_score': 3151.473, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo3151473.jpg'}], 'start': 2578.102, 'title': 'Docker essentials', 'summary': 'Covers configuring environment variables, creating custom docker images, and docker layered architecture and commands. it includes details on setting variables, deploying containers, creating custom images for a web app, and advantages of layered architecture with specific examples and insights.', 'chapters': [{'end': 2659.777, 'start': 2578.102, 'title': 'Configuring environment variables in docker', 'summary': 'Discusses configuring environment variables in docker, including setting variables, deploying multiple containers with different colors, and using the docker inspect command to find environment variables set on a running container.', 'duration': 81.675, 'highlights': ["Setting environment variables using 'app color' and Docker run commands, which changes the application color.", 'Deploying multiple containers with different colors by running Docker command multiple times and setting different values for the environment variable each time.', 'Using Docker inspect command to find the list of environment variables set on a running container.']}, {'end': 2961.776, 'start': 2661.089, 'title': 'Creating custom docker images', 'summary': 'Explains the process of creating a custom docker image for a web application using python flask, detailing the steps involved, such as creating a docker file, building the image, and pushing it to the docker hub registry, along with insights into the docker file structure and layered architecture.', 'duration': 300.687, 'highlights': ['The process of creating a custom Docker image involves writing a Docker file with instructions for setting up the application, building the image using the Docker build command, and pushing it to the public Docker Hub registry. Demonstrates the process involved in creating a custom Docker image, including writing a Docker file, building the image, and pushing it to the Docker Hub registry.', 'The Docker file is written in a specific format with instructions and arguments, where each instruction guides Docker to perform a specific action while creating the image. Explains the structure of the Docker file, highlighting the format with instructions and arguments that guide Docker in performing specific actions during image creation.', 'The layered architecture of Docker images is detailed, with each instruction creating a new layer in the image, resulting in a size reflection where each layer only stores the changes from the previous layer. Provides insights into the layered architecture of Docker images, emphasizing the creation of new layers with each instruction and the size reflection, showcasing the storage of changes from the previous layer.']}, {'end': 3482.772, 'start': 2962.696, 'title': 'Docker layered architecture and commands', 'summary': 'Discusses the advantages of docker layered architecture, such as faster rebuilding of images and the ability to restart the build from a specific step. it also covers the usage of commands, arguments, and entry points in docker containers for running specific tasks and processes, with examples of modifying default commands and specifying entry points.', 'duration': 520.076, 'highlights': ['Docker layered architecture allows faster image rebuilding and restarting the build from a specific step, reducing the need to start the build process from scratch, resulting in efficiency gains. The layered architecture helps you restart Docker build from a particular step in case it fails, and the cached layers by Docker allow reusing previous layers from cache when rebuilding, resulting in faster image rebuilding.', 'Containers are meant to run specific tasks or processes, with the ability to define the program to be run within the container using instructions like CMD and entry point. Containers are not meant to host an operating system but are intended for running specific tasks or processes, with instructions like CMD and entry point defining the program to be run within the container.', 'Modifying default commands and specifying entry points in Docker containers allows customization of the tasks and processes to be run, enabling flexibility and automation. The ability to append commands to the Docker run command or create new images with different commands, along with specifying entry points, allows customization and automation of tasks and processes within Docker containers.']}], 'duration': 904.67, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo2578102.jpg', 'highlights': ["Setting environment variables using 'app color' and Docker run commands, which changes the application color.", 'Deploying multiple containers with different colors by running Docker command multiple times and setting different values for the environment variable each time.', 'Using Docker inspect command to find the list of environment variables set on a running container.', 'The process of creating a custom Docker image involves writing a Docker file with instructions for setting up the application, building the image using the Docker build command, and pushing it to the public Docker Hub registry.', 'The Docker file is written in a specific format with instructions and arguments, where each instruction guides Docker to perform a specific action while creating the image.', 'The layered architecture of Docker images is detailed, with each instruction creating a new layer in the image, resulting in a size reflection where each layer only stores the changes from the previous layer.', 'Docker layered architecture allows faster image rebuilding and restarting the build from a specific step, reducing the need to start the build process from scratch, resulting in efficiency gains.', 'Containers are meant to run specific tasks or processes, with the ability to define the program to be run within the container using instructions like CMD and entry point.', 'Modifying default commands and specifying entry points in Docker containers allows customization of the tasks and processes to be run, enabling flexibility and automation.']}, {'end': 4502.666, 'segs': [{'end': 3612.943, 'src': 'embed', 'start': 3583.937, 'weight': 3, 'content': [{'end': 3592.291, 'text': 'as we have seen before, another way to access the containers externally is to associate the container to the host network.', 'start': 3583.937, 'duration': 8.354}, {'end': 3597.876, 'text': 'This takes out any network isolation between the Docker host and the Docker container.', 'start': 3593.154, 'duration': 4.722}, {'end': 3603.359, 'text': 'Meaning if you were to run a web server on port 5000 in a web app container,', 'start': 3598.456, 'duration': 4.903}, {'end': 3612.943, 'text': 'it is automatically accessible on the same port externally without requiring any port mapping, as the web container uses the hosts network.', 'start': 3603.359, 'duration': 9.584}], 'summary': 'Associating container to host network removes network isolation, enabling direct access to web server on port 5000 externally.', 'duration': 29.006, 'max_score': 3583.937, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo3583937.jpg'}, {'end': 3806.462, 'src': 'embed', 'start': 3776.516, 'weight': 4, 'content': [{'end': 3782.767, 'text': 'Note that the built-in DNS server always runs at address 127.0.', 'start': 3776.516, 'duration': 6.251}, {'end': 3786.979, 'text': '0.11. So how does Docker implement networking?', 'start': 3782.767, 'duration': 4.212}, {'end': 3793.101, 'text': "What's the technology behind it? Like, how are the containers isolated within the host?", 'start': 3788.539, 'duration': 4.562}, {'end': 3797.222, 'text': 'Docker uses network namespaces.', 'start': 3794.341, 'duration': 2.881}, {'end': 3800.783, 'text': 'that creates a separate namespace for each container.', 'start': 3797.222, 'duration': 3.561}, {'end': 3806.462, 'text': 'then uses virtual Ethernet pairs to connect containers together.', 'start': 3801.898, 'duration': 4.564}], 'summary': 'Docker uses network namespaces to isolate containers, creating separate namespace for each container and connecting them with virtual ethernet pairs.', 'duration': 29.946, 'max_score': 3776.516, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo3776516.jpg'}, {'end': 3940.091, 'src': 'embed', 'start': 3914.431, 'weight': 0, 'content': [{'end': 3923.578, 'text': "So how exactly does Docker store the files of an image and a container? To understand that we need to understand Docker's layered architecture.", 'start': 3914.431, 'duration': 9.147}, {'end': 3931.064, 'text': "Let's quickly recap something we learned when Docker builds images, it builds these in a layered architecture.", 'start': 3924.539, 'duration': 6.525}, {'end': 3940.091, 'text': 'Each line of instruction in the Docker file creates a new layer in the Docker image with just the changes from the previous layer.', 'start': 3931.964, 'duration': 8.127}], 'summary': 'Docker uses a layered architecture to store files, creating a new layer for each instruction in the docker file.', 'duration': 25.66, 'max_score': 3914.431, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo3914431.jpg'}, {'end': 4050.564, 'src': 'embed', 'start': 4022.943, 'weight': 1, 'content': [{'end': 4031.087, 'text': 'since the first three layers of both the applications are the same, Docker is not going to build the first three layers.', 'start': 4022.943, 'duration': 8.144}, {'end': 4043.994, 'text': 'Instead, it reuses the same three layers it built for the first application from the cache and only creates the last two layers with the new sources and the new entry point.', 'start': 4031.787, 'duration': 12.207}, {'end': 4050.564, 'text': 'This way, Docker builds images faster and efficiently saves disk space.', 'start': 4045.137, 'duration': 5.427}], 'summary': 'Docker reuses 3 layers, building only 2 new ones, for faster image building and efficient disk space usage.', 'duration': 27.621, 'max_score': 4022.943, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo4022943.jpg'}, {'end': 4290.056, 'src': 'embed', 'start': 4264.397, 'weight': 2, 'content': [{'end': 4270.481, 'text': 'The change we made to the app dot py and the new temp file we created will also get removed.', 'start': 4264.397, 'duration': 6.084}, {'end': 4274.124, 'text': 'So what if we wish to persist this data?', 'start': 4271.963, 'duration': 2.161}, {'end': 4281.45, 'text': 'For example, if we were working with a database and we would like to preserve the data created by the container,', 'start': 4274.544, 'duration': 6.906}, {'end': 4284.452, 'text': 'we could add a persistent volume to the container.', 'start': 4281.45, 'duration': 3.002}, {'end': 4290.056, 'text': 'To do this, first create a volume using the Docker volume create command.', 'start': 4285.412, 'duration': 4.644}], 'summary': 'Changes to app.py and new temp file will be removed. persistent data can be preserved using docker volumes.', 'duration': 25.659, 'max_score': 4264.397, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo4264397.jpg'}], 'start': 3484.065, 'title': 'Docker networking, storage, image efficiency, and data persistence', 'summary': "Covers docker networking, default networks like bridge, host, and none, creating custom networks, accessing containers externally, using container names for inter-container communication, and docker's layered architecture. it also explains docker's efficient reuse of layers from cache, the read-only image layer, and persisting data using volume mounting and bind mounting.", 'chapters': [{'end': 3995.688, 'start': 3484.065, 'title': 'Docker networking & storage', 'summary': 'Covers docker networking, including default networks like bridge, host, and none, and their functionalities. it also discusses creating custom networks, accessing containers externally, and using container names for inter-container communication. additionally, it explains how docker stores data on the local file system in a layered architecture, with each dockerfile instruction creating a new layer in the docker image.', 'duration': 511.623, 'highlights': ['Docker networking functionalities, including default networks like bridge, host, and none, and their functionalities The lecture explains the default networks created by Docker, such as bridge, host, and none, and their functionalities, including network isolation and external accessibility.', "Creating custom networks and accessing containers externally It details the process of creating custom internal networks using 'Docker network create' command, and the method of accessing containers externally by associating them with the host network or mapping their ports to the Docker host.", "Using container names for inter-container communication and Docker's networking implementation using network namespaces It discusses using container names for inter-container communication, the built-in DNS server for resolving container names, and Docker's networking implementation using network namespaces and virtual Ethernet pairs for container isolation.", "Docker's layered architecture for storing data on the local file system The lecture explains Docker's layered architecture for storing data, where each instruction in the Dockerfile creates a new layer in the Docker image, and the benefits of this layered architecture in terms of storage efficiency and size."]}, {'end': 4263.402, 'start': 3996.829, 'title': 'Docker image layer efficiency', 'summary': 'Explains how docker efficiently reuses layers from cache when building new images, saving time and disk space, and how the read-only image layer works, with a focus on the copy on write mechanism.', 'duration': 266.573, 'highlights': ['The Docker build command reuses the same layers from cache when creating new images, making the process faster and saving disk space.', 'Updating application code allows Docker to quickly rebuild the application image by reusing previous layers from the cache, saving time during updates.', 'The read-only image layer prevents direct modification, but Docker uses a copy-on-write mechanism to enable file modification within containers without altering the original image.']}, {'end': 4502.666, 'start': 4264.397, 'title': 'Persisting data in docker', 'summary': 'Discusses persisting data in docker using volume mounting and bind mounting, with examples of creating and using volumes, and the difference between volume mounting and bind mounting.', 'duration': 238.269, 'highlights': ["Persisting data by creating a volume using Docker volume create command The chapter explains the process of creating a volume using the 'Docker volume create' command to persist data in Docker, ensuring that data created by the container can be preserved.", "Mounting a volume inside a Docker container using 'Docker run' command with the -v option The process of mounting a volume inside a Docker container using the 'Docker run' command with the -v option is illustrated, allowing the data volume to be mounted into the desired location inside the container.", 'Difference between volume mounting and bind mounting The distinction between volume mounting and bind mounting is explained, with volume mounting involving a volume from the volumes directory and bind mounting involving a directory from any location on the Docker host.', 'Transition from old style to new style using -v to --mount option The transition from the old style of using -v to the new style of using --mount option, which is more verbose and requires specifying each parameter in a key=value format, is emphasized.']}], 'duration': 1018.601, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo3484065.jpg', 'highlights': ["Docker's layered architecture for storing data on the local file system", 'The Docker build command reuses the same layers from cache when creating new images, making the process faster and saving disk space', 'Persisting data by creating a volume using Docker volume create command', 'Creating custom networks and accessing containers externally', "Using container names for inter-container communication and Docker's networking implementation using network namespaces"]}, {'end': 5658.896, 'segs': [{'end': 4638.003, 'src': 'embed', 'start': 4613.231, 'weight': 0, 'content': [{'end': 4621.76, 'text': 'If we needed to set up a complex application running multiple services, a better way to do it is to use Docker compose.', 'start': 4613.231, 'duration': 8.529}, {'end': 4624.012, 'text': 'With Docker compose.', 'start': 4622.691, 'duration': 1.321}, {'end': 4629.296, 'text': 'we could create a configuration file in YAML format called Docker compose,', 'start': 4624.012, 'duration': 5.284}, {'end': 4638.003, 'text': 'dot YAML and put together the different services and the options specific to this to running them in this file.', 'start': 4629.296, 'duration': 8.707}], 'summary': 'Using docker compose to set up complex applications with multiple services can lead to better configuration and management.', 'duration': 24.772, 'max_score': 4613.231, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo4613231.jpg'}, {'end': 5231.946, 'src': 'embed', 'start': 5201.901, 'weight': 1, 'content': [{'end': 5206.191, 'text': 'Run the Docker compose up command to bring up the entire application stack.', 'start': 5201.901, 'duration': 4.29}, {'end': 5219.098, 'text': 'When we looked at the example of the sample voting application, we assumed that all images are already built.', 'start': 5211.874, 'duration': 7.224}, {'end': 5227.784, 'text': 'Out of the five different components, two of them, Redis and Postgres images, we know are already available on Docker Hub.', 'start': 5220.219, 'duration': 7.565}, {'end': 5231.946, 'text': 'They are official images from Redis and Postgres.', 'start': 5228.464, 'duration': 3.482}], 'summary': 'Use docker compose up command to bring up 5 app components, 2 official images available on docker hub.', 'duration': 30.045, 'max_score': 5201.901, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo5201901.jpg'}, {'end': 5488.285, 'src': 'embed', 'start': 5432.503, 'weight': 3, 'content': [{'end': 5441.127, 'text': 'it runs to the default bridged network and then use links to enable communication between the containers, as we did before.', 'start': 5432.503, 'duration': 8.624}, {'end': 5443.608, 'text': 'With version two,', 'start': 5442.188, 'duration': 1.42}, {'end': 5453.573, 'text': 'Docker Compose automatically creates a dedicated bridge network for this application and then attaches all containers to that new network.', 'start': 5443.608, 'duration': 9.965}, {'end': 5460.097, 'text': "All containers are then able to communicate to each other using each other's service name.", 'start': 5454.733, 'duration': 5.364}, {'end': 5466.201, 'text': "So you basically don't need to use links in version two of Docker compose.", 'start': 5460.777, 'duration': 5.424}, {'end': 5474.066, 'text': 'you can simply get rid of all the links you mentioned in version one when you convert a file from version one to version two.', 'start': 5466.201, 'duration': 7.865}, {'end': 5479.622, 'text': 'And finally, version two also introduces a depends on feature.', 'start': 5475.56, 'duration': 4.062}, {'end': 5488.285, 'text': 'If you wish to specify a startup order, for instance, say, the voting web application is dependent on the Redis service.', 'start': 5480.422, 'duration': 7.863}], 'summary': "Docker compose v2 creates dedicated bridge network, enables communication between containers using service name, and introduces 'depends on' feature.", 'duration': 55.782, 'max_score': 5432.503, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo5432503.jpg'}], 'start': 4503.506, 'title': 'Docker compose and storage drivers', 'summary': 'Discusses docker storage drivers such as aufs, btrfs, zfs, device mapper, overlay, and overlay 2, and their selection based on the underlying os. it also introduces docker compose for running complex applications with multiple services using a yaml configuration file and explains its use in building and deploying application stacks.', 'chapters': [{'end': 4701.666, 'start': 4503.506, 'title': 'Docker storage drivers & compose', 'summary': 'Discusses docker storage drivers including aufs, btrfs, zfs, device mapper, overlay, and overlay 2, and their selection based on the underlying os. it also introduces docker compose as a way to run complex applications with multiple services using a yaml configuration file.', 'duration': 198.16, 'highlights': ['Docker uses storage drivers like AUFS, BTRFS, ZFS, Device Mapper, Overlay, and Overlay 2 to enable layered architecture. These storage drivers enable copy and write functionality, and their selection depends on the underlying OS.', 'The default storage driver for Ubuntu is AUFS, while for operating systems like Fedora or CentOS, Device Mapper may be a better option. Docker automatically selects the best storage driver based on the operating system, and the choice affects performance and stability.', 'Docker Compose allows creating a YAML configuration file to set up complex applications running multiple services, making it easier to implement, run, and maintain changes. Running the entire application stack is simplified by using a Docker compose up command, and changes are stored in the Docker compose configuration file.']}, {'end': 5201.34, 'start': 4703.302, 'title': 'Voting app architecture and deployment', 'summary': 'Explains the architecture and data flow of a sample voting application, detailing the use of different components such as redis, postgres sql, python, nodejs, and .net, and the deployment process using docker run commands and docker compose.', 'duration': 498.038, 'highlights': ['The sample voting application consists of various components including a voting app in Python, a worker application in .NET, and a web interface in Node JS, showcasing a diverse stack. The sample voting application includes components like a Python-based voting app, a .NET worker application, and a Node JS web interface, demonstrating a diverse technology stack.', 'The deployment process involves using Docker run commands to start instances of Redis and PostgreSQL, and deploying web applications for voting and result display, followed by addressing issues related to linking the containers together for communication. The deployment process entails using Docker run commands to start Redis and PostgreSQL instances, deploying web applications for voting and result display, and addressing container linking issues for effective communication.', 'The chapter also presents the process of creating a Docker compose file by mapping container names to images, specifying ports, and linking containers as per the requirements, providing a comprehensive understanding of the deployment process. The chapter provides insights into creating a Docker compose file by mapping container names to images, defining ports, and establishing container links, offering a detailed understanding of the deployment process.']}, {'end': 5658.896, 'start': 5201.901, 'title': 'Docker compose and versioning', 'summary': 'Explains the process of using docker compose to build and deploy an application stack, the differences between version 1 and version 2 of docker compose files, the introduction of version 3, and the setup of networks in docker compose.', 'duration': 456.995, 'highlights': ["Docker Compose can build and deploy an application stack with multiple components, including both official and custom images, using the 'docker-compose up' command. When using Docker Compose, it can handle building and deploying an application stack with multiple components, including official and custom images, using the 'docker-compose up' command.", "Instructing Docker Compose to build images from application code and a Dockerfile with the 'build' option instead of pulling an image can be done by replacing the 'image' line with a 'build' line and specifying the location of the directory containing the application code and Dockerfile. To instruct Docker Compose to build images from application code and a Dockerfile instead of pulling an image, the 'build' option can be used by replacing the 'image' line with a 'build' line and specifying the directory location.", "Docker Compose file version 2 introduces changes such as encapsulating stack information in a 'services' section and automatically creating a dedicated bridge network for the application, enabling communication between containers without the need for 'links'. Docker Compose file version 2 introduces changes such as encapsulating stack information in a 'services' section and automatically creating a dedicated bridge network for the application, enabling communication between containers without the need for 'links'.", "Version 2 of Docker Compose also introduces a 'depends_on' feature to specify startup orders for services, allowing dependencies between containers, and the specification of the version of the Docker Compose file is required at the top of the file. Version 2 of Docker Compose introduces a 'depends_on' feature to specify startup orders for services and requires the specification of the version of the Docker Compose file at the top of the file.", 'Docker Compose file version 3 is similar in structure to version 2 and comes with support for Docker Swarm, with added and removed options, which will be covered in detail when discussing Docker stacks. Docker Compose file version 3 is similar in structure to version 2 and comes with support for Docker Swarm, with added and removed options, which will be covered in detail when discussing Docker stacks.', 'The setup of networks in Docker Compose involves defining the networks at the root level, adjacent to the services, and specifying the networks that each service must be attached to, allowing for the separation of traffic from different sources. The setup of networks in Docker Compose involves defining the networks at the root level and specifying the networks that each service must be attached to, allowing for the separation of traffic from different sources.']}], 'duration': 1155.39, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo4503506.jpg', 'highlights': ['Docker Compose allows creating a YAML configuration file to set up complex applications running multiple services, making it easier to implement, run, and maintain changes.', 'The deployment process entails using Docker run commands to start Redis and PostgreSQL instances, deploying web applications for voting and result display, and addressing container linking issues for effective communication.', "When using Docker Compose, it can handle building and deploying an application stack with multiple components, including official and custom images, using the 'docker-compose up' command.", "Docker Compose file version 2 introduces changes such as encapsulating stack information in a 'services' section and automatically creating a dedicated bridge network for the application, enabling communication between containers without the need for 'links'.", "Version 2 of Docker Compose introduces a 'depends_on' feature to specify startup orders for services and requires the specification of the version of the Docker Compose file at the top of the file."]}, {'end': 6361.39, 'segs': [{'end': 5829.239, 'src': 'embed', 'start': 5800.146, 'weight': 0, 'content': [{'end': 5804.988, 'text': 'And every time anyone deploys this application, it is pulled from that registry.', 'start': 5800.146, 'duration': 4.842}, {'end': 5807.87, 'text': 'There are many other popular registries as well.', 'start': 5805.549, 'duration': 2.321}, {'end': 5814.714, 'text': "For example, Google's registry is at gcr.io, where a lot of Kubernetes related images are stored,", 'start': 5808.29, 'duration': 6.424}, {'end': 5817.736, 'text': 'like the ones used for performing end to end tests on the cluster.', 'start': 5814.714, 'duration': 3.022}, {'end': 5824.036, 'text': 'These are all publicly accessible images that anyone can download and access.', 'start': 5818.652, 'duration': 5.384}, {'end': 5829.239, 'text': "When you have applications built in house that shouldn't be made available to the public.", 'start': 5824.856, 'duration': 4.383}], 'summary': 'Applications are pulled from registries like gcr.io, which stores kubernetes images for end to end tests, and are publicly accessible.', 'duration': 29.093, 'max_score': 5800.146, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo5800146.jpg'}, {'end': 5925.546, 'src': 'embed', 'start': 5875.128, 'weight': 5, 'content': [{'end': 5880.511, 'text': 'Now, if you did not log into the private registry, it will come back saying that the image cannot be found.', 'start': 5875.128, 'duration': 5.383}, {'end': 5885.874, 'text': 'So remember to always log in before pulling or pushing to a private registry.', 'start': 5881.552, 'duration': 4.322}, {'end': 5894.018, 'text': 'We said that cloud providers like AWS or GCP provide a private registry when you create an account with them.', 'start': 5887.096, 'duration': 6.922}, {'end': 5899.179, 'text': "But what if you're running your application on premise and don't have a private registry?", 'start': 5894.698, 'duration': 4.481}, {'end': 5903.34, 'text': 'How do you deploy your own private registry within your organization?', 'start': 5899.659, 'duration': 3.681}, {'end': 5910.042, 'text': 'The Docker registry is itself another application and, of course, is available as a Docker image.', 'start': 5904.441, 'duration': 5.601}, {'end': 5917.284, 'text': 'The name of the image is registry and it exposes the API on port 5000.', 'start': 5910.662, 'duration': 6.622}, {'end': 5925.546, 'text': 'Now that you have your custom registry running at port 5000 on this Docker host, how do you push your own image to it?', 'start': 5917.284, 'duration': 8.262}], 'summary': "Always log in before using private registry to avoid image not found errors. docker registry is available as a docker image named 'registry' and exposes the api on port 5000.", 'duration': 50.418, 'max_score': 5875.128, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo5875128.jpg'}, {'end': 6105.347, 'src': 'heatmap', 'start': 6010.1, 'weight': 4, 'content': [{'end': 6014.325, 'text': 'Docker daemon, the REST API server and the Docker CLI.', 'start': 6010.1, 'duration': 4.225}, {'end': 6022.654, 'text': 'The Docker daemon is a background process that manages Docker objects such as the images, containers, volumes and networks.', 'start': 6014.986, 'duration': 7.668}, {'end': 6030.483, 'text': 'The Docker REST API server is the API interface that programs can use to talk to the daemon and provide instructions.', 'start': 6023.415, 'duration': 7.068}, {'end': 6034.167, 'text': 'You could create your own tools using this rest API.', 'start': 6031.184, 'duration': 2.983}, {'end': 6043.415, 'text': "And the Docker CLI is nothing but the command line interface that we've been using until now to perform actions such as running a container,", 'start': 6034.867, 'duration': 8.548}, {'end': 6046.297, 'text': 'stopping containers, destroying images, etc.', 'start': 6043.415, 'duration': 2.882}, {'end': 6050.701, 'text': 'It uses the rest API to interact with the Docker daemon.', 'start': 6047.278, 'duration': 3.423}, {'end': 6058.205, 'text': 'Something to note here is that the Docker CLI need not necessarily be on the same host.', 'start': 6051.96, 'duration': 6.245}, {'end': 6065.39, 'text': 'It could be on another system like a laptop and can still work with a remote Docker engine.', 'start': 6058.885, 'duration': 6.505}, {'end': 6074.816, 'text': 'Simply use the dash H option on the Docker command and specify the remote Docker engine address and a port as shown here.', 'start': 6066.17, 'duration': 8.646}, {'end': 6086.55, 'text': 'For example, to run a container based on nginx on a remote Docker host, run the command Docker dash h equals 10 dot 123 dot 2.1 colon 2375.', 'start': 6075.737, 'duration': 10.813}, {'end': 6086.811, 'text': 'Run nginx.', 'start': 6086.55, 'duration': 0.261}, {'end': 6103.146, 'text': "Now let's try and understand how exactly our applications containerized in Docker.", 'start': 6098.223, 'duration': 4.923}, {'end': 6105.347, 'text': 'How does it work under the hoods?', 'start': 6103.946, 'duration': 1.401}], 'summary': 'Docker manages objects via daemon, rest api, and cli, allowing remote engine interaction.', 'duration': 95.247, 'max_score': 6010.1, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6010100.jpg'}, {'end': 6130.799, 'src': 'embed', 'start': 6098.223, 'weight': 1, 'content': [{'end': 6103.146, 'text': "Now let's try and understand how exactly our applications containerized in Docker.", 'start': 6098.223, 'duration': 4.923}, {'end': 6105.347, 'text': 'How does it work under the hoods?', 'start': 6103.946, 'duration': 1.401}, {'end': 6110.23, 'text': 'Docker uses namespaces to isolate workspace.', 'start': 6106.308, 'duration': 3.922}, {'end': 6119.935, 'text': 'process IDs, network inter process communication mounts and Unix time sharing systems are created in their own namespace,', 'start': 6110.23, 'duration': 9.705}, {'end': 6122.977, 'text': 'thereby providing isolation between containers.', 'start': 6119.935, 'duration': 3.042}, {'end': 6130.799, 'text': "Let's take a look at one of the namespace isolation technique process ID namespaces.", 'start': 6125.816, 'duration': 4.983}], 'summary': 'Docker uses namespaces to isolate workspace for providing container isolation.', 'duration': 32.576, 'max_score': 6098.223, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6098223.jpg'}, {'end': 6225.657, 'src': 'embed', 'start': 6192.509, 'weight': 2, 'content': [{'end': 6195.813, 'text': 'And so two processes cannot have the same process ID of one.', 'start': 6192.509, 'duration': 3.304}, {'end': 6199.076, 'text': 'This is where namespaces come into play.', 'start': 6197.014, 'duration': 2.062}, {'end': 6204.96, 'text': 'With process ID namespaces, each process can have multiple process IDs associated with it.', 'start': 6199.696, 'duration': 5.264}, {'end': 6208.463, 'text': 'For example, when the processes start in the container.', 'start': 6205.321, 'duration': 3.142}, {'end': 6214.908, 'text': "it's actually just another set of processes on the base Linux system and it gets the next available process ID.", 'start': 6208.463, 'duration': 6.445}, {'end': 6217.13, 'text': 'In this case, five and six.', 'start': 6215.549, 'duration': 1.581}, {'end': 6225.657, 'text': 'However, they also get another process ID starting with PID one in the container namespace, which is only visible inside the container.', 'start': 6217.53, 'duration': 8.127}], 'summary': 'Process id namespaces allow multiple process ids for each process.', 'duration': 33.148, 'max_score': 6192.509, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6192509.jpg'}, {'end': 6342.907, 'src': 'embed', 'start': 6313.061, 'weight': 3, 'content': [{'end': 6317.706, 'text': 'But there is a way to restrict the amount of CPU or memory a container can use.', 'start': 6313.061, 'duration': 4.645}, {'end': 6326.537, 'text': 'Docker uses C groups or control groups to restrict the amount of hardware resources allocated to each container.', 'start': 6318.867, 'duration': 7.67}, {'end': 6333.739, 'text': 'This can be done by providing the dash dash CPUs option to the Docker run command.', 'start': 6327.694, 'duration': 6.045}, {'end': 6342.907, 'text': 'providing a value of point five will ensure that the container does not take up more than 50% of the host CPU at any given time.', 'start': 6333.739, 'duration': 9.168}], 'summary': "Docker uses c groups to limit container's cpu, 0.5 restricts to 50%.", 'duration': 29.846, 'max_score': 6313.061, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6313061.jpg'}], 'start': 5659.637, 'title': 'Docker registry, namespaces, and resource management', 'summary': "Provides an overview of docker registry, covering its purpose, popular options, and private registry usage. additionally, it explains docker engine architecture and components. it also delves into docker's use of namespaces for process isolation and resource management through c groups, offering examples of process id namespaces and resource restriction.", 'chapters': [{'end': 6086.811, 'start': 5659.637, 'title': 'Docker registry overview', 'summary': 'Discusses docker registry, explaining its purpose, popular registry options, and private registry usage, and also explains docker engine architecture and its components.', 'duration': 427.174, 'highlights': ["The Docker registry serves as a central repository for all Docker images, such as Docker Hub and Google's registry at gcr.io, and private registries provided by cloud service providers like AWS, Azure, and GCP.", 'Docker images are stored and pulled from the default registry, Docker Hub, and private registries require logging in using Docker login command to access and deploy images.', 'The Docker registry can be deployed within an organization as a Docker image, with a custom registry running on port 5000, and images can be pushed to and pulled from this local private registry.', 'The Docker Engine consists of three components: Docker daemon, REST API server, and Docker CLI, with the CLI capable of working with remote Docker engines by specifying the address and port using the -H option.']}, {'end': 6361.39, 'start': 6098.223, 'title': 'Docker namespace and resource management', 'summary': 'Explains how docker uses namespaces to isolate processes and how it manages system resources using c groups, with examples of process id namespaces and resource restriction using c groups.', 'duration': 263.167, 'highlights': ['Docker uses namespaces to isolate workspace, process IDs, network inter process communication mounts, and Unix time sharing systems, providing isolation between containers. Docker utilizes namespaces to provide isolation between containers, isolating various aspects like workspace, process IDs, network inter process communication mounts, and Unix time sharing systems.', 'Process ID namespaces allow each process to have multiple process IDs associated with it, enabling containers to have their own root process tree and appear as independent systems. Process ID namespaces enable containers to have their own root process tree and appear as independent systems, achieved by allowing each process to have multiple process IDs associated with it.', 'Docker uses C groups to restrict the amount of hardware resources allocated to each container, such as CPU and memory, by providing options like --cpus and --memory to limit resource usage. Docker utilizes C groups to restrict the hardware resources allocated to each container, enabling control over CPU and memory usage by providing options like --cpus and --memory to limit resource usage.']}], 'duration': 701.753, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo5659637.jpg', 'highlights': ["The Docker registry serves as a central repository for all Docker images, including Docker Hub, Google's registry at gcr.io, and private registries from cloud service providers like AWS, Azure, and GCP.", 'Docker uses namespaces to isolate workspace, process IDs, network inter process communication mounts, and Unix time sharing systems, providing isolation between containers.', 'Process ID namespaces allow each process to have multiple process IDs associated with it, enabling containers to have their own root process tree and appear as independent systems.', 'Docker uses C groups to restrict the amount of hardware resources allocated to each container, such as CPU and memory, by providing options like --cpus and --memory to limit resource usage.', 'The Docker Engine consists of three components: Docker daemon, REST API server, and Docker CLI, with the CLI capable of working with remote Docker engines by specifying the address and port using the -H option.', 'Docker images are stored and pulled from the default registry, Docker Hub, and private registries require logging in using Docker login command to access and deploy images.', 'The Docker registry can be deployed within an organization as a Docker image, with a custom registry running on port 5000, and images can be pushed to and pulled from this local private registry.']}, {'end': 6926.939, 'segs': [{'end': 6447.169, 'src': 'embed', 'start': 6417.916, 'weight': 5, 'content': [{'end': 6420.877, 'text': "Let's take a look at the first option, Docker toolbox.", 'start': 6417.916, 'duration': 2.961}, {'end': 6424.558, 'text': 'This was the original support for Docker on Windows.', 'start': 6421.617, 'duration': 2.941}, {'end': 6430.46, 'text': 'Imagine that you have a Windows laptop and no access to any Linux system whatsoever.', 'start': 6425.338, 'duration': 5.122}, {'end': 6432.301, 'text': 'But you would like to try Docker.', 'start': 6431, 'duration': 1.301}, {'end': 6437.163, 'text': "you don't have access to a Linux system in the lab or in the cloud.", 'start': 6433.081, 'duration': 4.082}, {'end': 6437.764, 'text': 'what would you do??', 'start': 6437.163, 'duration': 0.601}, {'end': 6447.169, 'text': 'What I did was to install a virtualization software on my Windows system, like Oracle, VirtualBox or VMware Workstation, and deploy a Linux VM on it,', 'start': 6438.804, 'duration': 8.365}], 'summary': 'Docker toolbox was the original support for docker on windows. it allowed running docker on a windows system using virtualization software like oracle virtualbox or vmware workstation.', 'duration': 29.253, 'max_score': 6417.916, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6417916.jpg'}, {'end': 6522.13, 'src': 'embed', 'start': 6483.96, 'weight': 4, 'content': [{'end': 6493.385, 'text': 'The Docker toolbox contains a set of tools like Oracle VirtualBox, Docker engine, Docker machine Docker compose and a user interface called kitematic.', 'start': 6483.96, 'duration': 9.425}, {'end': 6498.988, 'text': 'This will help you get started by simply downloading and running the Docker toolbox executable.', 'start': 6494.145, 'duration': 4.843}, {'end': 6501.409, 'text': 'It will install virtual box.', 'start': 6499.628, 'duration': 1.781}, {'end': 6507.012, 'text': 'deploy a lightweight VM called boot to Docker, which has Docker running in it already,', 'start': 6501.409, 'duration': 5.603}, {'end': 6511.574, 'text': "so that you're all set to start with Docker easily and with within a short period of time.", 'start': 6507.012, 'duration': 4.562}, {'end': 6514.544, 'text': 'Now, what about requirements?', 'start': 6512.762, 'duration': 1.782}, {'end': 6522.13, 'text': 'you must ensure that your operating system is 64 bit, Windows seven or higher, and that the virtualization is enabled on the system.', 'start': 6514.544, 'duration': 7.586}], 'summary': 'Docker toolbox includes tools like virtualbox, docker engine, and kitematic, enabling easy docker setup on 64-bit windows 7 or higher with virtualization enabled.', 'duration': 38.17, 'max_score': 6483.96, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6483960.jpg'}, {'end': 6625.379, 'src': 'embed', 'start': 6594.069, 'weight': 0, 'content': [{'end': 6597.431, 'text': 'Linux applications packaged into Linux Docker images.', 'start': 6594.069, 'duration': 3.362}, {'end': 6602.013, 'text': "We're not talking about Windows applications or Windows images or Windows containers.", 'start': 6597.871, 'duration': 4.142}, {'end': 6608.356, 'text': 'Both the options we just discussed will help you run a Linux container on a Windows host.', 'start': 6602.733, 'duration': 5.623}, {'end': 6616.336, 'text': 'With Windows Server 2016,, Microsoft announced support for Windows containers for the first time.', 'start': 6609.454, 'duration': 6.882}, {'end': 6625.379, 'text': 'you can now package applications Windows applications into Windows Docker containers and run them on Windows Docker host using Docker Desktop for Windows.', 'start': 6616.336, 'duration': 9.043}], 'summary': 'Linux and windows applications can be packaged into linux and windows docker containers, respectively.', 'duration': 31.31, 'max_score': 6594.069, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6594069.jpg'}, {'end': 6696.002, 'src': 'embed', 'start': 6668.547, 'weight': 1, 'content': [{'end': 6673.674, 'text': 'The first one is a Windows Server container, which works exactly like Linux containers,', 'start': 6668.547, 'duration': 5.127}, {'end': 6677.238, 'text': 'where the OS kernel is shared with the underlying operating system.', 'start': 6673.674, 'duration': 3.564}, {'end': 6684.607, 'text': 'To allow better security boundary between containers and to allow kernels with different versions and configurations to coexist.', 'start': 6677.899, 'duration': 6.708}, {'end': 6689.173, 'text': 'The second option was introduced known as the Hyper V isolation.', 'start': 6685.208, 'duration': 3.965}, {'end': 6691.296, 'text': 'With Hyper V isolation.', 'start': 6689.754, 'duration': 1.542}, {'end': 6696.002, 'text': 'each container is run within a highly optimized virtual machine,', 'start': 6691.296, 'duration': 4.706}], 'summary': 'Windows server containers work like linux containers, with hyper v isolation for better security and running containers within a highly optimized virtual machine.', 'duration': 27.455, 'max_score': 6668.547, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6668547.jpg'}, {'end': 6745.785, 'src': 'embed', 'start': 6714.083, 'weight': 2, 'content': [{'end': 6719.506, 'text': 'In the Windows world, we have two options, the Windows Server core, and nano server.', 'start': 6714.083, 'duration': 5.423}, {'end': 6727.471, 'text': 'In nano server is a headless deployment option for Windows Server, which runs at a fraction of size of the full operating system.', 'start': 6720.107, 'duration': 7.364}, {'end': 6730.574, 'text': 'You can think of this like the Alpine image in Linux.', 'start': 6728.012, 'duration': 2.562}, {'end': 6736.458, 'text': 'The Windows Server core, though, is not as light weight as you might expect it to be.', 'start': 6731.434, 'duration': 5.024}, {'end': 6745.785, 'text': 'Finally, Windows containers are supported on Windows Server 2016, nano server and Windows 10, professional and enterprise edition.', 'start': 6737.719, 'duration': 8.066}], 'summary': 'Windows offers nano server for lightweight deployment and supports windows containers on specified versions.', 'duration': 31.702, 'max_score': 6714.083, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6714083.jpg'}, {'end': 6849.18, 'src': 'embed', 'start': 6819.892, 'weight': 3, 'content': [{'end': 6822.374, 'text': "Let's look at the first option, Docker toolbox.", 'start': 6819.892, 'duration': 2.482}, {'end': 6826.109, 'text': 'This was the original support for Docker on Mac.', 'start': 6823.345, 'duration': 2.764}, {'end': 6830.675, 'text': 'It is Docker on a Linux VM created using virtual box on Mac.', 'start': 6826.75, 'duration': 3.925}, {'end': 6836.463, 'text': 'As with Windows, it has nothing to do with Mac applications or Mac based images or Mac containers.', 'start': 6831.557, 'duration': 4.906}, {'end': 6839.848, 'text': 'It purely runs Linux containers on a Mac OS.', 'start': 6836.924, 'duration': 2.924}, {'end': 6849.18, 'text': 'Docker toolbox contains a set of tools like Oracle VirtualBox, Docker engine, Docker machine, Docker compose, and a user interface called kitematic.', 'start': 6840.774, 'duration': 8.406}], 'summary': 'Docker toolbox runs linux containers on mac os using oracle virtualbox.', 'duration': 29.288, 'max_score': 6819.892, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6819892.jpg'}], 'start': 6362.411, 'title': 'Docker solutions for windows and mac', 'summary': 'Explores docker toolbox as the original support for docker on windows, its features, and system requirements, and delves into the transition to newer solutions like docker desktop for windows, support for linux containers, introduction of windows containers, types of windows containers, base images for windows, and docker on mac using docker toolbox and docker desktop for mac.', 'chapters': [{'end': 6522.13, 'start': 6362.411, 'title': 'Docker toolbox on windows', 'summary': 'Covers the options available for docker on windows, focusing on docker toolbox as the original support for docker on windows, its features, and system requirements.', 'duration': 159.719, 'highlights': ['The Docker toolbox contains a set of tools like Oracle VirtualBox, Docker engine, Docker machine, Docker compose, and a user interface called kitematic, making it easy to get started with Docker on a Windows system.', 'The first option, Docker on Windows using Docker toolbox, allows users to install a virtualization software on their Windows system and deploy a Linux VM to work with Docker, which is suitable for those without access to a Linux system.', 'The requirement for using Docker toolbox is to ensure that the operating system is 64 bit, Windows seven or higher, and that virtualization is enabled on the system.']}, {'end': 6926.939, 'start': 6522.61, 'title': 'Docker on windows and mac', 'summary': 'Discusses docker toolbox as a legacy solution for older windows systems, the newer docker desktop for windows, support for linux containers, introduction of windows containers, types of windows containers, base images for windows, and docker on mac using docker toolbox and docker desktop for mac.', 'duration': 404.329, 'highlights': ['Introduction of Windows containers and support for Windows applications on Windows Docker host. Windows Server 2016 announced support for Windows containers, allowing packaging and running Windows applications into Windows Docker containers on a Windows Docker host using Docker Desktop for Windows.', 'Types of Windows containers: Windows Server container and Hyper-V isolation. Two types of containers in Windows - Windows Server container, which shares the OS kernel with the underlying operating system, and Hyper-V isolation, where each container runs within a highly optimized virtual machine.', 'Base images for Windows: Windows Server core and nano server. In the Windows world, there are two options for base images - the lightweight nano server and the Windows Server core.', 'Docker on Mac using Docker toolbox and Docker desktop for Mac. Docker toolbox is the legacy support for Docker on Mac, while Docker desktop for Mac uses hyperkit virtualization technology to create a Linux system underneath and run Docker on that system.']}], 'duration': 564.528, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6362411.jpg', 'highlights': ['Introduction of Windows containers and support for Windows applications on Windows Docker host.', 'Types of Windows containers: Windows Server container and Hyper-V isolation.', 'Base images for Windows: Windows Server core and nano server.', 'Docker on Mac using Docker toolbox and Docker desktop for Mac.', 'The Docker toolbox contains a set of tools like Oracle VirtualBox, Docker engine, Docker machine, Docker compose, and a user interface called kitematic, making it easy to get started with Docker on a Windows system.', 'The first option, Docker on Windows using Docker toolbox, allows users to install a virtualization software on their Windows system and deploy a Linux VM to work with Docker, which is suitable for those without access to a Linux system.', 'Windows Server 2016 announced support for Windows containers, allowing packaging and running Windows applications into Windows Docker containers on a Windows Docker host using Docker Desktop for Windows.', 'The requirement for using Docker toolbox is to ensure that the operating system is 64 bit, Windows seven or higher, and that virtualization is enabled on the system.']}, {'end': 7813.372, 'segs': [{'end': 7128.471, 'src': 'embed', 'start': 7101.718, 'weight': 6, 'content': [{'end': 7105.04, 'text': 'There are multiple container orchestration solutions available today.', 'start': 7101.718, 'duration': 3.322}, {'end': 7111.343, 'text': 'Docker has Docker Swarm, Kubernetes from Google, and MesOS from Apache.', 'start': 7105.52, 'duration': 5.823}, {'end': 7115.766, 'text': 'While Docker Swarm is really easy to set up and get started,', 'start': 7112.144, 'duration': 3.622}, {'end': 7121.189, 'text': 'it lacks some of the advanced auto scaling features required for complex production grade applications.', 'start': 7115.766, 'duration': 5.423}, {'end': 7128.471, 'text': 'Mesos, on the other hand, is quite difficult to set up and get started, but supports many advanced features.', 'start': 7122.109, 'duration': 6.362}], 'summary': 'Multiple container orchestration solutions: docker swarm, kubernetes, mesos. docker swarm is easy but lacks advanced auto scaling. mesos is difficult to set up but supports advanced features.', 'duration': 26.753, 'max_score': 7101.718, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo7101718.jpg'}, {'end': 7210.515, 'src': 'embed', 'start': 7186.055, 'weight': 4, 'content': [{'end': 7192.16, 'text': 'With Docker swarm, you could now combine multiple Docker machines together into a single cluster.', 'start': 7186.055, 'duration': 6.105}, {'end': 7203.75, 'text': 'Docker swarm will take care of distributing your services or your application instances into separate hosts for high availability and for load balancing across different systems and hardware.', 'start': 7192.16, 'duration': 11.59}, {'end': 7210.515, 'text': 'To set up a Docker swarm, you must first have hosts or multiple hosts with Docker installed on them.', 'start': 7204.511, 'duration': 6.004}], 'summary': 'Docker swarm combines multiple machines into a single cluster for high availability and load balancing.', 'duration': 24.46, 'max_score': 7186.055, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo7186055.jpg'}, {'end': 7472.099, 'src': 'embed', 'start': 7418.859, 'weight': 0, 'content': [{'end': 7427.941, 'text': 'With Docker, you are able to run a single instance of an application using the Docker CLI by running the Docker run command, which is great.', 'start': 7418.859, 'duration': 9.082}, {'end': 7431.982, 'text': 'Running an application has never been so easy before.', 'start': 7428.481, 'duration': 3.501}, {'end': 7442.356, 'text': 'With Kubernetes, using the Kubernetes CLI, known as cube control, you can run 1000 instance of the same application with a single command.', 'start': 7432.95, 'duration': 9.406}, {'end': 7446.119, 'text': 'Kubernetes can scale it up to 2000.', 'start': 7442.897, 'duration': 3.222}, {'end': 7447.5, 'text': 'With another command.', 'start': 7446.119, 'duration': 1.381}, {'end': 7457.087, 'text': 'Kubernetes can be even configured to do this automatically, so that instances and the infrastructure itself can scale up and down based on user load.', 'start': 7447.5, 'duration': 9.587}, {'end': 7467.255, 'text': 'Kubernetes can upgrade these 2000 instances of the application in a rolling upgrade fashion, one at a time with a single command.', 'start': 7457.927, 'duration': 9.328}, {'end': 7472.099, 'text': 'If something goes wrong, it can help you roll back these images with a single command.', 'start': 7467.755, 'duration': 4.344}], 'summary': 'Docker allows running a single app instance, kubernetes can run 1000 instances and scale up to 2000, with automatic scaling and rolling upgrades.', 'duration': 53.24, 'max_score': 7418.859, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo7418859.jpg'}, {'end': 7614.546, 'src': 'embed', 'start': 7588.935, 'weight': 3, 'content': [{'end': 7597.3, 'text': 'The master watches over the nodes in the cluster and is responsible for the actual orchestration of containers on the worker nodes.', 'start': 7588.935, 'duration': 8.365}, {'end': 7603.524, 'text': "When you install Kubernetes on a system, you're actually installing the following components.", 'start': 7598.061, 'duration': 5.463}, {'end': 7614.546, 'text': 'an API server, an etcd server, a kubelet service, container runtime, engine like Docker, and a bunch of controllers and the scheduler.', 'start': 7604.244, 'duration': 10.302}], 'summary': 'Kubernetes master orchestrates containers across worker nodes with components like api server, etcd server, kubelet service, and docker.', 'duration': 25.611, 'max_score': 7588.935, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo7588935.jpg'}], 'start': 6927.96, 'title': 'Docker and kubernetes', 'summary': "Discusses docker swarm orchestration, highlighting its ability to manage multiple instances of applications, and introduces docker and kubernetes, emphasizing kubernetes' capability to run and scale instances based on user load, and explaining its architecture.", 'chapters': [{'end': 7361.196, 'start': 6927.96, 'title': 'Docker swarm orchestration', 'summary': 'Discusses the challenges of managing multiple instances of applications using docker and introduces docker swarm orchestration as a solution, highlighting its ability to distribute services across multiple hosts, provide high availability, load balancing, and automatically manage instances and failures, as well as comparing it with other container orchestration solutions like kubernetes and mesos.', 'duration': 433.236, 'highlights': ['Docker swarm orchestration provides high availability and load balancing by distributing services across different worker nodes, allowing for easy management of multiple instances of applications. Docker swarm orchestrator handles the distribution of services and instances across the swarm cluster, providing high availability and load balancing, which simplifies the management of multiple application instances.', 'Comparing container orchestration solutions, Docker Swarm is easy to set up and get started, while Kubernetes offers extensive customization options and support for various vendors, and Mesos supports advanced features but is more challenging to set up. Docker Swarm is user-friendly for beginners, Kubernetes offers customization and vendor support, while Mesos provides advanced features but is complex to set up.', 'Docker swarm orchestration automates the process of managing instances, including scaling up and down based on demand, adding hosts to support load, and providing advanced networking, load balancing, storage sharing, configuration management, and security within the cluster. Docker swarm orchestration automates instance management, enabling automatic scaling based on demand, addition of hosts to support load, advanced networking, load balancing, storage sharing, configuration management, and security within the cluster.']}, {'end': 7813.372, 'start': 7361.837, 'title': 'Introduction to docker and kubernetes', 'summary': 'Introduces docker and kubernetes, highlighting that kubernetes can run 1000 instances of an application with a single command, scale it up to 2000, and automatically manage the scaling based on user load. it also explains the architecture of kubernetes, including the role of a master node and the components installed on it.', 'duration': 451.535, 'highlights': ['Kubernetes can run 1000 instances of an application with a single command and scale it up to 2000. Using Kubernetes CLI, known as cube control, users can effortlessly run and scale instances of applications, providing efficient management of a large number of instances.', 'Kubernetes can automatically scale instances and infrastructure based on user load. Kubernetes provides automatic scaling based on user load, ensuring efficient resource utilization and responsiveness to varying demand.', 'Kubernetes can upgrade 2000 instances of an application in a rolling upgrade fashion with a single command. The ability of Kubernetes to perform rolling upgrades on a large number of instances with a single command ensures seamless application updates and minimal downtime.', 'Kubernetes supports a variety of authentication and authorization mechanisms. Kubernetes offers a diverse range of authentication and authorization mechanisms, enhancing security and access control within the cluster.', 'Kubernetes architecture includes components like API server, etcd server, kubelet service, container runtime, controllers, and scheduler. The architecture of Kubernetes encompasses essential components such as API server, etcd server, kubelet service, container runtime, controllers, and scheduler, enabling effective orchestration and management of containers.']}], 'duration': 885.412, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/fqMOX6JJhGo/pics/fqMOX6JJhGo6927960.jpg', 'highlights': ['Kubernetes can run 1000 instances of an application with a single command and scale it up to 2000. Using Kubernetes CLI, known as cube control, users can effortlessly run and scale instances of applications, providing efficient management of a large number of instances.', 'Kubernetes can upgrade 2000 instances of an application in a rolling upgrade fashion with a single command. The ability of Kubernetes to perform rolling upgrades on a large number of instances with a single command ensures seamless application updates and minimal downtime.', 'Kubernetes can automatically scale instances and infrastructure based on user load. Kubernetes provides automatic scaling based on user load, ensuring efficient resource utilization and responsiveness to varying demand.', 'Kubernetes architecture includes components like API server, etcd server, kubelet service, container runtime, controllers, and scheduler. The architecture of Kubernetes encompasses essential components such as API server, etcd server, kubelet service, container runtime, controllers, and scheduler, enabling effective orchestration and management of containers.', 'Docker swarm orchestration provides high availability and load balancing by distributing services across different worker nodes, allowing for easy management of multiple instances of applications. Docker swarm orchestrator handles the distribution of services and instances across the swarm cluster, providing high availability and load balancing, which simplifies the management of multiple application instances.', 'Docker swarm orchestration automates the process of managing instances, including scaling up and down based on demand, adding hosts to support load, and providing advanced networking, load balancing, storage sharing, configuration management, and security within the cluster. Docker swarm orchestration automates instance management, enabling automatic scaling based on demand, addition of hosts to support load, advanced networking, load balancing, storage sharing, configuration management, and security within the cluster.', 'Comparing container orchestration solutions, Docker Swarm is easy to set up and get started, while Kubernetes offers extensive customization options and support for various vendors, and Mesos supports advanced features but is more challenging to set up. Docker Swarm is user-friendly for beginners, Kubernetes offers customization and vendor support, while Mesos provides advanced features but is complex to set up.']}], 'highlights': ['Docker Compose allows creating a YAML configuration file to set up complex applications running multiple services, making it easier to implement, run, and maintain changes.', 'Kubernetes can run 1000 instances of an application with a single command and scale it up to 2000. Using Kubernetes CLI, known as cube control, users can effortlessly run and scale instances of applications, providing efficient management of a large number of instances.', 'The labs provide real-time access to a terminal, Docker host, and quiz portal, offering flexibility and convenience for users.', "Docker's utilization of OS kernel sharing enables the lightweight nature of containers, typically in megabytes, compared to virtual machines, which are usually in gigabytes in size.", 'The instructor has over 13 years of industry experience as a DevOps and cloud trainer, demonstrating expertise and commitment to engaging teaching.', "Docker's layered architecture for storing data on the local file system", 'The Docker toolbox contains a set of tools like Oracle VirtualBox, Docker engine, Docker machine, Docker compose, and a user interface called kitematic, making it easy to get started with Docker on a Windows system.', 'Docker simplified the setup of new environments for developers, reducing the number of commands and ensuring consistent environments across different operating systems.', 'The convenience script automates the installation process and works on most operating systems.', 'The lecture introduces the concept of image tags and their association with software versions, emphasizing the significance of specifying tags to run specific versions of software.']}