title
Docker Crash Course for Absolute Beginners [NEW]

description
Docker Tutorial for Beginners that teaches you everything you need to get started 💛 Connect on Instagram ► https://bit.ly/2F3LXYJ 💛 Connect on LinkedIn ► https://bit.ly/3hWOLVT 💙 Full Docker course ► https://youtu.be/3c-iBn73dDE 💚 Docker in complete DevOps process ► https://bit.ly/42ZMSiR #docker #dockertutorial #techworldwithnana ► This video is sponsored by Nethopper 🙌🏼 ► Learn more about Nethopper KAOPS here: https://www.nethopper.io/ Learn the basic building blocks of Docker in an easy and understandable way. By the end of this Docker tutorial, you will have a deep understanding of the concepts and a great overall big picture of how Docker is used in the whole software development process. The course is a mix of animated theoretic explanation and hands-on demos to follow along, so you get your first hands-on experience with Docker. 🔗 Links ► Git Repo for this tutorial: https://gitlab.com/nanuchi/docker-in-1-hour ► Download and install Docker: https://docs.docker.com/get-docker/ ▬▬▬▬▬▬ T I M E S T A M P S ⏰ ▬▬▬▬▬▬ 0:00 - Intro and Course Overview 02:54 - What is Docker? 03:51 - What problems Docker solves in development and deployment process 11:38 - Virtual Machine vs Docker 17:19 - Install Docker 21:36 - Docker Images vs Containers 26:32 - Docker Registries 29:38 - Docker Image Versions 32:02 - Main Docker Commands - Pull and Run Docker containers 39:06 - Port Binding 42:50 - Start and Stop containers 46:54 - Private Docker Registries 48:11 - Registry vs Repository 49:09 - Dockerfile - Dockerize Node.js app 58:30 - Build Image 1:02:39 - Docker UI Client 1:03:39 - Overview: Docker in complete software development lifecycle 1:06:38 - Where to go from here ▬▬▬▬▬▬ Want to learn more? 🚀 ▬▬▬▬▬▬ Full Python course ► https://youtu.be/t8pPdKYpowI Full Docker course ► https://youtu.be/3c-iBn73dDE Full K8s course ► https://youtu.be/X48VuDVv0do DevOps Tools explained ► https://bit.ly/2W9UEq6 ▬▬▬▬▬▬ Connect with me 👋 ▬▬▬▬▬▬ Join private FB group ► https://bit.ly/32UVSZP INSTAGRAM ► https://bit.ly/2F3LXYJ TWITTER ► https://bit.ly/3i54PUB LINKEDIN ► https://bit.ly/3hWOLVT ▬▬▬▬▬▬ Courses & Ebooks & Bootcamp 🚀 ▬▬▬▬▬▬ ► Become a DevOps Engineer - full educational program 👉🏼 https://bit.ly/45mXaer ► High-Quality and Hands-On Courses 👉🏼 https://bit.ly/3BNS8Kv ► Kubernetes 101 - compact and easy-to-read ebook bundle 👉🏼 https://bit.ly/3Ozl28x

detail
{'title': 'Docker Crash Course for Absolute Beginners [NEW]', 'heatmap': [{'end': 853.245, 'start': 810.72, 'weight': 0.701}, {'end': 1345.855, 'start': 1249.926, 'weight': 0.777}, {'end': 1466.663, 'start': 1418.782, 'weight': 0.821}, {'end': 2120.236, 'start': 2063.9, 'weight': 0.89}, {'end': 2398.25, 'start': 2312.397, 'weight': 0.798}, {'end': 2971.195, 'start': 2875.856, 'weight': 0.747}, {'end': 3049.475, 'start': 3002.879, 'weight': 0.876}, {'end': 3209.883, 'start': 3084.137, 'weight': 0.728}, {'end': 3532.224, 'start': 3442.603, 'weight': 0.768}, {'end': 3618.431, 'start': 3569.123, 'weight': 0.759}], 'summary': "This docker crash course for absolute beginners provides a comprehensive overview of docker's main concepts, benefits, deployment, virtualization, installation, usage, image registries, managing images and containers, container creation and management, and docker container and registry management, emphasizing its role in simplifying application development and deployment.", 'chapters': [{'end': 171.355, 'segs': [{'end': 88.695, 'src': 'embed', 'start': 23.545, 'weight': 0, 'content': [{'end': 25.566, 'text': "First, we'll start by explaining what Docker is.", 'start': 23.545, 'duration': 2.021}, {'end': 29.909, 'text': 'Why was it even created? Basically, what problems it solves in engineering.', 'start': 25.926, 'duration': 3.983}, {'end': 33.291, 'text': 'and how it helps in software development and deployment process.', 'start': 30.369, 'duration': 2.922}, {'end': 41.516, 'text': 'So you will understand exactly why Docker is such a big deal and why it has become so popular and widely used in IT projects.', 'start': 33.751, 'duration': 7.765}, {'end': 50.901, 'text': 'And as part of a virtualization solution, Docker being an improvement over virtual machines or the next evolution step.', 'start': 42.376, 'duration': 8.525}, {'end': 57.885, 'text': 'I will also explain the difference between virtual machine and Docker and what are the advantages of Docker in this comparison.', 'start': 50.901, 'duration': 6.984}, {'end': 65.567, 'text': "After we've understood why we want to use Docker in the first place, we will install Docker and learn how to actually work with it.", 'start': 58.505, 'duration': 7.062}, {'end': 72.349, 'text': 'We will learn the concepts of Docker images, containers, Docker registry, public and private registries,', 'start': 65.887, 'duration': 6.462}, {'end': 80.892, 'text': "and we will run containers locally based on some of the images available on Docker's public registry called Docker Hub.", 'start': 72.349, 'duration': 8.543}, {'end': 88.695, 'text': 'we will also learn the concept of creating your own images and learn about a docker image blueprint called docker file.', 'start': 81.372, 'duration': 7.323}], 'summary': 'Explains docker, its benefits, and how to work with it. covers concepts, installation, and creating images.', 'duration': 65.15, 'max_score': 23.545, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w23545.jpg'}, {'end': 150.944, 'src': 'embed', 'start': 126.725, 'weight': 3, 'content': [{'end': 133.851, 'text': 'And under the video description, I will provide some resources to learn even more about Docker and become more advanced in it.', 'start': 126.725, 'duration': 7.126}, {'end': 140.817, 'text': 'But before we jump right in, it seems like many of you watching the videos on our channel are still not subscribed.', 'start': 134.231, 'duration': 6.586}, {'end': 146.482, 'text': "So if you're getting some value out of the free tutorials I put out regularly on this channel,", 'start': 141.217, 'duration': 5.265}, {'end': 150.944, 'text': 'be sure to subscribe not to miss any future videos or tutorials.', 'start': 147.102, 'duration': 3.842}], 'summary': 'Encouraging viewers to subscribe for more docker resources.', 'duration': 24.219, 'max_score': 126.725, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w126725.jpg'}], 'start': 0.309, 'title': "Docker's main concepts", 'summary': 'Provides a comprehensive overview of docker, including its importance and advantages, installation, working with docker images and containers, and its role in software development and deployment.', 'chapters': [{'end': 171.355, 'start': 0.309, 'title': 'Docker crash course: learn the main concepts', 'summary': 'Covers the main concepts of docker, including its importance and advantages, installation, working with docker images and containers, and understanding its role in the software development and deployment process.', 'duration': 171.046, 'highlights': ['The chapter covers the main concepts of Docker, including its importance and advantages, installation, working with Docker images and containers, and understanding its role in the software development and deployment process. The chapter provides a comprehensive overview of Docker, including its importance, advantages, installation, and working with Docker images and containers, as well as its role in the software development and deployment process.', 'Explaining the difference between virtual machine and Docker and the advantages of Docker in this comparison. The chapter explains the difference between virtual machines and Docker, highlighting the advantages of Docker in this comparison.', "Learning the concepts of Docker images, containers, Docker registry, public and private registries, and running containers locally based on images available on Docker's public registry called Docker Hub. The chapter covers essential concepts such as Docker images, containers, Docker registry, and running containers locally based on images from Docker Hub.", 'Providing resources to learn more about Docker and become more advanced in it. The chapter offers additional resources for viewers to further their knowledge and expertise in Docker.']}], 'duration': 171.046, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w309.jpg', 'highlights': ['The chapter provides a comprehensive overview of Docker, including its importance, advantages, installation, and working with Docker images and containers, as well as its role in the software development and deployment process.', 'The chapter explains the difference between virtual machines and Docker, highlighting the advantages of Docker in this comparison.', 'The chapter covers essential concepts such as Docker images, containers, Docker registry, and running containers locally based on images from Docker Hub.', 'The chapter offers additional resources for viewers to further their knowledge and expertise in Docker.']}, {'end': 656.994, 'segs': [{'end': 200.512, 'src': 'embed', 'start': 171.615, 'weight': 0, 'content': [{'end': 174.697, 'text': 'Why was it even created and what problem does it solve?', 'start': 171.615, 'duration': 3.082}, {'end': 186.462, 'text': 'In simple words, Docker is a virtualization software that makes developing and deploying applications very easy,', 'start': 178.396, 'duration': 8.066}, {'end': 190.485, 'text': 'much easier compared to how it was done before Docker was introduced.', 'start': 186.462, 'duration': 4.023}, {'end': 200.512, 'text': 'And Docker does that by packaging an application into something called a container that has everything the application needs to run,', 'start': 191.005, 'duration': 9.507}], 'summary': 'Docker simplifies application development and deployment, making it much easier compared to traditional methods.', 'duration': 28.897, 'max_score': 171.615, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w171615.jpg'}, {'end': 257.75, 'src': 'embed', 'start': 226.296, 'weight': 4, 'content': [{'end': 230.52, 'text': "Let's see that to understand the benefits of Docker more clearly.", 'start': 226.296, 'duration': 4.224}, {'end': 237.646, 'text': 'So how did we develop applications before containers?', 'start': 234.522, 'duration': 3.124}, {'end': 241.752, 'text': 'Usually, when you have a team of developers working on some application,', 'start': 238.507, 'duration': 3.245}, {'end': 248.701, 'text': 'they would have to install all the services that application depends on or needs, like database services, et cetera,', 'start': 241.752, 'duration': 6.949}, {'end': 251.105, 'text': 'directly on their operating system.', 'start': 248.701, 'duration': 2.404}, {'end': 257.75, 'text': "right?. For example, if you're developing a JavaScript application and you need a PostgreSQL database,", 'start': 251.105, 'duration': 6.645}], 'summary': 'Developers used to install all application dependencies directly on their operating system before docker.', 'duration': 31.454, 'max_score': 226.296, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w226296.jpg'}, {'end': 448.637, 'src': 'embed', 'start': 410.9, 'weight': 2, 'content': [{'end': 412.5, 'text': 'and that will be it.', 'start': 410.9, 'duration': 1.6}, {'end': 421.904, 'text': 'so, as you see, docker standardizes the process of running any service on your development environment and makes the whole process much easier,', 'start': 412.5, 'duration': 9.404}, {'end': 428.366, 'text': 'so you can basically focus and work more on development instead of trying to install and configure services on your machine,', 'start': 421.904, 'duration': 6.462}, {'end': 438.774, 'text': 'And this obviously makes setting up your local development environment much faster and easier than the option without containers.', 'start': 429.29, 'duration': 9.484}, {'end': 448.637, 'text': 'Plus. with the Docker, you can even have different versions of the same application running on your local environment without having any conflict,', 'start': 439.354, 'duration': 9.283}], 'summary': 'Docker standardizes service running, making local development faster and easier with no conflicts.', 'duration': 37.737, 'max_score': 410.9, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w410900.jpg'}, {'end': 640.906, 'src': 'embed', 'start': 619.285, 'weight': 1, 'content': [{'end': 628.428, 'text': "This process is actually simplified because now developers create an application package that doesn't only include the code itself,", 'start': 619.285, 'duration': 9.143}, {'end': 632.902, 'text': 'but also all the dependencies and the configuration for the application.', 'start': 628.428, 'duration': 4.474}, {'end': 640.906, 'text': 'So instead of having to write that in some textual format document they basically just package all of that inside the application artifact.', 'start': 633.183, 'duration': 7.723}], 'summary': 'Developers create application packages with dependencies and configuration, simplifying the process.', 'duration': 21.621, 'max_score': 619.285, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w619285.jpg'}], 'start': 171.615, 'title': 'Docker and its benefits', 'summary': 'Introduces docker and its role in simplifying application development and deployment by packaging applications into containers. it also discusses the benefits of using containers, including standardizing service installation, reducing errors, and improving deployment speed.', 'chapters': [{'end': 272.784, 'start': 171.615, 'title': 'Introduction to docker', 'summary': 'Explains how docker simplifies application development and deployment by packaging applications into containers, making it easier to share and distribute, and highlights the inefficiency of installing all necessary services directly on the operating system before docker.', 'duration': 101.169, 'highlights': ['Docker simplifies application development and deployment by packaging applications into containers, containing everything needed to run, making it easier to share and distribute.', 'Before Docker, developers had to install all the necessary services directly on their operating system, leading to inefficiency and potential conflicts.']}, {'end': 656.994, 'start': 272.784, 'title': 'Benefits of using containers', 'summary': 'Explains how containers simplify the process of setting up a local development environment by standardizing service installation, reducing chances of errors, and improving application deployment, resulting in faster and easier development. it also highlights how containers package all the dependencies and configuration, simplifying the deployment process and reducing the chances of miscommunication and issues.', 'duration': 384.21, 'highlights': ['Containers standardize the process of running any service on your development environment, making the whole process much easier. Containers standardize the process of running any service on the development environment, reducing the chances of errors and making the process much easier for developers.', 'Using containers makes setting up the local development environment much faster and easier than the option without containers. Containers make setting up the local development environment much faster and easier compared to the traditional method, leading to increased efficiency.', 'Containers simplify the application deployment process by encapsulating all dependencies and configuration inside the application artifact. Containers simplify the application deployment process by encapsulating all dependencies and configuration inside the application artifact, reducing the chances of miscommunication and issues.']}], 'duration': 485.379, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w171615.jpg', 'highlights': ['Docker simplifies application development and deployment by packaging applications into containers, containing everything needed to run, making it easier to share and distribute.', 'Containers simplify the application deployment process by encapsulating all dependencies and configuration inside the application artifact, reducing the chances of miscommunication and issues.', 'Containers standardize the process of running any service on your development environment, making the whole process much easier. Containers standardize the process of running any service on the development environment, reducing the chances of errors and making the process much easier for developers.', 'Using containers makes setting up the local development environment much faster and easier than the option without containers. Containers make setting up the local development environment much faster and easier compared to the traditional method, leading to increased efficiency.', 'Before Docker, developers had to install all the necessary services directly on their operating system, leading to inefficiency and potential conflicts.']}, {'end': 1194.961, 'segs': [{'end': 725.703, 'src': 'embed', 'start': 657.554, 'weight': 2, 'content': [{'end': 669.222, 'text': 'So the only thing now that operations team need to do in this case is to run a docker command that gets the container package that developers created and runs it on the server.', 'start': 657.554, 'duration': 11.668}, {'end': 675.606, 'text': 'the same way, operations team will run any services that application needs, also as docker containers,', 'start': 669.222, 'duration': 6.384}, {'end': 680.029, 'text': 'and that makes the deployment process way easier on the operations side.', 'start': 675.606, 'duration': 4.423}, {'end': 687.534, 'text': 'now, of course, the operations team will have to install and set up the docker runtime on the server before they will be able to run containers.', 'start': 680.029, 'duration': 7.505}, {'end': 692.578, 'text': "But that's just one time effort for one service or one technology.", 'start': 688.235, 'duration': 4.343}, {'end': 698.182, 'text': 'And once you have Docker runtime installed, you can simply run Docker containers on that server.', 'start': 693.018, 'duration': 5.164}, {'end': 708.371, 'text': 'Now, at the beginning, I mentioned that Docker is a virtualization tool, just like a virtual machine.', 'start': 701.906, 'duration': 6.465}, {'end': 711.893, 'text': 'And virtual machines have been around for a long time.', 'start': 708.871, 'duration': 3.022}, {'end': 720.639, 'text': 'So why did Docker become so widely adopted? What advantages it has over virtual machines and what is the difference between the two?', 'start': 712.413, 'duration': 8.226}, {'end': 725.703, 'text': 'For that we need to see a little bit of how Docker works on a technical level.', 'start': 721.28, 'duration': 4.423}], 'summary': 'Operations team to run docker command for deploying containers, simplifying the process and requiring one-time installation effort.', 'duration': 68.149, 'max_score': 657.554, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w657554.jpg'}, {'end': 853.245, 'src': 'heatmap', 'start': 810.72, 'weight': 0.701, 'content': [{'end': 815.064, 'text': "and that's where the main difference between docker and virtual machines actually lie.", 'start': 810.72, 'duration': 4.344}, {'end': 818.386, 'text': 'so docker virtualizes the applications layer.', 'start': 815.064, 'duration': 3.322}, {'end': 820.568, 'text': 'this means, when you run a docker container,', 'start': 818.386, 'duration': 2.182}, {'end': 829.453, 'text': 'it actually contains the applications layer of the operating system and some other applications installed on top of that application layer.', 'start': 820.568, 'duration': 8.885}, {'end': 832.555, 'text': 'This could be a Java runtime or Python or whatever.', 'start': 829.473, 'duration': 3.082}, {'end': 838.359, 'text': "And it uses the kernel of the host because it doesn't have its own kernel.", 'start': 833.336, 'duration': 5.023}, {'end': 844.141, 'text': 'The virtual machine, on the other hand, has the applications layer and its own kernel.', 'start': 839.119, 'duration': 5.022}, {'end': 853.245, 'text': 'So it virtualizes the complete operating system, which means that when you download a virtual machine image on your host,', 'start': 844.601, 'duration': 8.644}], 'summary': 'Docker virtualizes applications layer, while virtual machine virtualizes complete os.', 'duration': 42.525, 'max_score': 810.72, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w810720.jpg'}, {'end': 906.301, 'src': 'embed', 'start': 862.088, 'weight': 0, 'content': [{'end': 872.034, 'text': 'First of all, the size of the Docker packages or images are much smaller because they just have to implement one layer of the operating system.', 'start': 862.088, 'duration': 9.946}, {'end': 875.596, 'text': 'So Docker images are usually a couple of megabytes large.', 'start': 872.555, 'duration': 3.041}, {'end': 879.779, 'text': 'Virtual machine images, on the other hand, can be a couple of gigabytes.', 'start': 876.117, 'duration': 3.662}, {'end': 883.902, 'text': 'This means when working with Docker, you actually save a lot of disk space.', 'start': 880.499, 'duration': 3.403}, {'end': 893.99, 'text': 'you can run and start docker containers much faster than virtual machines, because virtual machine has to boot up a kernel every time it starts,', 'start': 884.682, 'duration': 9.308}, {'end': 899.755, 'text': 'while docker container just reuses the host kernel and it just starts the application layer on top of it.', 'start': 893.99, 'duration': 5.765}, {'end': 906.301, 'text': 'so while virtual machine needs a couple of minutes to start up, docker containers usually start up in a few milliseconds.', 'start': 899.755, 'duration': 6.546}], 'summary': 'Docker images are smaller (mbs) than vm images (gbs), resulting in faster container startup (ms) and significant disk space savings.', 'duration': 44.213, 'max_score': 862.088, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w862088.jpg'}], 'start': 657.554, 'title': "Docker's deployment and virtualization", 'summary': "Covers docker's role in deployment, simplifying the process for operations teams, and its virtualization, emphasizing smaller image sizes, faster startup, and installation process of docker desktop.", 'chapters': [{'end': 725.703, 'start': 657.554, 'title': 'Docker for easier deployment', 'summary': 'Discusses how using docker for deployment makes the process easier for the operations team, as it allows running container packages created by developers and any required services as docker containers, simplifying the deployment process.', 'duration': 68.149, 'highlights': ['Docker makes the deployment process easier for the operations team by allowing them to run container packages and services as Docker containers, simplifying the process (e.g., running a docker command to deploy container packages created by developers and any required services).', 'Installing and setting up the Docker runtime on the server is a one-time effort for one service or one technology, making it easier to run Docker containers on the server once the runtime is installed.', "Docker, as a virtualization tool, has advantages over virtual machines, and the chapter discusses the reasons behind Docker's wide adoption and the differences between Docker and virtual machines."]}, {'end': 1194.961, 'start': 726.263, 'title': 'Docker virtualization overview', 'summary': 'Explains the difference between docker and virtual machines, highlighting that docker virtualizes the applications layer, resulting in smaller image sizes, faster container startup, and compatibility limitations, while also detailing the installation process of docker desktop and its components.', 'duration': 468.698, 'highlights': ['Docker images are usually a couple of megabytes large, while virtual machine images can be a couple of gigabytes, resulting in significant disk space savings when working with Docker. Docker images size vs virtual machine images size', 'Docker containers usually start up in a few milliseconds, while virtual machines need a couple of minutes to start up, showcasing the faster startup time of Docker containers. Startup time comparison between Docker containers and virtual machines', 'Compatibility limitation: Docker cannot directly run a Linux-based Docker image on a Windows host due to kernel differences, but Docker Desktop for Windows and Mac uses a hypervisor layer with a lightweight Linux distribution to enable running Linux-based containers on these operating systems. Compatibility limitation of Docker with different operating systems', 'Docker Desktop includes Docker engine, a command line interface client, and a graphical user interface client, providing everything needed to get started with Docker. Components included in Docker Desktop', 'The installation of Docker Desktop varies based on the operating system, with specific system requirements and options for Mac with Intel or Apple Silicon. Installation process and system requirements for Docker Desktop']}], 'duration': 537.407, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w657554.jpg', 'highlights': ['Docker containers usually start up in a few milliseconds, while virtual machines need a couple of minutes to start up, showcasing the faster startup time of Docker containers.', 'Docker images are usually a couple of megabytes large, while virtual machine images can be a couple of gigabytes, resulting in significant disk space savings when working with Docker.', 'Docker makes the deployment process easier for the operations team by allowing them to run container packages and services as Docker containers, simplifying the process (e.g., running a docker command to deploy container packages created by developers and any required services).', 'Installing and setting up the Docker runtime on the server is a one-time effort for one service or one technology, making it easier to run Docker containers on the server once the runtime is installed.', "Docker, as a virtualization tool, has advantages over virtual machines, and the chapter discusses the reasons behind Docker's wide adoption and the differences between Docker and virtual machines."]}, {'end': 1585.507, 'segs': [{'end': 1249.926, 'src': 'embed', 'start': 1218.129, 'weight': 0, 'content': [{'end': 1222.452, 'text': "If you're Windows, you basically click on this one and download Docker Desktop for Windows.", 'start': 1218.129, 'duration': 4.323}, {'end': 1229.996, 'text': 'And make sure to check the system requirements and kind of prepare everything you need for starting Docker.', 'start': 1223.092, 'duration': 6.904}, {'end': 1239.561, 'text': 'Generally for latest versions of Windows, Mac or whatever operating system, it should be pretty easy and straightforward to install Docker.', 'start': 1230.656, 'duration': 8.905}, {'end': 1241.583, 'text': 'So go ahead and do that.', 'start': 1240.202, 'duration': 1.381}, {'end': 1249.926, 'text': "Once you're done with installation, you can simply start the service by searching docker, and if I click on it,", 'start': 1242.263, 'duration': 7.663}], 'summary': 'Install docker desktop for windows and start the service easily.', 'duration': 31.797, 'max_score': 1218.129, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1218129.jpg'}, {'end': 1345.855, 'src': 'heatmap', 'start': 1249.926, 'weight': 0.777, 'content': [{'end': 1261.268, 'text': "you will see right here that it's actually starting up docker service or docker engine, and there you go, it's running,", 'start': 1249.926, 'duration': 11.342}, {'end': 1268.67, 'text': "and this view here that you're seeing this window is actually the graphical user interface of docker that I mentioned.", 'start': 1261.268, 'duration': 7.402}, {'end': 1273.278, 'text': "so that's the client that you with the docker engine.", 'start': 1268.67, 'duration': 4.608}, {'end': 1275.92, 'text': 'so you have a list of containers running currently.', 'start': 1273.278, 'duration': 2.642}, {'end': 1277.981, 'text': "so there's no list.", 'start': 1275.92, 'duration': 2.061}, {'end': 1278.801, 'text': 'same with images.', 'start': 1277.981, 'duration': 0.82}, {'end': 1281.703, 'text': 'if i switched images, i have cleaned up my environment.', 'start': 1278.801, 'duration': 2.902}, {'end': 1285.786, 'text': "so i'm starting with scratch with empty state, just like you.", 'start': 1281.703, 'duration': 4.083}, {'end': 1289.028, 'text': "so we're ready to start using docker.", 'start': 1285.786, 'duration': 3.242}, {'end': 1296.433, 'text': "but first you may be wondering what are images, and that's what i'm gonna explain next, because it's a very important concept in docker.", 'start': 1289.028, 'duration': 7.405}, {'end': 1310.41, 'text': 'Now I mentioned that Docker allows to package the application with its environment configuration in this package that you can share and distribute easily.', 'start': 1300.523, 'duration': 9.887}, {'end': 1313.252, 'text': 'So just like an application artifact file,', 'start': 1311.011, 'duration': 2.241}, {'end': 1323.5, 'text': 'like when we create a zip or tar file or a jar file which you can upload to a artifact storage and then download on the server or locally whenever you need it.', 'start': 1313.252, 'duration': 10.248}, {'end': 1329.444, 'text': 'And that package or artifact that we produce with Docker is called a Docker image.', 'start': 1323.98, 'duration': 5.464}, {'end': 1337.449, 'text': "So it's basically an application artifact, but different from jar file or from other application artifacts.", 'start': 1329.944, 'duration': 7.505}, {'end': 1345.855, 'text': 'It not only has the compiled application code inside, but additionally has information about the environment configuration.', 'start': 1338.009, 'duration': 7.846}], 'summary': 'Docker engine running, explaining docker images as application artifacts with environment configuration.', 'duration': 95.929, 'max_score': 1249.926, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1249926.jpg'}, {'end': 1385.544, 'src': 'embed', 'start': 1359.479, 'weight': 1, 'content': [{'end': 1366.76, 'text': 'For example, if you have a JavaScript application, you would need Node.js and NPM to run your application right?', 'start': 1359.479, 'duration': 7.281}, {'end': 1372.362, 'text': 'So in the Docker image, you would actually have Node and NPM installed already.', 'start': 1367.421, 'duration': 4.941}, {'end': 1376.403, 'text': 'You can also add environment variables that your application needs.', 'start': 1372.922, 'duration': 3.481}, {'end': 1385.544, 'text': 'For example, you can create directories, you can create files or any other environment configuration, whatever you need around your application.', 'start': 1376.483, 'duration': 9.061}], 'summary': 'Docker image includes node.js, npm, and customizable environment variables for javascript applications.', 'duration': 26.065, 'max_score': 1359.479, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1359479.jpg'}, {'end': 1443.084, 'src': 'embed', 'start': 1418.782, 'weight': 2, 'content': [{'end': 1428.551, 'text': 'And when we run that image on an operating system and the application inside starts in the preconfigured environment, that gives us a container.', 'start': 1418.782, 'duration': 9.769}, {'end': 1432.995, 'text': 'So a running instance of an image is a container.', 'start': 1429.092, 'duration': 3.903}, {'end': 1437.72, 'text': 'So a container is basically a running instance of an image.', 'start': 1433.356, 'duration': 4.364}, {'end': 1439.822, 'text': 'And from the same image.', 'start': 1438.2, 'duration': 1.622}, {'end': 1443.084, 'text': 'from one image you can run multiple containers,', 'start': 1439.822, 'duration': 3.262}], 'summary': 'A container is a running instance of an image that can be run multiple times.', 'duration': 24.302, 'max_score': 1418.782, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1418782.jpg'}, {'end': 1466.663, 'src': 'heatmap', 'start': 1418.782, 'weight': 0.821, 'content': [{'end': 1428.551, 'text': 'And when we run that image on an operating system and the application inside starts in the preconfigured environment, that gives us a container.', 'start': 1418.782, 'duration': 9.769}, {'end': 1432.995, 'text': 'So a running instance of an image is a container.', 'start': 1429.092, 'duration': 3.903}, {'end': 1437.72, 'text': 'So a container is basically a running instance of an image.', 'start': 1433.356, 'duration': 4.364}, {'end': 1439.822, 'text': 'And from the same image.', 'start': 1438.2, 'duration': 1.622}, {'end': 1443.084, 'text': 'from one image you can run multiple containers,', 'start': 1439.822, 'duration': 3.262}, {'end': 1450.971, 'text': 'which is a legitimate use case if you need to run multiple instances of the same application for increased performance, for example.', 'start': 1443.084, 'duration': 7.887}, {'end': 1453.172, 'text': "And that's exactly what we were seeing here.", 'start': 1451.371, 'duration': 1.801}, {'end': 1454.633, 'text': 'So we have the images.', 'start': 1453.472, 'duration': 1.161}, {'end': 1457.936, 'text': 'These are the application packages, basically.', 'start': 1455.154, 'duration': 2.782}, {'end': 1466.663, 'text': 'And then from those images, we can start containers, which we will see listed right here, which are running instances of those images.', 'start': 1458.396, 'duration': 8.267}], 'summary': 'An image runs as a container, and multiple containers can run from a single image, allowing for increased performance by running multiple instances of the same application.', 'duration': 47.881, 'max_score': 1418.782, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1418782.jpg'}], 'start': 1195.521, 'title': 'Docker installation and usage', 'summary': 'Covers the installation of docker desktop on mac and windows, emphasizing ease of installation. it also explains docker images and containers, highlighting their functionality and benefits.', 'chapters': [{'end': 1289.028, 'start': 1195.521, 'title': 'Installing docker desktop and starting docker service', 'summary': 'Discusses the process of installing docker desktop on mac and windows, emphasizing the ease and straightforwardness of the installation. it also outlines the steps to start the docker service and navigate the graphical user interface.', 'duration': 93.507, 'highlights': ['The process of installing Docker Desktop on Mac and Windows is emphasized with a focus on the ease and straightforwardness of the installation. Ease and straightforwardness of the installation process', 'The steps to start the Docker service and navigate the graphical user interface are outlined, demonstrating the process of starting the service and the visual representation of the Docker engine status. Demonstration of starting the service and visual representation of Docker engine status']}, {'end': 1585.507, 'start': 1289.028, 'title': 'Docker images and containers', 'summary': 'Explains the concept of docker images and containers, highlighting that a docker image packages an application with its environment configuration, and a running instance of an image is a container, which can be run multiple times for increased performance.', 'duration': 296.479, 'highlights': ['A Docker image packages an application with its environment configuration, including the operating system application layer, tools like Node, NPM or Java Runtime, and environment variables. The Docker image includes the application code, operating system application layer, tools like Node, NPM or Java Runtime, and environment variables, providing a complete package for the application.', 'A running instance of an image is a container, and multiple containers can be created from the same image, allowing for running multiple instances of the same application for increased performance. A container is a running instance of an image, and multiple containers can be created from the same image, enabling the running of multiple instances of the same application for improved performance.', "NetHopper's cloud platform called Kubernetes Application Operations offers an easy way for DevOps teams to manage, connect, and monitor applications in one or more Kubernetes clusters, providing visibility and automation for operations. NetHopper's cloud platform, Kubernetes Application Operations, enables DevOps teams to manage, connect, and monitor applications in multiple Kubernetes clusters, offering visibility and automation for operations."]}], 'duration': 389.986, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1195521.jpg', 'highlights': ['The process of installing Docker Desktop on Mac and Windows is emphasized with a focus on the ease and straightforwardness of the installation.', 'A Docker image packages an application with its environment configuration, including the operating system application layer, tools like Node, NPM or Java Runtime, and environment variables.', 'A running instance of an image is a container, and multiple containers can be created from the same image, allowing for running multiple instances of the same application for increased performance.']}, {'end': 1922.809, 'segs': [{'end': 1694.991, 'src': 'embed', 'start': 1669.078, 'weight': 0, 'content': [{'end': 1675.742, 'text': 'So if we search for Docker Hub right here, you see Docker Hub container image library.', 'start': 1669.078, 'duration': 6.664}, {'end': 1679.301, 'text': "And that's how it looks like.", 'start': 1677.68, 'duration': 1.621}, {'end': 1685.165, 'text': "And you don't actually have to register or sign up on Docker Hub to find those official images.", 'start': 1679.641, 'duration': 5.524}, {'end': 1689.887, 'text': 'So anyone can go on this website and basically browse the container images.', 'start': 1685.225, 'duration': 4.662}, {'end': 1694.991, 'text': "And here in search bar, you can type any service that you're looking for.", 'start': 1690.488, 'duration': 4.503}], 'summary': 'Docker hub provides a wide range of container images accessible without registration.', 'duration': 25.913, 'max_score': 1669.078, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1669078.jpg'}, {'end': 1741.634, 'src': 'embed', 'start': 1720.399, 'weight': 1, 'content': [{'end': 1730.007, 'text': 'The way it works is that Docker has a dedicated team that is responsible for reviewing and publishing all content in the Docker official images.', 'start': 1720.399, 'duration': 9.608}, {'end': 1738.172, 'text': 'And this team works in the collaboration with the technology creators or maintainers, as well as security experts,', 'start': 1730.447, 'duration': 7.725}, {'end': 1741.634, 'text': 'to create and manage those official Docker images.', 'start': 1738.172, 'duration': 3.462}], 'summary': "Docker's dedicated team reviews and publishes all official images, collaborating with creators and security experts.", 'duration': 21.235, 'max_score': 1720.399, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1720399.jpg'}, {'end': 1850.442, 'src': 'embed', 'start': 1824.75, 'weight': 2, 'content': [{'end': 1833.078, 'text': "So when you're using a technology and you need a specific version, you can choose a Docker image that has that version of the technology.", 'start': 1824.75, 'duration': 8.328}, {'end': 1839.143, 'text': 'And there is a special tag that all images have called latest.', 'start': 1833.458, 'duration': 5.685}, {'end': 1850.442, 'text': 'So right here you see this latest tag or here as well in the recent tags, So latest tag is basically the latest, the last image that was built.', 'start': 1839.544, 'duration': 10.898}], 'summary': 'Using docker images, you can choose specific versions of technology, including the latest tag for the most recent image.', 'duration': 25.692, 'max_score': 1824.75, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1824750.jpg'}], 'start': 1585.507, 'title': 'Docker image registries', 'summary': 'Explains obtaining docker images from registries, emphasizing official images, docker hub as the largest registry, and the importance of versioning through image tags and the latest tag.', 'chapters': [{'end': 1922.809, 'start': 1585.507, 'title': 'Docker image registries', 'summary': 'Explains the process of obtaining docker images from docker registries, emphasizing the availability of official images, the role of docker hub as the largest docker image registry, and the importance of versioning through image tags and the latest tag.', 'duration': 337.302, 'highlights': ['Docker Hub offers the largest Docker image registry, where official and other images can be found, without requiring registration. Docker Hub is the primary Docker image registry, hosting official and user-generated Docker images, accessible without the need for registration.', 'Official Docker images are created and verified by the companies developing the services or by the Docker community, ensuring the adherence to security and production best practices. Official Docker images are produced by service developers or the Docker community, guaranteeing compliance with security and production best practices.', "Docker images are versioned through tags, with the 'latest' tag representing the most recent image, and specific versions being recommended for usage. Docker images are versioned through tags, with the 'latest' tag representing the most recent image, and it is advisable to select specific versions for usage."]}], 'duration': 337.302, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1585507.jpg', 'highlights': ['Docker Hub is the primary Docker image registry, hosting official and user-generated Docker images, accessible without the need for registration.', 'Official Docker images are created and verified by the companies developing the services or by the Docker community, ensuring adherence to security and production best practices.', "Docker images are versioned through tags, with the 'latest' tag representing the most recent image, and specific versions being recommended for usage."]}, {'end': 2233.967, 'segs': [{'end': 1953.736, 'src': 'embed', 'start': 1923.169, 'weight': 0, 'content': [{'end': 1930.59, 'text': 'And to download an image, we go back to our terminal and we execute docker pull command.', 'start': 1923.169, 'duration': 7.421}, {'end': 1935.571, 'text': 'And we specify the name of the image, which is nginx.', 'start': 1931.03, 'duration': 4.541}, {'end': 1938.572, 'text': 'So you have that whole command here as well.', 'start': 1936.752, 'duration': 1.82}, {'end': 1941.992, 'text': "So that's basically the name of the image that you have written here.", 'start': 1938.991, 'duration': 3.001}, {'end': 1943.613, 'text': "So that's nginx.", 'start': 1942.532, 'duration': 1.081}, {'end': 1952.536, 'text': 'And then we specify the image tag by separating it with a colon and then the version 1.23.', 'start': 1944.433, 'duration': 8.103}, {'end': 1953.736, 'text': "That's what we chose.", 'start': 1952.536, 'duration': 1.2}], 'summary': 'Download the nginx image using docker pull command with tag version 1.23.', 'duration': 30.567, 'max_score': 1923.169, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1923169.jpg'}, {'end': 2031.289, 'src': 'embed', 'start': 1998.074, 'weight': 1, 'content': [{'end': 2007.7, 'text': 'and now, if we execute docker images command again, as we did here, we should actually see one image now locally, which is nginx,', 'start': 1998.074, 'duration': 9.626}, {'end': 2018.307, 'text': 'with an image tag 1.23 and some other information like the size of the image, which is usually in megabytes, as i mentioned.', 'start': 2007.7, 'duration': 10.607}, {'end': 2031.289, 'text': 'so we have an image now locally And if we pull an image without any specific tag, so we do this basically of the image and if I execute this,', 'start': 2018.307, 'duration': 12.982}], 'summary': "Executing 'docker images' should show one nginx image locally tagged as 1.23 with size in megabytes.", 'duration': 33.215, 'max_score': 1998.074, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1998074.jpg'}, {'end': 2122.738, 'src': 'heatmap', 'start': 2059.016, 'weight': 2, 'content': [{'end': 2063.52, 'text': 'We pick the image we already have available locally with the tag.', 'start': 2059.016, 'duration': 4.504}, {'end': 2074.909, 'text': "So let's say we want to run this image as a container and we execute Docker run command with the name of the image and the tag.", 'start': 2063.9, 'duration': 11.009}, {'end': 2076.792, 'text': 'Super easy.', 'start': 2076.15, 'duration': 0.642}, {'end': 2078.565, 'text': "And let's execute.", 'start': 2077.705, 'duration': 0.86}, {'end': 2082.687, 'text': 'And that command actually starts the container based on the image.', 'start': 2079.166, 'duration': 3.521}, {'end': 2090.728, 'text': 'And we know the container started because we see the logs of nginx service starting up inside the container.', 'start': 2083.187, 'duration': 7.541}, {'end': 2093.83, 'text': 'So these are actually container logs that we see in the console.', 'start': 2091.069, 'duration': 2.761}, {'end': 2095.891, 'text': "So it's launching a couple of scripts.", 'start': 2094.409, 'duration': 1.482}, {'end': 2103.56, 'text': 'And right here we have start worker processes and the container is running.', 'start': 2097.814, 'duration': 5.746}, {'end': 2120.236, 'text': 'So now if I open a new terminal session like this and do Docker PS, I should actually see one container, this one here in the running container list.', 'start': 2104.201, 'duration': 16.035}, {'end': 2122.738, 'text': 'And we have some information about the container.', 'start': 2120.917, 'duration': 1.821}], 'summary': 'Running docker run command starts a container with nginx service logs.', 'duration': 63.722, 'max_score': 2059.016, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2059016.jpg'}, {'end': 2134.468, 'src': 'embed', 'start': 2104.201, 'weight': 4, 'content': [{'end': 2120.236, 'text': 'So now if I open a new terminal session like this and do Docker PS, I should actually see one container, this one here in the running container list.', 'start': 2104.201, 'duration': 16.035}, {'end': 2122.738, 'text': 'And we have some information about the container.', 'start': 2120.917, 'duration': 1.821}, {'end': 2132.026, 'text': 'We have the ID, we have the image that the container is based on, including the tag when it was created and also the name of the container.', 'start': 2122.758, 'duration': 9.268}, {'end': 2134.468, 'text': 'So we have the ID and name of the container.', 'start': 2132.066, 'duration': 2.402}], 'summary': 'Running 1 container with id, image, creation date, and name.', 'duration': 30.267, 'max_score': 2104.201, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2104201.jpg'}, {'end': 2193.596, 'src': 'embed', 'start': 2161.256, 'weight': 3, 'content': [{'end': 2166.38, 'text': 'So now, if I do Docker PS, you will see that there is no container running,', 'start': 2161.256, 'duration': 5.124}, {'end': 2176.445, 'text': 'but we can start a container in the background without it blocking the terminal by adding a flag called "-dim", which stands for detached.', 'start': 2166.38, 'duration': 10.065}, {'end': 2179.587, 'text': 'So it detaches the Docker process from terminal.', 'start': 2176.865, 'duration': 2.722}, {'end': 2185.231, 'text': "If I execute this, you see that it's not blocking the terminal anymore.", 'start': 2180.528, 'duration': 4.703}, {'end': 2193.596, 'text': 'And instead of showing the logs from NGINX starting up inside the container, it just logs out the full ID of the container.', 'start': 2185.831, 'duration': 7.765}], 'summary': "Using the '-dim' flag with docker ps starts a container in the background, detaching it from the terminal.", 'duration': 32.34, 'max_score': 2161.256, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2161256.jpg'}, {'end': 2233.967, 'src': 'embed', 'start': 2208.347, 'weight': 5, 'content': [{'end': 2216.293, 'text': 'But when we start a container in the background, in a detached mode, you may still want to see the application logs inside the container.', 'start': 2208.347, 'duration': 7.946}, {'end': 2218.995, 'text': 'So you may want to see how did nginx start up?', 'start': 2216.694, 'duration': 2.301}, {'end': 2220.256, 'text': 'What did it log actually?', 'start': 2219.055, 'duration': 1.201}, {'end': 2229.043, 'text': 'So for that you can use another Docker command called docker logs, with the container ID like this', 'start': 2220.657, 'duration': 8.386}, {'end': 2233.967, 'text': 'and it will print out the application logs from the container.', 'start': 2230.305, 'duration': 3.662}], 'summary': "Use 'docker logs' with container id to view application logs.", 'duration': 25.62, 'max_score': 2208.347, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2208347.jpg'}], 'start': 1923.169, 'title': 'Managing docker images and containers', 'summary': 'Explains how to download, list, and run docker images, including using docker pull to download an image, docker images to list images, and docker run to run a container based on an image. it also covers the process of managing docker containers, including starting, running, and detaching containers, checking container information, and accessing application logs.', 'chapters': [{'end': 2082.687, 'start': 1923.169, 'title': 'Docker image management', 'summary': 'Explains how to download, list, and run docker images, including using docker pull to download an image, docker images to list images, and docker run to run a container based on an image.', 'duration': 159.518, 'highlights': ['Executing docker pull command allows downloading an image, such as nginx:1.23, from Docker Hub, which is the default location for image retrieval by Docker. The docker pull command is used to download the nginx image with the tag 1.23 from Docker Hub, which is configured as the default location for image retrieval by Docker.', 'Executing docker images command displays the locally available images, including details like image tags and size. Executing the docker images command shows the locally available nginx image with the tag 1.23, along with information such as the image size in megabytes.', 'Executing docker run command starts a container based on the specified image and tag, demonstrating how to run Docker images as containers. The docker run command is used to start a container based on the nginx image with the tag 1.23, showcasing the process of running Docker images as containers.']}, {'end': 2233.967, 'start': 2083.187, 'title': 'Docker container management', 'summary': 'Covers the process of managing docker containers, including starting, running, and detaching containers, checking container information, and accessing application logs.', 'duration': 150.78, 'highlights': ["When starting a container in the background, the '-d' flag can be used to detach the Docker process from the terminal, preventing it from blocking the terminal. Using the '-d' flag when starting a container prevents it from blocking the terminal, allowing the Docker process to run in the background.", "The 'docker ps' command displays information about running containers, including their ID, image, creation date, and name. The 'docker ps' command provides details about running containers, such as their ID, image, creation date, and name.", "The 'docker logs' command can be used to view application logs from a specific container by specifying the container ID. The 'docker logs' command allows viewing application logs from a container by specifying the container ID."]}], 'duration': 310.798, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w1923169.jpg', 'highlights': ['Executing docker pull command allows downloading an image, such as nginx:1.23, from Docker Hub.', 'Executing docker images command displays the locally available images, including details like image tags and size.', 'Executing docker run command starts a container based on the specified image and tag.', "Using the '-d' flag when starting a container prevents it from blocking the terminal.", "The 'docker ps' command provides details about running containers, such as their ID, image, creation date, and name.", "The 'docker logs' command allows viewing application logs from a container by specifying the container ID."]}, {'end': 2594.026, 'segs': [{'end': 2262.964, 'src': 'embed', 'start': 2234.707, 'weight': 0, 'content': [{'end': 2242.131, 'text': 'Now, in order to create the container, the nginx container, we first pull the image and then we created a container from that image.', 'start': 2234.707, 'duration': 7.424}, {'end': 2253.376, 'text': 'But we can actually save ourselves the pull command and execute run command directly, even if the image is not available locally.', 'start': 2242.731, 'duration': 10.645}, {'end': 2262.964, 'text': 'So right now we have these two images available locally, but in the docker run command, you can actually provide any image that exists on Docker Hub.', 'start': 2254.099, 'duration': 8.865}], 'summary': 'Creating nginx container from image without pull command, can use any image from docker hub', 'duration': 28.257, 'max_score': 2234.707, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2234707.jpg'}, {'end': 2398.25, 'src': 'heatmap', 'start': 2312.397, 'weight': 0.798, 'content': [{'end': 2317.94, 'text': 'So it downloaded the image with this tag and started the container.', 'start': 2312.397, 'duration': 5.543}, {'end': 2325.919, 'text': 'And now if we do docker ps, we should have two containers running with different nginx versions.', 'start': 2318.635, 'duration': 7.284}, {'end': 2333.083, 'text': 'And remember I said docker solves the problem of running different versions of the same application at once.', 'start': 2326.779, 'duration': 6.304}, {'end': 2335.984, 'text': "So that's how simple it is to do that with docker.", 'start': 2333.563, 'duration': 2.421}, {'end': 2339.446, 'text': 'So we can actually quit this container.', 'start': 2336.605, 'duration': 2.841}, {'end': 2346.25, 'text': 'And now again, we have that one nginx container with this version.', 'start': 2340.267, 'duration': 5.983}, {'end': 2354.251, 'text': 'Now the important question is how do we access this container?', 'start': 2350.086, 'duration': 4.165}, {'end': 2362.06, 'text': "Well, we can't right now, because the container is running in the closed Docker network.", 'start': 2354.651, 'duration': 7.409}, {'end': 2366.205, 'text': "So we can't access it from our local computer browser, for example.", 'start': 2362.52, 'duration': 3.685}, {'end': 2370.63, 'text': 'We need to first expose the container to our local network.', 'start': 2366.625, 'duration': 4.005}, {'end': 2374.973, 'text': "which may sound a little bit difficult, but it's super easy.", 'start': 2371.13, 'duration': 3.843}, {'end': 2378.956, 'text': "so basically, we're going to do what's called a port binding.", 'start': 2374.973, 'duration': 3.983}, {'end': 2387.322, 'text': "the container is running on some port right and each application has some standard port on which it's running.", 'start': 2378.956, 'duration': 8.366}, {'end': 2392.926, 'text': 'like nginx, application always runs on port 80, redis runs on port 6379.', 'start': 2387.322, 'duration': 5.604}, {'end': 2398.25, 'text': 'so these are standard ports for these applications.', 'start': 2392.926, 'duration': 5.324}], 'summary': 'Using docker to run multiple versions of an application, and accessing containers through port binding.', 'duration': 85.853, 'max_score': 2312.397, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2312397.jpg'}, {'end': 2378.956, 'src': 'embed', 'start': 2326.779, 'weight': 1, 'content': [{'end': 2333.083, 'text': 'And remember I said docker solves the problem of running different versions of the same application at once.', 'start': 2326.779, 'duration': 6.304}, {'end': 2335.984, 'text': "So that's how simple it is to do that with docker.", 'start': 2333.563, 'duration': 2.421}, {'end': 2339.446, 'text': 'So we can actually quit this container.', 'start': 2336.605, 'duration': 2.841}, {'end': 2346.25, 'text': 'And now again, we have that one nginx container with this version.', 'start': 2340.267, 'duration': 5.983}, {'end': 2354.251, 'text': 'Now the important question is how do we access this container?', 'start': 2350.086, 'duration': 4.165}, {'end': 2362.06, 'text': "Well, we can't right now, because the container is running in the closed Docker network.", 'start': 2354.651, 'duration': 7.409}, {'end': 2366.205, 'text': "So we can't access it from our local computer browser, for example.", 'start': 2362.52, 'duration': 3.685}, {'end': 2370.63, 'text': 'We need to first expose the container to our local network.', 'start': 2366.625, 'duration': 4.005}, {'end': 2374.973, 'text': "which may sound a little bit difficult, but it's super easy.", 'start': 2371.13, 'duration': 3.843}, {'end': 2378.956, 'text': "so basically, we're going to do what's called a port binding.", 'start': 2374.973, 'duration': 3.983}], 'summary': 'Docker allows running multiple app versions, with simple port binding.', 'duration': 52.177, 'max_score': 2326.779, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2326779.jpg'}], 'start': 2234.707, 'title': 'Docker container creation and management', 'summary': 'Explores the process of creating docker containers and demonstrates how to directly execute the run command without pulling the image locally. it also explains managing multiple docker containers, exposing them to the local network using port binding, and accessing them from the local host.', 'chapters': [{'end': 2299.571, 'start': 2234.707, 'title': 'Docker container creation process', 'summary': 'Explores the process of creating docker containers and demonstrates how to directly execute the run command without pulling the image locally, allowing for seamless use of any image available on docker hub.', 'duration': 64.864, 'highlights': ['The docker run command allows running any image available on Docker Hub directly without the need to pull it first, demonstrating the flexibility of container deployment.', 'Demonstrates the option to choose a different image version, such as 1.22-alpine, showcasing the versatility of image selection.', 'The process of directly running an image using the Docker run command is highlighted, emphasizing the elimination of the need to have the image available locally.']}, {'end': 2594.026, 'start': 2300.092, 'title': 'Managing docker containers and accessing them', 'summary': 'Explains how to manage multiple docker containers, expose them to the local network using port binding, and access them from the local host, simplifying the process of running and accessing different versions of the same application with docker.', 'duration': 293.934, 'highlights': ["By using Docker, it's possible to run multiple containers with different versions of the same application, simplifying the process of managing and accessing different versions of the application. Docker allows running multiple containers with different versions of the same application, providing a simplified solution for managing and accessing different versions of the application at once.", 'The process of accessing containers from the local host is simplified by using port binding, allowing containers to be exposed to the local network and accessed from specific ports on the local host. Port binding simplifies the process of accessing containers from the local host by exposing them to the local network and allowing access from specific ports on the local host.', 'The example demonstrates accessing an application running inside a Docker container from the local host using port binding, providing a practical illustration of the process. The example showcases accessing an application running inside a Docker container from the local host using port binding, offering a practical demonstration of the process.']}], 'duration': 359.319, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2234707.jpg', 'highlights': ['The docker run command allows running any image available on Docker Hub directly without the need to pull it first, demonstrating the flexibility of container deployment.', "By using Docker, it's possible to run multiple containers with different versions of the same application, simplifying the process of managing and accessing different versions of the application.", 'The process of accessing containers from the local host is simplified by using port binding, allowing containers to be exposed to the local network and accessed from specific ports on the local host.']}, {'end': 2960.691, 'segs': [{'end': 2713.28, 'src': 'embed', 'start': 2630.583, 'weight': 0, 'content': [{'end': 2639.348, 'text': "Now there's one thing I want to point out here, which is that Docker run command actually creates a new container every time.", 'start': 2630.583, 'duration': 8.765}, {'end': 2648.273, 'text': "It doesn't reuse the container that we created previously, which means, since we executed Docker run command a couple of times already,", 'start': 2639.708, 'duration': 8.565}, {'end': 2652.016, 'text': 'we should actually have multiple containers on our laptop.', 'start': 2648.273, 'duration': 3.743}, {'end': 2657.418, 'text': 'However, if I do Docker PS, I only see the running container.', 'start': 2652.156, 'duration': 5.262}, {'end': 2660.321, 'text': "I don't see the ones that I created but stopped.", 'start': 2657.558, 'duration': 2.763}, {'end': 2662.684, 'text': 'But those containers actually still exist.', 'start': 2660.682, 'duration': 2.002}, {'end': 2670.486, 'text': 'So if I do docker ps with a flag, A and execute.', 'start': 2663.145, 'duration': 7.341}, {'end': 2676.929, 'text': 'This gives you actually a list of all containers, whether they are running or stopped.', 'start': 2670.966, 'duration': 5.963}, {'end': 2680.551, 'text': 'So this is the active container that is still running.', 'start': 2677.549, 'duration': 3.002}, {'end': 2682.952, 'text': 'And these ones are the stopped ones.', 'start': 2681.011, 'duration': 1.941}, {'end': 2686.774, 'text': 'It even says exited 10 minutes ago, six minutes ago, whatever.', 'start': 2683.032, 'duration': 3.742}, {'end': 2690.636, 'text': 'So we have four containers with different configuration.', 'start': 2687.294, 'duration': 3.342}, {'end': 2697.459, 'text': 'And previously I showed you Docker stop command, which basically stops an actively running container.', 'start': 2691.496, 'duration': 5.963}, {'end': 2705.435, 'text': 'So we can stop this one and now it will show it as a stopped container as well, exited one second ago.', 'start': 2698.089, 'duration': 7.346}, {'end': 2713.28, 'text': 'But the same way you can also restart a container that you created before without having to create a new one with Docker run command.', 'start': 2705.995, 'duration': 7.285}], 'summary': "Docker run creates new containers, resulting in multiple containers on the laptop; using 'docker ps -a' shows all containers, including stopped ones.", 'duration': 82.697, 'max_score': 2630.583, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2630583.jpg'}, {'end': 2771.018, 'src': 'embed', 'start': 2743.009, 'weight': 3, 'content': [{'end': 2746.792, 'text': "but id is hard to remember and you'll have to look it up all the time.", 'start': 2743.009, 'duration': 3.783}, {'end': 2754.495, 'text': 'so as an alternative, you can also use container name for all these commands instead of the ID, which gets auto generated by Docker.', 'start': 2746.792, 'duration': 7.703}, {'end': 2762.596, 'text': 'But we can actually rewrite that and we can give our containers more meaningful names when we create them.', 'start': 2754.975, 'duration': 7.621}, {'end': 2771.018, 'text': 'So we can stop those two containers using the ID or the name like this.', 'start': 2764.537, 'duration': 6.481}], 'summary': 'Use container names instead of ids for easier access and management.', 'duration': 28.009, 'max_score': 2743.009, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2743009.jpg'}, {'end': 2855.158, 'src': 'embed', 'start': 2824.178, 'weight': 5, 'content': [{'end': 2829.502, 'text': 'which means those images that we used are visible and available for public.', 'start': 2824.178, 'duration': 5.324}, {'end': 2837.827, 'text': "But when a company creates their own images of their own applications, of course, they don't want it to be available publicly.", 'start': 2830.362, 'duration': 7.465}, {'end': 2842.49, 'text': "So for that, there are what's called private Docker registries.", 'start': 2838.367, 'duration': 4.123}, {'end': 2843.671, 'text': 'And there are many of them.', 'start': 2842.79, 'duration': 0.881}, {'end': 2848.674, 'text': 'Almost all cloud providers have a service for private Docker registry.', 'start': 2843.871, 'duration': 4.803}, {'end': 2855.158, 'text': "For example, AWS's ECR or elastic container registry service, Google azure.", 'start': 2848.754, 'duration': 6.404}], 'summary': "Private docker registries are used to secure company images, with aws's ecr and google azure being popular choices.", 'duration': 30.98, 'max_score': 2824.178, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2824178.jpg'}, {'end': 2901.339, 'src': 'embed', 'start': 2875.856, 'weight': 4, 'content': [{'end': 2882.983, 'text': 'you can actually create a private registry on docker hub or even create a public registry and upload your images there.', 'start': 2875.856, 'duration': 7.127}, {'end': 2884.664, 'text': "so that's why i actually have an account,", 'start': 2882.983, 'duration': 1.681}, {'end': 2891.951, 'text': 'because i have uploaded a couple of images on docker hub that my students can download for different courses.', 'start': 2884.664, 'duration': 7.287}, {'end': 2897.876, 'text': 'and there is one more concept i want to mention related to registry, which is something called a repository,', 'start': 2891.951, 'duration': 5.925}, {'end': 2901.339, 'text': 'which you also often hear docker repository, docker registry.', 'start': 2897.876, 'duration': 3.463}], 'summary': 'Create private or public registry on docker hub, uploaded images for students.', 'duration': 25.483, 'max_score': 2875.856, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2875856.jpg'}, {'end': 2937.073, 'src': 'embed', 'start': 2916.694, 'weight': 6, 'content': [{'end': 2926.344, 'text': 'so each application gets its own repository and in that repository you can store different image versions or tags of that same application the same way.', 'start': 2916.694, 'duration': 9.65}, {'end': 2928.125, 'text': 'docker hub is a registry.', 'start': 2926.344, 'duration': 1.781}, {'end': 2937.073, 'text': "it's a service for storing images and on docker hub you can have your public repositories for storing images that will be accessible publicly,", 'start': 2928.125, 'duration': 8.948}], 'summary': 'Each application gets its own repository, and docker hub allows for public image storage.', 'duration': 20.379, 'max_score': 2916.694, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2916694.jpg'}], 'start': 2594.467, 'title': 'Managing docker containers and docker registries', 'summary': 'Explains managing docker containers, including creating multiple containers, stopping and restarting them, and using container names. it also covers using docker hub for public image registry and private docker registries, different private registry services from cloud providers, and the distinction between a registry and a repository.', 'chapters': [{'end': 2793.837, 'start': 2594.467, 'title': 'Managing docker containers', 'summary': 'Explains how to manage docker containers, demonstrating the creation of multiple containers, stopping and restarting them, and using container names instead of ids for commands.', 'duration': 199.37, 'highlights': ['The Docker run command creates a new container every time, leading to multiple containers on the laptop when executed multiple times.', "Executing 'docker ps -a' lists all containers, whether running or stopped, demonstrating the existence of four containers with different configurations.", "The chapter introduces the 'Docker start' command, allowing the restart of a container without creating a new one with 'Docker run' command.", 'Using container names instead of IDs for Docker commands is introduced as an alternative, enabling the use of more meaningful names for containers.']}, {'end': 2960.691, 'start': 2794.378, 'title': 'Docker registries and private repositories', 'summary': 'Covers the usage of docker hub for public image registry and the concept of private docker registries, highlighting the availability of various private registry services from cloud providers and the distinction between a registry and a repository.', 'duration': 166.313, 'highlights': ['The chapter covers the usage of Docker Hub for public image registry and the concept of private Docker registries The chapter discusses the use of Docker Hub as a public image registry and introduces the concept of private Docker registries for companies.', "Various private registry services are available from cloud providers Cloud providers such as AWS, Google, and Azure offer private Docker registry services, including AWS's ECR (Elastic Container Registry) and similar services from other providers.", 'Distinction between a registry and a repository is explained The explanation distinguishes a registry as a service providing storage for images, while a repository is a storage location within a registry for different application images and versions.']}], 'duration': 366.224, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2594467.jpg', 'highlights': ['The Docker run command creates a new container every time, leading to multiple containers on the laptop when executed multiple times.', "Executing 'docker ps -a' lists all containers, whether running or stopped, demonstrating the existence of four containers with different configurations.", "The chapter introduces the 'Docker start' command, allowing the restart of a container without creating a new one with 'Docker run' command.", 'Using container names instead of IDs for Docker commands is introduced as an alternative, enabling the use of more meaningful names for containers.', 'The chapter covers the usage of Docker Hub for public image registry and the concept of private Docker registries.', 'Various private registry services are available from cloud providers such as AWS, Google, and Azure.', 'Distinction between a registry and a repository is explained, distinguishing a registry as a service providing storage for images, while a repository is a storage location within a registry for different application images and versions.']}, {'end': 4054.271, 'segs': [{'end': 3049.475, 'src': 'heatmap', 'start': 2960.771, 'weight': 3, 'content': [{'end': 2964.912, 'text': 'How can I create my own Docker image for my application?', 'start': 2960.771, 'duration': 4.141}, {'end': 2971.195, 'text': "And the use case for that is when I'm done with development application is ready.", 'start': 2965.252, 'duration': 5.943}, {'end': 2972.115, 'text': 'It has some features.', 'start': 2971.255, 'duration': 0.86}, {'end': 2974.597, 'text': 'and we want to release it to the end users.', 'start': 2972.635, 'duration': 1.962}, {'end': 2977.38, 'text': 'So we want to run it on a deployment server.', 'start': 2974.957, 'duration': 2.423}, {'end': 2982.845, 'text': 'And to make the deployment process easier, we want to deploy our application as a Docker container,', 'start': 2977.76, 'duration': 5.085}, {'end': 2988.129, 'text': 'along with the database and other services that are also going to run as Docker containers.', 'start': 2982.845, 'duration': 5.284}, {'end': 2995.395, 'text': 'So how can we take our created deployed application code and package it into a Docker image.', 'start': 2988.63, 'duration': 6.765}, {'end': 3002.339, 'text': 'For that, we need to create a definition of how to build an image from our application.', 'start': 2995.795, 'duration': 6.544}, {'end': 3007.102, 'text': 'And that definition is written in a file called a Docker file.', 'start': 3002.879, 'duration': 4.223}, {'end': 3008.483, 'text': "So that's how it should be called.", 'start': 3007.442, 'duration': 1.041}, {'end': 3022.732, 'text': "creating a simple docker file is very easy and in this part we're going to take a super simple node.js application that i prepared and we're going to write a docker file for that application to create a docker image out of it and,", 'start': 3009.023, 'duration': 13.709}, {'end': 3025.054, 'text': "as i said, it's very easy to do.", 'start': 3022.732, 'duration': 2.322}, {'end': 3026.855, 'text': 'so this is the application.', 'start': 3025.054, 'duration': 1.801}, {'end': 3028.656, 'text': 'it is extremely simple.', 'start': 3026.855, 'duration': 1.801}, {'end': 3040.828, 'text': 'i just have one server.js file which basically just starts the application on port 3000 and then It just says welcome when you access it from the browser.', 'start': 3028.656, 'duration': 12.172}, {'end': 3049.475, 'text': 'And we have one package of JSON file, which contains this dependency for the express library that we use here to start the application.', 'start': 3041.409, 'duration': 8.066}], 'summary': 'Creating docker image for application deployment with easy packaging and deployment as containers.', 'duration': 47.712, 'max_score': 2960.771, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2960771.jpg'}, {'end': 3209.883, 'src': 'heatmap', 'start': 3084.137, 'weight': 0.728, 'content': [{'end': 3088.219, 'text': 'It needs node installed, because node should run our application right?', 'start': 3084.137, 'duration': 4.082}, {'end': 3095.744, 'text': 'So if I wanted to start this application locally in my terminal, I would execute node src,', 'start': 3089.16, 'duration': 6.584}, {'end': 3100.786, 'text': 'the source folder and server.js command to start the application.', 'start': 3095.744, 'duration': 5.042}, {'end': 3104.652, 'text': 'So we need that node command available inside the image.', 'start': 3101.206, 'duration': 3.446}, {'end': 3108.377, 'text': "And that's where the concept of base image comes in.", 'start': 3105.353, 'duration': 3.024}, {'end': 3111.722, 'text': 'So each Docker image is actually based on this base image.', 'start': 3108.657, 'duration': 3.065}, {'end': 3123.253, 'text': 'which is mostly a lightweight Linux operating system image that has the node npm or whatever tool you need for your application installed on top of it.', 'start': 3112.463, 'duration': 10.79}, {'end': 3126.876, 'text': 'So for a JavaScript application, you would have node-based image.', 'start': 3123.613, 'duration': 3.263}, {'end': 3131.2, 'text': 'If you have Java application, we will use an image that has Java runtime installed.', 'start': 3127.136, 'duration': 4.064}, {'end': 3135.744, 'text': 'Again, Linux operating system with Java installed on top of it.', 'start': 3132, 'duration': 3.744}, {'end': 3137.779, 'text': "And that's the base image.", 'start': 3136.638, 'duration': 1.141}, {'end': 3142.321, 'text': 'And we define the base image using a directive in Dockerfile called from.', 'start': 3138.339, 'duration': 3.982}, {'end': 3145.563, 'text': "We're saying build this image from the base image.", 'start': 3142.761, 'duration': 2.802}, {'end': 3155.769, 'text': "And if I go back to Docker Hub and search for node, you'll see that we have an image which has node and npm installed inside.", 'start': 3145.623, 'duration': 10.146}, {'end': 3159.231, 'text': 'and base images are just like other images.', 'start': 3156.67, 'duration': 2.561}, {'end': 3164.134, 'text': 'so basically you can pile and build on top of the images in docker.', 'start': 3159.231, 'duration': 4.903}, {'end': 3169.437, 'text': "so they're just like any other image that we saw and they also have tags or image versions.", 'start': 3164.134, 'duration': 5.303}, {'end': 3175.56, 'text': "so we're gonna choose node, image and a specific version, and let's actually go for 19-alpine.", 'start': 3169.437, 'duration': 6.123}, {'end': 3184.312, 'text': "So that's our base image and our first directive in the Docker file.", 'start': 3180.489, 'duration': 3.823}, {'end': 3190.015, 'text': 'So again, this will just make sure that when our node.js application starts in a container,', 'start': 3184.532, 'duration': 5.483}, {'end': 3194.538, 'text': 'it will have node and npm commands available inside to run our application.', 'start': 3190.015, 'duration': 4.523}, {'end': 3202.444, 'text': 'Now, if we start our application with this command, we will see that we get an error because we need to first install dependencies of an application.', 'start': 3195.079, 'duration': 7.365}, {'end': 3209.883, 'text': 'We just have one dependency, which is press library, which means we would have to execute npm install command,', 'start': 3202.864, 'duration': 7.019}], 'summary': 'Docker images are based on a lightweight linux os with necessary tools installed, like node for a javascript application.', 'duration': 125.746, 'max_score': 3084.137, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w3084137.jpg'}, {'end': 3543.472, 'src': 'heatmap', 'start': 3442.603, 'weight': 0, 'content': [{'end': 3450.228, 'text': "And then we're executing npm install again within the container to download all the dependencies that application needs that are defined here.", 'start': 3442.603, 'duration': 7.625}, {'end': 3461.112, 'text': 'And finally, we need to run the application, right? So after npm install, the node command should be executed and we learn to execute commands.', 'start': 3450.549, 'duration': 10.563}, {'end': 3463.633, 'text': 'We use the run directive.', 'start': 3461.392, 'duration': 2.241}, {'end': 3472.575, 'text': 'However, if this is the last command in the Dockerfile, so something that actually starts the process itself, the application inside,', 'start': 3464.233, 'duration': 8.342}, {'end': 3476.035, 'text': 'we have a different directive for that called cmd.', 'start': 3472.575, 'duration': 3.46}, {'end': 3481.256, 'text': "So that's basically the last command in the Dockerfile and that starts the application.", 'start': 3476.536, 'duration': 4.72}, {'end': 3490.363, 'text': 'The syntax for that is the command which is node and the parameter which is server.js.', 'start': 3481.757, 'duration': 8.606}, {'end': 3493.064, 'text': 'so we copied everything into slash app.', 'start': 3490.363, 'duration': 2.701}, {'end': 3499.846, 'text': "so we have the server.js inside the app directory and we're starting it or running it using node command.", 'start': 3493.064, 'duration': 6.782}, {'end': 3500.566, 'text': "that's it.", 'start': 3499.846, 'duration': 0.72}, {'end': 3510.729, 'text': 'that is the complete docker file which will create a docker image for our node.js application, which we can then start as a container.', 'start': 3500.566, 'duration': 10.163}, {'end': 3516.854, 'text': 'So now we have the definition in Docker file.', 'start': 3514.352, 'duration': 2.502}, {'end': 3520.576, 'text': "It's time to actually build the image from this definition.", 'start': 3517.334, 'duration': 3.242}, {'end': 3525.099, 'text': "I'm going to clean this up and without changing to the terminal, we can actually reuse this one.", 'start': 3521.357, 'duration': 3.742}, {'end': 3530.303, 'text': 'We can execute a Docker command to build a Docker image, which is super easy.', 'start': 3525.6, 'duration': 4.703}, {'end': 3532.224, 'text': 'We just do Docker build.', 'start': 3530.503, 'duration': 1.721}, {'end': 3535.346, 'text': 'Then we have a couple of options that we can provide.', 'start': 3532.985, 'duration': 2.361}, {'end': 3537.848, 'text': 'The first one is the name of the image.', 'start': 3535.366, 'duration': 2.482}, {'end': 3543.472, 'text': 'So just like all those images have names, right? Like node, release, et cetera.', 'start': 3538.148, 'duration': 5.324}], 'summary': 'Executing npm install, running node command, and building docker image for node.js application.', 'duration': 100.869, 'max_score': 3442.603, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w3442603.jpg'}, {'end': 3618.431, 'src': 'heatmap', 'start': 3569.123, 'weight': 0.759, 'content': [{'end': 3578.254, 'text': "So we're telling Docker build an image with this name, with this tag from the definition in this specific Docker file right?", 'start': 3569.123, 'duration': 9.131}, {'end': 3580.875, 'text': 'So this is a location of Docker file.', 'start': 3578.674, 'duration': 2.201}, {'end': 3585.077, 'text': 'In this case, we are in the directory where Docker file is located.', 'start': 3581.115, 'duration': 3.962}, {'end': 3587.419, 'text': "So it's gonna be the current directory.", 'start': 3585.518, 'duration': 1.901}, {'end': 3593.562, 'text': 'So this dot basically refers to the current folder where Docker file is located.', 'start': 3587.899, 'duration': 5.663}, {'end': 3602.086, 'text': 'So now if we execute this, as you see, Docker is actually building the image from our Docker file.', 'start': 3594.142, 'duration': 7.944}, {'end': 3608.463, 'text': 'and it looks like it succeeded where it started building the image.', 'start': 3604.56, 'duration': 3.903}, {'end': 3615.709, 'text': 'you see those steps, those directives that we defined here, so we have the first one from directive got executed.', 'start': 3608.463, 'duration': 7.246}, {'end': 3618.431, 'text': 'then we have the copy as a second step.', 'start': 3615.709, 'duration': 2.722}], 'summary': 'Using docker to build image from dockerfile in current directory.', 'duration': 49.308, 'max_score': 3569.123, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w3569123.jpg'}, {'end': 3734.438, 'src': 'embed', 'start': 3701.59, 'weight': 2, 'content': [{'end': 3704.81, 'text': 'And we can do 3000, the same as in the container.', 'start': 3701.59, 'duration': 3.22}, {'end': 3708.431, 'text': 'So this is the host port and this is container port.', 'start': 3705.29, 'duration': 3.141}, {'end': 3719.319, 'text': 'And now if I execute this command and do docker ps, we should see our node app running on port 3000.', 'start': 3709.131, 'duration': 10.188}, {'end': 3721.12, 'text': 'And now the moment of truth.', 'start': 3719.319, 'duration': 1.801}, {'end': 3734.438, 'text': 'Going back to the browser and opening localhost 3000, there is our welcome to my awesome app message from our application.', 'start': 3721.761, 'duration': 12.677}], 'summary': 'Deployed node app on port 3000, accessible via localhost.', 'duration': 32.848, 'max_score': 3701.59, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w3701590.jpg'}, {'end': 3966.752, 'src': 'embed', 'start': 3942.984, 'weight': 1, 'content': [{'end': 3952.727, 'text': 'could be configured on Jenkins or some other scripts or tools that Docker image has to be deployed on a development server.', 'start': 3942.984, 'duration': 9.743}, {'end': 3961.35, 'text': 'So you have a development server that pulls the image from the private repository, your JavaScript application image,', 'start': 3953.147, 'duration': 8.203}, {'end': 3966.752, 'text': 'and then pulls the MongoDB that your JavaScript application depends on from a Docker hub.', 'start': 3961.35, 'duration': 5.402}], 'summary': 'Deploy javascript application image and mongodb on development server using jenkins or other tools', 'duration': 23.768, 'max_score': 3942.984, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w3942984.jpg'}], 'start': 2960.771, 'title': 'Docker image creation and deployment', 'summary': 'Details the creation of docker images and containers for node.js applications, emphasizing the process, use of a docker file, and deployment in a software development lifecycle.', 'chapters': [{'end': 3051.977, 'start': 2960.771, 'title': 'Creating docker image for application', 'summary': 'Details the process of creating a docker image for an application, emphasizing the use case, the necessity of a docker file, and the simplicity of the process.', 'duration': 91.206, 'highlights': ['The use case for creating a Docker image is when the development of the application is completed, and it is ready for release to end users, and to simplify the deployment process by running it on a deployment server as a Docker container along with other services. Completion of application development, deployment on a server, running as Docker container.', 'The process involves creating a Docker file, which serves as a definition for building an image from the application, and it is a crucial component for packaging the application into a Docker image. Creation of Docker file, defining the image building process.', 'The chapter demonstrates the creation of a Docker file for a simple node.js application, showcasing the ease and simplicity of the process. Demonstration of creating a Docker file for a simple node.js application.']}, {'end': 3441.983, 'start': 3052.498, 'title': 'Creating a docker image and container', 'summary': 'Explains the process of creating a docker image and container for a node.js application, including the use of a base image, installing dependencies, and copying application files into the container.', 'duration': 389.485, 'highlights': ['Explaining the concept of base image and its use in Dockerfile The concept of base image is explained as a lightweight Linux operating system image that forms the foundation for a Docker image, with specific tools required for the application installed on top of it.', "Selecting a specific version of the base image from Docker Hub The process of choosing a specific version of the base image from Docker Hub is detailed, with the example of selecting the 'node:19-alpine' image.", "Detailing the installation of application dependencies inside the container The process of installing application dependencies using the 'npm install' command inside the container is explained, which includes checking the package.json file and creating the node modules folder.", "Copying application files into the container using 'COPY' directive The 'COPY' directive in the Dockerfile is described for copying individual files like package.json and entire directories like 'src' into the container, creating an isolated environment for the application.", "Setting the working directory inside the container using 'WORKDIR' directive The 'WORKDIR' directive is highlighted as a method to set the default directory inside the container, allowing for the execution of subsequent commands within that directory."]}, {'end': 4054.271, 'start': 3442.603, 'title': 'Docker image creation and deployment', 'summary': 'Explains the process of creating a docker image from a dockerfile, building the image, running a container from the image, and deploying a javascript application with mongodb using docker in a software development lifecycle.', 'duration': 611.668, 'highlights': ['The process of creating a Docker image from a Dockerfile is explained, including executing npm install, running the application using node command, and using the run directive for commands. The process of creating a Docker image from a Dockerfile is explained, including executing npm install again within the container, running the application using the node command, and using the run directive for commands.', 'Building a Docker image with a specific tag and name using Docker build command, and checking the successful creation of the image using Docker images command is demonstrated. Demonstrates building a Docker image with a specific tag and name using Docker build command, and checking the successful creation of the image using Docker images command.', 'Running a container from the created Docker image, exposing the port, and accessing the application running inside the container is illustrated. Illustrates running a container from the created Docker image, exposing the port, and accessing the application running inside the container.', 'The integration of Docker in the software development lifecycle, including building a JavaScript application, creating a Docker image, and deploying it on a development server using private repositories, is described. Describes the integration of Docker in the software development lifecycle, including building a JavaScript application, creating a Docker image, and deploying it on a development server using private repositories.']}], 'duration': 1093.5, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/pg19Z8LL06w/pics/pg19Z8LL06w2960771.jpg', 'highlights': ['Demonstrates building a Docker image with a specific tag and name using Docker build command, and checking the successful creation of the image using Docker images command.', 'Describes the integration of Docker in the software development lifecycle, including building a JavaScript application, creating a Docker image, and deploying it on a development server using private repositories.', 'Illustrates running a container from the created Docker image, exposing the port, and accessing the application running inside the container.', 'The process involves creating a Docker file, which serves as a definition for building an image from the application, and it is a crucial component for packaging the application into a Docker image.', 'The use case for creating a Docker image is when the development of the application is completed, and it is ready for release to end users, and to simplify the deployment process by running it on a deployment server as a Docker container along with other services.']}], 'highlights': ['Docker simplifies application development and deployment by packaging applications into containers, containing everything needed to run, making it easier to share and distribute.', 'Containers simplify the application deployment process by encapsulating all dependencies and configuration inside the application artifact, reducing the chances of miscommunication and issues.', 'Docker containers usually start up in a few milliseconds, while virtual machines need a couple of minutes to start up, showcasing the faster startup time of Docker containers.', 'Docker images are usually a couple of megabytes large, while virtual machine images can be a couple of gigabytes, resulting in significant disk space savings when working with Docker.', 'The process of installing Docker Desktop on Mac and Windows is emphasized with a focus on the ease and straightforwardness of the installation.', 'Docker Hub is the primary Docker image registry, hosting official and user-generated Docker images, accessible without the need for registration.', 'Executing docker pull command allows downloading an image, such as nginx:1.23, from Docker Hub.', 'The docker run command allows running any image available on Docker Hub directly without the need to pull it first, demonstrating the flexibility of container deployment.', 'The Docker run command creates a new container every time, leading to multiple containers on the laptop when executed multiple times.', 'Demonstrates building a Docker image with a specific tag and name using Docker build command, and checking the successful creation of the image using Docker images command.', 'Describes the integration of Docker in the software development lifecycle, including building a JavaScript application, creating a Docker image, and deploying it on a development server using private repositories.']}