title
Docker Tutorial for Beginners [FULL COURSE in 3 Hours]
description
Full Docker Tutorial | Complete Docker Course | Hands-on course with a lot of demos and explaining the concepts behind, so that you really understand it.
π Become a Kubernetes Administrator - CKA: https://bit.ly/3WwgLF5
π Become a DevOps Engineer - full educational program: https://bit.ly/3WvLq53
𧑠Udemy courses: https://bit.ly/3ozagEC
βΊ Follow me on IG for behind the scenes content: ππΌ https://bit.ly/2F3LXYJ
#docker #dockertutorial #techworldwithnana
By the end, 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 demoβs to follow along, so you get your first hands-on experience with Docker and feel more confident using it in your project.
β¬β¬β¬β¬β¬β¬ T I M E S T A M P S β° β¬β¬β¬β¬β¬β¬
0:00 - Intro and Course Overview
01:58 - What is Docker?
10:56 - What is a Container?
19:40 - Docker vs Virtual Machine
23:53 - Docker Installation
42:02 - Main Docker Commands
57:15 - Debugging a Container
1:06:39 - Demo Project Overview - Docker in Practice
1:10:08 - Developing with Containers
1:29:49 - Docker Compose - Running multiple services
1:42:02 - Dockerfile - Building our own Docker Image
2:04:36 - Private Docker Repository - Pushing our built Docker Image into a private Registry on AWS
2:19:06 - Deploy our containerized app
2:27:26 - Docker Volumes - Persist data in Docker
2:33:03 - Volumes Demo - Configure persistence for our demo project
2:45:13 - Wrap Up
π Links
βΊ Developing with Containers - Demo project: https://gitlab.com/nanuchi/techworld-js-docker-demo-app
π 1. What is Docker?
βΊ What is a container and what problems does it solve?
βΊ Container repository - where do containers live?
π 2. What is a Container technically
βΊ What is a container technically? (layers of images)
βΊ Demo part (docker hub and run a docker container locally)
π 3. Docker vs Virtual Machine
π 4. Docker Installation
βΊ Before Installing Docker - prerequisites
βΊ Install docker on Mac, Windows, Linux
βοΈ Note: Docker Toolbox has been deprecated. Please use Docker Desktop instead. See for Mac (https://docs.docker.com/docker-for-mac/) and for Windows (https://docs.docker.com/docker-for-windows/).
π 5. Main Docker Commands
βΊ docker pull, docker run, docker ps, docker stop, docker start, port mapping
π 6. Debugging a Container
βΊ docker logs, docker exec -it
π 7. Demo Project Overview - Docker in Practice (Nodejs App with MongoDB and MongoExpress UI)
π 8. Developing with Containers
βΊ JavaScript App (HTML, JavaScript Frontend, Node.js Backend)
βΊ MongoDB and Mongo Express Set-Up with Docker
βΊ Docker Network concept and demo
π 9. Docker Compose - Running multiple services
βΊ What is Docker Compose?
βΊ How to use it - Create the Docker Compose File
βΊ Docker Networking in Docker Compose
π 10. Dockerfile - Building our own Docker Image
βΊ What is a Dockerfile?
βΊ Create the Dockerfile
βΊ Build an image with Dockerfile
π 11. Private Docker Repository - Pushing our built Docker Image into a private Registry on AWS
βΊ Private Repository on AWS ECR
βΊ docker login
βΊ docker tag
βΊ Push Docker Image to the Private Repo
π 12. Deploy our containerized application
π 13. Docker Volumes - Persist data in Docker
βΊ When do we need Docker Volumes?
βΊ What is Docker Volumes?
βΊ Docker Volumes Types
π 14. Volumes Demo - Configure persistence for our demo project
β¬β¬β¬β¬β¬β¬ Want to learn more? π β¬β¬β¬β¬β¬β¬
DevOps Tools, like GitHub Actions, Terraform βΊ https://bit.ly/2W9UEq6
Jenkins Pipeline Tutorials βΊ https://bit.ly/2Wunx08
Full Kubernetes tutorial βΊ https://www.youtube.com/playlist?list=PLy7NrYWoggjziYQIDorlXjTvvwweTYoNC
β¬β¬β¬β¬β¬β¬ 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 & Bootcamp & Ebooks π β¬β¬β¬β¬β¬β¬
βΊ 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 Tutorial for Beginners [FULL COURSE in 3 Hours]', 'heatmap': [{'end': 4103.462, 'start': 3990.787, 'weight': 1}], 'summary': 'This docker tutorial provides a comprehensive course covering basic concepts, main commands, image creation, and deployment, with practical use cases. it explores advantages of containers, installation on different platforms, container management, mongodb application usage, docker compose, image creation, optimization, and developing javascript applications with docker, offering hands-on demos and practical examples.', 'chapters': [{'end': 117.839, 'segs': [{'end': 125.885, 'src': 'embed', 'start': 94.646, 'weight': 0, 'content': [{'end': 100.369, 'text': 'If you get stuck anywhere, just comment under the video and I will try my best to answer your questions.', 'start': 94.646, 'duration': 5.723}, {'end': 105.371, 'text': 'Also, you can join the private tech world with, not a community group on Facebook,', 'start': 100.969, 'duration': 4.402}, {'end': 109.593, 'text': 'which is there to exchange your knowledge with others and connect with them.', 'start': 105.371, 'duration': 4.222}, {'end': 116.097, 'text': 'If you like the course, By the end of the video, be sure to subscribe to my channel for more related content.', 'start': 110.193, 'duration': 5.904}, {'end': 117.839, 'text': "So let's get started.", 'start': 116.758, 'duration': 1.081}, {'end': 125.885, 'text': "So we'll talk about what a container is and what problems it solves.", 'start': 122.002, 'duration': 3.883}], 'summary': 'Video provides support and encourages joining tech community group on facebook.', 'duration': 31.239, 'max_score': 94.646, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE94646.jpg'}], 'start': 1.038, 'title': 'Docker course', 'summary': 'Covers a complete docker course with a mix of animated theoretic explanations and hands-on demos, encompassing basic concepts, main commands, docker workflow, image creation, deployment, and data persistence, aiming to provide a deep understanding of docker with practical use cases.', 'chapters': [{'end': 117.839, 'start': 1.038, 'title': 'Complete docker course', 'summary': 'Covers a complete docker course with a mix of animated theoretic explanations and hands-on demos, covering basic concepts, main commands, docker workflow, image creation, deployment, and data persistence, aiming to provide a deep understanding of docker with practical use cases.', 'duration': 116.801, 'highlights': ['The course covers a mix of animated theoretic explanations and hands-on demos, providing a deep understanding of Docker with practical use cases. Mix of animated theoretic explanations and hands-on demos, practical use cases', 'The topics covered include basic concepts, main commands, Docker workflow, image creation, deployment, and data persistence. Basic concepts, main commands, Docker workflow, image creation, deployment, data persistence', 'The course aims to help users develop a deep understanding of all the main concepts and gain a big picture overview of how Docker is used in the whole software development process. Deep understanding of main concepts, big picture overview of Docker in software development']}], 'duration': 116.801, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1038.jpg', 'highlights': ['Mix of animated theoretic explanations and hands-on demos, practical use cases', 'Basic concepts, main commands, Docker workflow, image creation, deployment, data persistence', 'Deep understanding of main concepts, big picture overview of Docker in software development']}, {'end': 1130.544, 'segs': [{'end': 254.691, 'src': 'embed', 'start': 230.854, 'weight': 1, 'content': [{'end': 239.885, 'text': 'So if I here search for a Docker Hub, which is the name of the public repository for Docker, I will see this official website.', 'start': 230.854, 'duration': 9.031}, {'end': 242.528, 'text': 'So here, if you scroll down,', 'start': 240.826, 'duration': 1.702}, {'end': 252.45, 'text': 'you see that there more than 100000 container images of different applications hosted or stored in this Docker repository.', 'start': 242.528, 'duration': 9.922}, {'end': 254.691, 'text': 'So here you see just some of the examples.', 'start': 252.97, 'duration': 1.721}], 'summary': 'Over 100,000 container images of different applications are hosted in the docker hub repository.', 'duration': 23.837, 'max_score': 230.854, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE230854.jpg'}, {'end': 356.694, 'src': 'embed', 'start': 335.243, 'weight': 0, 'content': [{'end': 344.765, 'text': "Configure them and run them on their local development environment, and depending on which operating system they're using,", 'start': 335.243, 'duration': 9.522}, {'end': 347.907, 'text': 'the installation process will look actually different.', 'start': 344.765, 'duration': 3.142}, {'end': 356.694, 'text': 'Also, another thing with installing services like this is that you have multiple steps of installation,', 'start': 348.908, 'duration': 7.786}], 'summary': 'Configuring and running services on local development environment has different installation processes based on the operating system used.', 'duration': 21.451, 'max_score': 335.243, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE335243.jpg'}, {'end': 506.961, 'src': 'embed', 'start': 478.306, 'weight': 3, 'content': [{'end': 486.111, 'text': 'you can actually have different versions of the same application running on your local environment without having any conflict.', 'start': 478.306, 'duration': 7.805}, {'end': 496.427, 'text': "So now let's see how containers can improve the deployment process before the containers at traditional deployment process will look like this.", 'start': 488.231, 'duration': 8.196}, {'end': 506.961, 'text': 'Development team will produce artifacts together with a set of instructions of how to actually install and configure those artifacts on the server.', 'start': 497.659, 'duration': 9.302}], 'summary': 'Containers enable different app versions without conflict, improving deployment process.', 'duration': 28.655, 'max_score': 478.306, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE478306.jpg'}, {'end': 594.403, 'src': 'embed', 'start': 567.589, 'weight': 6, 'content': [{'end': 573.692, 'text': 'So there could be cases where developers forget to mention some important point about configuration.', 'start': 567.589, 'duration': 6.103}, {'end': 579.759, 'text': 'or maybe when operations team misinterpret some of those instructions.', 'start': 574.958, 'duration': 4.801}, {'end': 587.661, 'text': 'And when that fails, the operations team has to go back to the developers and ask for more details.', 'start': 580.379, 'duration': 7.282}, {'end': 594.403, 'text': 'And this could lead to some back and forth communication until the application is successfully deployed on the server.', 'start': 588.021, 'duration': 6.382}], 'summary': 'Miscommunication between developers and operations team causes delays in application deployment.', 'duration': 26.814, 'max_score': 567.589, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE567589.jpg'}, {'end': 726.93, 'src': 'embed', 'start': 695.664, 'weight': 4, 'content': [{'end': 700.868, 'text': 'So on top of the base image you would have application image and this is a simplified diagram.', 'start': 695.664, 'duration': 5.204}, {'end': 709.112, 'text': 'Usually you would have this intermediate images that will lead up to the actual application image that is going to run in the container.', 'start': 701.249, 'duration': 7.863}, {'end': 712.495, 'text': 'And of course, on top of that, you will have all this configuration data.', 'start': 709.432, 'duration': 3.063}, {'end': 726.93, 'text': "So now I think it's time to dove into a practical example of how you can actually use a Docker container and how it looks like when you install it and download it and run it on your local machine.", 'start': 713.416, 'duration': 13.514}], 'summary': 'Intermediate images lead to actual application image in docker container.', 'duration': 31.266, 'max_score': 695.664, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE695664.jpg'}, {'end': 1094.255, 'src': 'embed', 'start': 1067.532, 'weight': 5, 'content': [{'end': 1077.601, 'text': "it doesn't find it locally, so it pushes and this is what I actually explained to you earlier because It's the same application,", 'start': 1067.532, 'duration': 10.069}, {'end': 1079.122, 'text': 'but with just a different version.', 'start': 1077.601, 'duration': 1.521}, {'end': 1088.13, 'text': "Some of the layers of the image are the same, so I don't have to fetch those again because they are already on my machine,", 'start': 1079.542, 'duration': 8.588}, {'end': 1090.832, 'text': 'and it just fetches the layers that are different.', 'start': 1088.13, 'duration': 2.702}, {'end': 1094.255, 'text': 'So that saves a little bit of time.', 'start': 1091.312, 'duration': 2.943}], 'summary': 'Using image layers results in time savings during fetching.', 'duration': 26.723, 'max_score': 1067.532, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1067532.jpg'}], 'start': 122.002, 'title': 'Advantages of containers in development and deployment', 'summary': 'Discusses the benefits of containers in streamlining development and deployment, with over 100,000 container images available on the public docker repository and practical examples of simplifying setup and improving deployment processes.', 'chapters': [{'end': 312.32, 'start': 122.002, 'title': 'Container basics and benefits', 'summary': 'Discusses the definition and advantages of containers, emphasizing their role in streamlining the development and deployment process, as well as the availability of over 100,000 container images on the public docker repository and the impact of containers on the development process.', 'duration': 190.318, 'highlights': ['Containers provide a portable way to package applications, including dependencies and configuration, resulting in increased efficiency in development and deployment processes.', 'Container repositories, such as Docker Hub, host over 100,000 container images, offering a wide range of applications for developers.', 'Containers streamline the development process by simplifying the sharing and movement of packages within development and operations teams, leading to improved collaboration and efficiency.', 'The use of containers has revolutionized the development process by enabling a more efficient and portable way of packaging applications, leading to improved collaboration and productivity within development teams.']}, {'end': 1130.544, 'start': 312.32, 'title': 'Advantages of containers in development and deployment', 'summary': 'Discusses the challenges of traditional service installation and deployment, highlighting the advantages of using containers, such as simplifying the setup of local development environments, improving deployment processes, and providing a practical example of using docker containers for running applications with different versions.', 'duration': 818.224, 'highlights': ['Using containers eliminates the need to install services directly on the operating system, making the process of setting up local development environments much easier and more efficient. Containers provide an isolated environment, allowing developers to download specific containers from a repository using a single Docker command, simplifying the setup of local development environments and making it more efficient.', 'Containers simplify the deployment process by packaging configuration dependencies inside the application, eliminating the need for environmental configuration on the server and reducing the potential for conflicts and misinterpretation of instructions. Containers streamline the deployment process by encapsulating configuration dependencies within the application, enabling developers and operations teams to work together and reducing the potential for conflicts and misinterpretation of instructions during deployment.', 'Containers are technically composed of images, with layers of stacked images on top of each other, including a small Linux-based image at the base and application images stacked on top, providing a practical understanding of the technical aspects of containers. Containers are composed of images, with layers of stacked images including a small Linux-based image at the base and application images stacked on top, providing a practical understanding of the technical aspects of containers and their composition.', 'A practical example demonstrates the process of using Docker containers for running applications, including pulling specific versions of containers from a repository, running containers, and managing multiple versions of the same application on a local machine. The practical example illustrates the process of using Docker containers for running applications, showcasing the steps of pulling specific versions of containers from a repository, running containers, and managing multiple versions of the same application on a local machine.']}], 'duration': 1008.542, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE122002.jpg', 'highlights': ['Over 100,000 container images available on Docker Hub streamline development and deployment.', 'Containers simplify sharing and movement of packages, improving collaboration and efficiency.', 'Containers provide a portable way to package applications, resulting in increased efficiency.', 'Using containers eliminates the need to install services directly on the operating system, making setup easier and more efficient.', 'Containers streamline the deployment process by encapsulating configuration dependencies within the application.', 'Containers are composed of images, providing a practical understanding of their technical aspects.', 'Practical example illustrates using Docker containers for running applications and managing multiple versions.']}, {'end': 2741.224, 'segs': [{'end': 1468.17, 'src': 'embed', 'start': 1419.201, 'weight': 0, 'content': [{'end': 1430.755, 'text': 'a workaround is that you install a technological Docker toolbox which abstracts away the kernel to make it possible for your host to run different Docker images.', 'start': 1419.201, 'duration': 11.554}, {'end': 1441.624, 'text': 'So in this video, I will show you how to install Docker on different operating systems.', 'start': 1437.239, 'duration': 4.385}, {'end': 1447.85, 'text': 'The installation will differ not only based on the operating system, but also the version of the operating system.', 'start': 1442.144, 'duration': 5.706}, {'end': 1454.418, 'text': 'So you can actually watch this video selectively depending on which OS and the version of that OS you have.', 'start': 1448.471, 'duration': 5.947}, {'end': 1461.744, 'text': 'I will show you how to find out which installation step applies to you in the before installing section, which is the first one.', 'start': 1454.998, 'duration': 6.746}, {'end': 1468.17, 'text': 'So once you find that out, you can actually directly skip to that part of the video where I explain that into details.', 'start': 1462.285, 'duration': 5.885}], 'summary': 'Learn how to install docker on various os and versions.', 'duration': 48.969, 'max_score': 1419.201, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1419201.jpg'}, {'end': 1538.757, 'src': 'embed', 'start': 1487.346, 'weight': 3, 'content': [{'end': 1493.751, 'text': 'please post your question or problem in the comments section so that I can get back to you and help you proceed.', 'start': 1487.346, 'duration': 6.405}, {'end': 1495.813, 'text': 'Or maybe someone from the community will.', 'start': 1494.152, 'duration': 1.661}, {'end': 1499.356, 'text': "So with that said, let's dive right into it.", 'start': 1496.774, 'duration': 2.582}, {'end': 1507.767, 'text': 'So if you want to install Docker, you can actually Google it and you get an official documentation of Docker.', 'start': 1501.226, 'duration': 6.541}, {'end': 1511.928, 'text': "It's important to note that there are two editions of Docker.", 'start': 1509.188, 'duration': 2.74}, {'end': 1516.469, 'text': 'There is a community and enterprise editions for us to begin with.', 'start': 1511.988, 'duration': 4.481}, {'end': 1523.01, 'text': 'Community edition will be just fine in the Docker community edition tab there.', 'start': 1517.049, 'duration': 5.961}, {'end': 1528.431, 'text': "There's a list of operating systems and distributions in order to install Docker.", 'start': 1523.21, 'duration': 5.221}, {'end': 1536.916, 'text': 'So, for example, if we start with Mac, We can click in here and we see the documentation of how to install it on Mac,', 'start': 1528.892, 'duration': 8.024}, {'end': 1538.757, 'text': 'which is actually one of the easiest.', 'start': 1536.916, 'duration': 1.841}], 'summary': 'The transcript provides guidance on installing docker, highlighting two editions and explaining the process for mac.', 'duration': 51.411, 'max_score': 1487.346, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1487346.jpg'}, {'end': 1731.548, 'src': 'embed', 'start': 1702.112, 'weight': 8, 'content': [{'end': 1704.633, 'text': 'But you will have everything in a package installed.', 'start': 1702.112, 'duration': 2.521}, {'end': 1708.895, 'text': 'So go ahead and download the stable version.', 'start': 1705.193, 'duration': 3.702}, {'end': 1718.968, 'text': "Well, I already have Docker installed from the edge channel, so I won't be installing it again, but it shouldn't matter,", 'start': 1710.933, 'duration': 8.035}, {'end': 1721.393, 'text': 'because the steps of installation are the same for both.', 'start': 1718.968, 'duration': 2.425}, {'end': 1731.548, 'text': 'So once the Docker DMG file is downloaded, you just double click on it and it will pop up this window.', 'start': 1723.021, 'duration': 8.527}], 'summary': 'Download stable docker version, installation steps are same for edge channel, just double click the dmg file.', 'duration': 29.436, 'max_score': 1702.112, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1702112.jpg'}, {'end': 1825.23, 'src': 'embed', 'start': 1771.07, 'weight': 6, 'content': [{'end': 1775.274, 'text': 'And if you want to stop Docker or quit it on your Mac, you can just.', 'start': 1771.07, 'duration': 4.204}, {'end': 1776.769, 'text': 'do it from here.', 'start': 1776.109, 'duration': 0.66}, {'end': 1790.935, 'text': "An important, maybe interesting, note here is that if, let's say, you download or install Docker and you have more than one accounts on your laptop,", 'start': 1776.789, 'duration': 14.146}, {'end': 1798.553, 'text': 'you will actually get some errors or conflicts if you run Docker at the same time or multiple accounts.', 'start': 1790.935, 'duration': 7.618}, {'end': 1805.079, 'text': "So what I do, for example, is that if I switch to another account where I'm also going to need Docker,", 'start': 1799.233, 'duration': 5.846}, {'end': 1811.345, 'text': "I quit it from here and then I started from other accounts so that I don't get any errors.", 'start': 1805.079, 'duration': 6.266}, {'end': 1816.49, 'text': 'So that might be something you need to consider if you use multiple accounts.', 'start': 1812.726, 'duration': 3.764}, {'end': 1823.187, 'text': "So let's see how to install Docker for Windows.", 'start': 1821.044, 'duration': 2.143}, {'end': 1825.23, 'text': 'The first step, as I mentioned before,', 'start': 1823.668, 'duration': 1.562}], 'summary': 'Stopping docker on mac can prevent errors with multiple accounts.', 'duration': 54.16, 'max_score': 1771.07, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1771070.jpg'}, {'end': 1903.46, 'src': 'embed', 'start': 1873.416, 'weight': 5, 'content': [{'end': 1879.54, 'text': 'So once you have checked that and made sure that these two prerequisites are met,', 'start': 1873.416, 'duration': 6.124}, {'end': 1885.383, 'text': 'then actually you can scroll up and download the Windows installer for from the stable channel.', 'start': 1879.54, 'duration': 5.843}, {'end': 1895.676, 'text': 'Once the installer is downloaded, you can just click on it and follow the installation wizard to install Docker for Windows.', 'start': 1887.432, 'duration': 8.244}, {'end': 1903.46, 'text': "Once installation is completed, you have to explicitly start Docker because it's not going to start automatically.", 'start': 1896.677, 'duration': 6.783}], 'summary': 'Download and install docker for windows from the stable channel.', 'duration': 30.044, 'max_score': 1873.416, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1873416.jpg'}, {'end': 1999.856, 'src': 'embed', 'start': 1978.018, 'weight': 12, 'content': [{'end': 1986.485, 'text': "Because of that, I can't go through a Docker installation process of every Linux environment because there are just too many combinations.", 'start': 1978.018, 'duration': 8.467}, {'end': 1987.566, 'text': 'So instead,', 'start': 1986.965, 'duration': 0.601}, {'end': 1996.713, 'text': "what we'll do is just go through a general overview of the steps and configuration process to get Docker running on your Linux environment.", 'start': 1987.566, 'duration': 9.147}, {'end': 1999.856, 'text': 'And you can just adjust it then for your specific setup.', 'start': 1997.013, 'duration': 2.843}], 'summary': 'Docker installation process for linux environments is complex due to numerous combinations, so a general overview and configuration process will be covered.', 'duration': 21.838, 'max_score': 1978.018, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1978018.jpg'}, {'end': 2128.01, 'src': 'embed', 'start': 2056.21, 'weight': 10, 'content': [{'end': 2060.192, 'text': 'The second option is to install the packages manually.', 'start': 2056.21, 'duration': 3.982}, {'end': 2062.313, 'text': "However, I wouldn't recommend it.", 'start': 2060.592, 'duration': 1.721}, {'end': 2065.754, 'text': "And I think the documentation doesn't recommend it either,", 'start': 2062.433, 'duration': 3.321}, {'end': 2071.877, 'text': 'because then you have to do a lot of steps of the installation in the maintenance of the versions manually.', 'start': 2065.754, 'duration': 6.123}, {'end': 2073.456, 'text': "So I wouldn't do that.", 'start': 2072.036, 'duration': 1.42}, {'end': 2076.478, 'text': 'The third one is just for the testing purposes.', 'start': 2073.956, 'duration': 2.522}, {'end': 2081.36, 'text': 'It may be enough for the development purposes as well, but I would still not do it,', 'start': 2076.559, 'duration': 4.801}, {'end': 2090.184, 'text': 'which is basically just downloading some automated scripts that will install and set up Docker on your Linux environment.', 'start': 2081.36, 'duration': 8.824}, {'end': 2092.925, 'text': "However, again, I wouldn't go with it.", 'start': 2090.364, 'duration': 2.561}, {'end': 2100.488, 'text': 'I would actually just do the first option, which is just downloading the Docker from the repository.', 'start': 2093.125, 'duration': 7.363}, {'end': 2110.271, 'text': "So in order to install Docker using the first option, which is downloading it from the Docker's repositories, you have two main steps.", 'start': 2101.368, 'duration': 8.903}, {'end': 2114.293, 'text': 'So the first one is to set up the repository.', 'start': 2110.992, 'duration': 3.301}, {'end': 2124.187, 'text': 'which differs a little bit depending on which distribution you have and then install the Docker CE from that repository.', 'start': 2115.92, 'duration': 8.267}, {'end': 2128.01, 'text': 'So from Ubuntu and Debian.', 'start': 2124.908, 'duration': 3.102}], 'summary': 'Installing docker via repository is recommended over manual or automated methods.', 'duration': 71.8, 'max_score': 2056.21, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2056210.jpg'}, {'end': 2234.643, 'src': 'embed', 'start': 2202.445, 'weight': 14, 'content': [{'end': 2207.77, 'text': 'Like, for example, here you also have the second tab where you see a separate command for it.', 'start': 2202.445, 'duration': 5.325}, {'end': 2212.934, 'text': 'So these steps should actually set up the repository.', 'start': 2208.45, 'duration': 4.484}, {'end': 2218.239, 'text': 'So as a next step, you can then install the Docker C from those repositories.', 'start': 2213.374, 'duration': 4.865}, {'end': 2223.641, 'text': 'So installing Docker from the set up repository is actually pretty straightforward.', 'start': 2219.52, 'duration': 4.121}, {'end': 2234.643, 'text': 'The steps are same for or similar to all the distributions basically just update the package and then you just say install Docker CE.', 'start': 2223.921, 'duration': 10.722}], 'summary': 'Set up repository and install docker ce from it.', 'duration': 32.198, 'max_score': 2202.445, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2202445.jpg'}, {'end': 2281.882, 'src': 'embed', 'start': 2253.829, 'weight': 15, 'content': [{'end': 2259.531, 'text': 'And using this command, you can actually look up what versions are available in that repository that you just.', 'start': 2253.829, 'duration': 5.702}, {'end': 2270.536, 'text': 'And with this command, actually, Docker will be installed on your Linux environment and then you can just verify using pseudo Docker run.', 'start': 2260.011, 'duration': 10.525}, {'end': 2274.558, 'text': 'Hello world, which is this demo image of Docker.', 'start': 2270.936, 'duration': 3.622}, {'end': 2281.882, 'text': 'You can verify that Docker is running and this will start Hello World Docker container on your environment.', 'start': 2274.939, 'duration': 6.943}], 'summary': 'The command installs docker on linux environment, enabling verification by running a hello world docker container.', 'duration': 28.053, 'max_score': 2253.829, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2253829.jpg'}, {'end': 2378.832, 'src': 'embed', 'start': 2349.702, 'weight': 21, 'content': [{'end': 2354.764, 'text': "And once it's downloaded, you just click on it and go through the installation wizard.", 'start': 2349.702, 'duration': 5.062}, {'end': 2358.365, 'text': 'leave all the options by default as they are.', 'start': 2354.764, 'duration': 3.601}, {'end': 2359.485, 'text': 'do not change anything.', 'start': 2358.365, 'duration': 1.12}, {'end': 2367.168, 'text': 'And after the installation, you can just validate that the installation is successful and you can actually run docker.', 'start': 2359.946, 'duration': 7.222}, {'end': 2374.37, 'text': 'So after seeing the installation was successful screen, just go and look up in your launchpad docker quick start terminal.', 'start': 2367.248, 'duration': 7.122}, {'end': 2378.832, 'text': 'And once you open it, you should be able to run docker commands.', 'start': 2375.071, 'duration': 3.761}], 'summary': 'Download, install, and validate docker to run commands successfully.', 'duration': 29.13, 'max_score': 2349.702, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2349702.jpg'}, {'end': 2599.33, 'src': 'embed', 'start': 2518.082, 'weight': 11, 'content': [{'end': 2519.803, 'text': 'And now you can proceed with the tutorial.', 'start': 2518.082, 'duration': 1.721}, {'end': 2530.969, 'text': "So in this video I'm going to show you some basic documents at the beginning.", 'start': 2526.007, 'duration': 4.962}, {'end': 2536.691, 'text': "I'm going to explain what the difference between container and images, because that's something a lot of people confuse.", 'start': 2531.129, 'duration': 5.562}, {'end': 2543.774, 'text': 'then very quickly go through version and take and then show you a demo of how to use the basic documents,', 'start': 2536.691, 'duration': 7.083}, {'end': 2551.077, 'text': 'comments that will be enough to pull an image locally, to start a container, to configure a container and even debug the container.', 'start': 2543.774, 'duration': 7.303}, {'end': 2553.958, 'text': "So with that said let's get started.", 'start': 2551.617, 'duration': 2.341}, {'end': 2558.749, 'text': 'So what is the difference between container and image??', 'start': 2556.127, 'duration': 2.622}, {'end': 2565.435, 'text': 'Mostly people use those terms interchangeably, but actually there is a fine difference between the two to see.', 'start': 2559.49, 'duration': 5.945}, {'end': 2570.64, 'text': 'Theoretically, Tanner is just a part of a container runtime.', 'start': 2565.615, 'duration': 5.025}, {'end': 2575.584, 'text': 'So container is the running environment for an image.', 'start': 2570.66, 'duration': 4.924}, {'end': 2584.545, 'text': 'So, as you see in this graphic, The application image that runs the application could be Postgres Redis.', 'start': 2576.645, 'duration': 7.9}, {'end': 2593.868, 'text': "some other application needs, let's say a file system where it can save the log files or where it can store some configuration files.", 'start': 2584.545, 'duration': 9.323}, {'end': 2599.33, 'text': 'It also needs some environmental configuration like environmental variables and so on.', 'start': 2594.188, 'duration': 5.142}], 'summary': 'Tutorial on docker basics including difference between containers and images, and how to use basic commands for pulling images, starting and configuring containers.', 'duration': 81.248, 'max_score': 2518.082, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2518082.jpg'}, {'end': 2683.044, 'src': 'embed', 'start': 2652.465, 'weight': 18, 'content': [{'end': 2654.527, 'text': "So we're not talking about containers here.", 'start': 2652.465, 'duration': 2.062}, {'end': 2657.989, 'text': 'All of these things are images, Docker, official image.', 'start': 2655.027, 'duration': 2.962}, {'end': 2666.272, 'text': "So we're going to go ahead and pull a Redis image out of the Docker hub to my laptop.", 'start': 2658.549, 'duration': 7.723}, {'end': 2672.477, 'text': 'So you see the different layers of the image are downloaded.', 'start': 2668.134, 'duration': 4.343}, {'end': 2678.601, 'text': 'And this will take a couple of minutes.', 'start': 2675.679, 'duration': 2.922}, {'end': 2683.044, 'text': 'So once the download is complete, I can.', 'start': 2680.102, 'duration': 2.942}], 'summary': 'Pulling redis image from docker hub to laptop, downloading will take a couple of minutes.', 'duration': 30.579, 'max_score': 2652.465, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2652465.jpg'}], 'start': 1131.205, 'title': 'Docker installation and comparison', 'summary': "Explains the difference between docker and virtual machines, emphasizing docker's smaller image size and faster start time. it provides guidance on installing docker on mac, windows, and linux, covering system requirements, installation steps, and potential conflicts with multiple accounts.", 'chapters': [{'end': 1487.346, 'start': 1131.205, 'title': 'Understanding docker vs virtual machines', 'summary': 'Explains the difference between docker and virtual machines, highlighting that docker images are smaller in size, faster to start, but have compatibility restrictions, compared to virtual machine images. it also touches upon the installation process for docker on different operating systems.', 'duration': 356.141, 'highlights': ['Docker images are usually a couple of megabytes, while virtual machine images can be a couple of gigabytes large. Docker images are much smaller in size compared to virtual machine images, which can be a couple of gigabytes large.', 'You can run and start Docker containers much faster than the VMs. Docker containers can be started much faster compared to virtual machines.', "Compatibility: You can run a virtual machine image of any operating system on any other operating system host, but you can't do that with Docker. Virtual machine images have broader compatibility across different operating system hosts compared to Docker images.", "The first step is to check whether your host can actually run Docker natively, which basically means, is the kernel compatible with the Docker images? The compatibility of the host's kernel with Docker images is crucial for running Docker natively.", 'The installation process for Docker differs based on the operating system and its version. The installation process for Docker varies depending on the specific operating system and its version.']}, {'end': 1825.23, 'start': 1487.346, 'title': 'Installing docker on mac and windows', 'summary': 'Provides guidance on installing docker on mac and windows, including system requirements, installation steps, and potential conflicts with multiple accounts.', 'duration': 337.884, 'highlights': ['The chapter provides guidance on installing Docker on Mac and Windows, including system requirements, installation steps, and potential conflicts with multiple accounts.', 'Installation of Docker requires meeting specific system requirements, such as the version of the operating system and a minimum of four gigabytes of RAM.', 'Docker comes with essential components like Docker engine, Docker command line client, and Docker compose, which are necessary for running Docker containers and orchestrating multiple containers.', 'The chapter explains that Docker natively runs only on Windows 10, and for older versions, Docker Toolbox serves as a bridge to enable Docker to run on legacy computers.', 'The chapter also addresses potential conflicts that may arise when running Docker on multiple accounts and provides a solution to avoid errors.']}, {'end': 2348.782, 'start': 1825.23, 'title': 'Installing docker on windows and linux', 'summary': 'Covers the installation of docker on windows and linux, emphasizing the prerequisites, steps for setting up the repository, and the basic verification process, with a mention of the docker toolbox for systems that do not support docker natively.', 'duration': 523.552, 'highlights': ['The chapter covers the installation of Docker on Windows and Linux, emphasizing the prerequisites, steps for setting up the repository, and the basic verification process. The chapter explains the installation process of Docker on Windows and various Linux distributions, highlighting the importance of checking prerequisites, setting up the repository, and verifying the installation.', 'Emphasizes the prerequisites for installing Docker on Windows, including checking Windows version compatibility and ensuring virtualization is enabled. The chapter stresses the importance of ensuring Windows version compatibility and enabling virtualization as prerequisites for installing Docker on Windows.', 'Explains the steps to install Docker on Windows, including downloading the Windows installer from the stable channel, following the installation wizard, and explicitly starting Docker after installation. The chapter details the process of installing Docker on Windows, including downloading the installer, following the installation wizard, and explicitly starting Docker post-installation.', 'Discusses the complexities of installing Docker on different Linux distributions and provides a general overview of the steps and configuration process. The chapter acknowledges the complexities of installing Docker on different Linux distributions and provides a general overview of the steps and configuration process.', 'Details the general steps to install Docker on a Linux environment, including checking operating system requirements and installing Docker Community Edition. The chapter outlines the general steps to install Docker on a Linux environment, including checking operating system requirements and installing Docker Community Edition.', 'Describes the steps for setting up the repository and installing Docker CE on Ubuntu and Debian. The chapter explains the steps for setting up the repository and installing Docker CE on Ubuntu and Debian, highlighting the specific actions required for these distributions.', 'Mentions the availability of stable and edge channels for setting up the repository and recommends setting up the stable repository for Docker. The chapter mentions the availability of stable and edge channels for setting up the repository and recommends setting up the stable repository for Docker.', 'Explains the process of installing Docker from the set up repository and verifying the installation on a Linux environment. The chapter details the process of installing Docker from the set up repository and verifying the installation on a Linux environment, including the basic verification process.', 'Mentions the Docker Toolbox as a workaround for systems that do not support running Docker natively and provides a brief overview of installing Docker Toolbox on Mac. The chapter mentions the Docker Toolbox as a workaround for systems that do not support running Docker natively and provides a brief overview of installing Docker Toolbox on Mac.']}, {'end': 2741.224, 'start': 2349.702, 'title': 'Installing docker toolbox on windows', 'summary': 'Explains how to install docker toolbox on windows, ensuring virtualization and 64-bit support, downloading the latest release, and verifying the installation by running docker commands, with a brief overview of container and image differences and pulling a redis image from docker hub.', 'duration': 391.522, 'highlights': ['Explaining the difference between container and image The chapter provides a clear explanation of the difference between containers and images, outlining the role of containers as the running environment for an image, including environmental configuration, file system, and port bindings.', 'Checking virtualization and 64-bit support for Docker Toolbox installation Before installing Docker Toolbox, it is essential to ensure that the Windows system supports virtualization and is 64-bit, as these are prerequisites for successful installation.', 'Downloading and verifying the installation of Docker Toolbox The process involves downloading the latest release of Docker Toolbox for Windows, going through the installation wizard, and verifying the successful installation by running Docker commands in the terminal.', "Pulling a Redis image from Docker Hub and checking existing images The chapter demonstrates the process of pulling a Redis image from Docker Hub to the local machine and checking the existing images using the 'Docker images' command."]}], 'duration': 1610.019, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE1131205.jpg', 'highlights': ['Docker images are usually a couple of megabytes, while virtual machine images can be a couple of gigabytes large.', 'You can run and start Docker containers much faster than the VMs.', "Compatibility: You can run a virtual machine image of any operating system on any other operating system host, but you can't do that with Docker.", 'The first step is to check whether your host can actually run Docker natively, which basically means, is the kernel compatible with the Docker images?', 'The installation process for Docker differs based on the operating system and its version.', 'The chapter provides guidance on installing Docker on Mac and Windows, including system requirements, installation steps, and potential conflicts with multiple accounts.', 'Installation of Docker requires meeting specific system requirements, such as the version of the operating system and a minimum of four gigabytes of RAM.', 'Docker comes with essential components like Docker engine, Docker command line client, and Docker compose, which are necessary for running Docker containers and orchestrating multiple containers.', 'The chapter explains that Docker natively runs only on Windows 10, and for older versions, Docker Toolbox serves as a bridge to enable Docker to run on legacy computers.', 'The chapter also addresses potential conflicts that may arise when running Docker on multiple accounts and provides a solution to avoid errors.', 'The chapter covers the installation of Docker on Windows and Linux, emphasizing the prerequisites, steps for setting up the repository, and the basic verification process.', 'Emphasizes the prerequisites for installing Docker on Windows, including checking Windows version compatibility and ensuring virtualization is enabled.', 'Explains the steps to install Docker on Windows, including downloading the Windows installer from the stable channel, following the installation wizard, and explicitly starting Docker after installation.', 'Details the general steps to install Docker on a Linux environment, including checking operating system requirements and installing Docker Community Edition.', 'Describes the steps for setting up the repository and installing Docker CE on Ubuntu and Debian.', 'Mentions the availability of stable and edge channels for setting up the repository and recommends setting up the stable repository for Docker.', 'Explains the process of installing Docker from the set up repository and verifying the installation on a Linux environment.', 'Mentions the Docker Toolbox as a workaround for systems that do not support running Docker natively and provides a brief overview of installing Docker Toolbox on Mac.', 'Explaining the difference between container and image The chapter provides a clear explanation of the difference between containers and images, outlining the role of containers as the running environment for an image, including environmental configuration, file system, and port bindings.', 'Checking virtualization and 64-bit support for Docker Toolbox installation Before installing Docker Toolbox, it is essential to ensure that the Windows system supports virtualization and is 64-bit, as these are prerequisites for successful installation.', 'Downloading and verifying the installation of Docker Toolbox The process involves downloading the latest release of Docker Toolbox for Windows, going through the installation wizard, and verifying the successful installation by running Docker commands in the terminal.', "Pulling a Redis image from Docker Hub and checking existing images The chapter demonstrates the process of pulling a Redis image from Docker Hub to the local machine and checking the existing images using the 'Docker images' command."]}, {'end': 4357.103, 'segs': [{'end': 3726.895, 'src': 'embed', 'start': 3687.281, 'weight': 1, 'content': [{'end': 3696.487, 'text': 'We see the Redis for the old image based container is created, which is fresh new.', 'start': 3687.281, 'duration': 9.206}, {'end': 3701.31, 'text': 'You can see in the created and the name is Redis older and we can do the same for.', 'start': 3696.507, 'duration': 4.803}, {'end': 3709.24, 'text': 'the other container so that we kind of know which container is what.', 'start': 3704.195, 'duration': 5.045}, {'end': 3711.201, 'text': 'So stop this one.', 'start': 3709.98, 'duration': 1.221}, {'end': 3717.087, 'text': 'And I will use the same command here.', 'start': 3714.084, 'duration': 3.003}, {'end': 3726.895, 'text': 'This will be the latest and I will call this Redis latest and since find another port.', 'start': 3717.747, 'duration': 9.148}], 'summary': 'A new redis container is created for the old image, named redis older.', 'duration': 39.614, 'max_score': 3687.281, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE3687281.jpg'}, {'end': 3875.791, 'src': 'embed', 'start': 3848.739, 'weight': 0, 'content': [{'end': 3862.704, 'text': 'that you wrote in a container and you have some complex configuration there or some kind of setup and you want to validate that everything is correctly set in order to exit,', 'start': 3848.739, 'duration': 13.965}, {'end': 3865.706, 'text': "the terminal used to exit and you're out.", 'start': 3862.704, 'duration': 3.002}, {'end': 3870.188, 'text': 'You can also do the same using the name again,', 'start': 3867.046, 'duration': 3.142}, {'end': 3875.791, 'text': "if you don't want to work with the ideas and you just want to remember the names of the container to make easier.", 'start': 3870.188, 'duration': 5.603}], 'summary': 'Validate complex container setup for successful exit.', 'duration': 27.052, 'max_score': 3848.739, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE3848739.jpg'}, {'end': 4103.462, 'src': 'heatmap', 'start': 3990.787, 'weight': 1, 'content': [{'end': 3993.869, 'text': 'So Docker run is to create a new container.', 'start': 3990.787, 'duration': 3.082}, {'end': 3997.912, 'text': 'Docker start is to restart a stopped container.', 'start': 3994.129, 'duration': 3.783}, {'end': 4010.154, 'text': "So once you've learned the Docker basic concepts and understood how it works, it's important to see how it is actually used in practice.", 'start': 4002.344, 'duration': 7.81}, {'end': 4019.345, 'text': 'So in software development workflow, you will know you have this classical steps of development and continuous delivery or continuous integration.', 'start': 4010.694, 'duration': 8.651}, {'end': 4022.812, 'text': 'and then eventually gets deployed on some environment.', 'start': 4020.09, 'duration': 2.722}, {'end': 4024.974, 'text': 'Right Could be a test environment, develop environment.', 'start': 4022.872, 'duration': 2.102}, {'end': 4030.377, 'text': "So it's important to see how Docker actually integrates in all of those steps.", 'start': 4025.434, 'duration': 4.943}, {'end': 4034.6, 'text': "So in the next couple of videos, I'm going to concentrate exactly on that.", 'start': 4031.078, 'duration': 3.522}, {'end': 4043.827, 'text': "So we're going to see some overview of the flow and then we're going to zoom in on different parts and see how Docker is actually used in those individual steps.", 'start': 4034.64, 'duration': 9.187}, {'end': 4054.719, 'text': "So let's consider a simplified scenario where you are developing a JavaScript application on your laptop right on your local development environment.", 'start': 4046.195, 'duration': 8.524}, {'end': 4067.506, 'text': 'Your JavaScript application uses a MongoDB database and instead of installing it on your laptop you download a Docker container from the Docker hub.', 'start': 4055.86, 'duration': 11.646}, {'end': 4073.069, 'text': 'So you connect your JavaScript application with the MongoDB and you start developing.', 'start': 4068.286, 'duration': 4.783}, {'end': 4076.978, 'text': "So now let's say you develop the application,", 'start': 4073.874, 'duration': 3.104}, {'end': 4085.167, 'text': 'first version of the application locally and now you want to test it or you want to deploy it on the development environment,', 'start': 4076.978, 'duration': 8.189}, {'end': 4088.131, 'text': 'where a tester in your team is going to test it.', 'start': 4085.167, 'duration': 2.964}, {'end': 4095.816, 'text': 'So you commit your JavaScript application in Git or in some other version control system.', 'start': 4088.831, 'duration': 6.985}, {'end': 4103.462, 'text': 'that will trigger a continuous integration and Jenkins builds, or whatever you have configured,', 'start': 4095.816, 'duration': 7.646}], 'summary': 'The transcript discusses the usage of docker in software development workflow, including development, testing, and deployment, with a focus on integrating docker in various steps.', 'duration': 112.675, 'max_score': 3990.787, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE3990787.jpg'}, {'end': 4135.72, 'src': 'embed', 'start': 4103.462, 'weight': 3, 'content': [{'end': 4107.725, 'text': 'and Jenkins build will produce artifacts from your application.', 'start': 4103.462, 'duration': 4.263}, {'end': 4117.71, 'text': 'So first you will build your JavaScript application and then create a Docker image out of that JavaScript artifact.', 'start': 4108.165, 'duration': 9.545}, {'end': 4128.376, 'text': 'Right So what happens to this Docker image once it gets created by Jenkins build, it gets pushed to a private Docker repository.', 'start': 4118.13, 'duration': 10.246}, {'end': 4135.72, 'text': "So usually in a company you would have a private repository because you don't want other people to have access to your images.", 'start': 4128.676, 'duration': 7.044}], 'summary': 'Jenkins build creates docker image pushed to private repository.', 'duration': 32.258, 'max_score': 4103.462, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE4103462.jpg'}, {'end': 4332.692, 'src': 'embed', 'start': 4306.212, 'weight': 2, 'content': [{'end': 4311.175, 'text': 'that just serves that index HTML file and listens on port 3000..', 'start': 4306.212, 'duration': 4.963}, {'end': 4316.82, 'text': 'So we have the server running here in the back end and we have the UI that looks like this.', 'start': 4311.175, 'duration': 5.645}, {'end': 4323.385, 'text': "So basically, it's just the user profile page with some user information and user can edit their profile.", 'start': 4317.18, 'duration': 6.205}, {'end': 4332.692, 'text': 'So if I, for example, change the name here and if I change the email address and do changes like this,', 'start': 4323.405, 'duration': 9.287}], 'summary': 'Backend server serves user profile page on port 3000 with edit functionality.', 'duration': 26.48, 'max_score': 4306.212, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE4306212.jpg'}], 'start': 2742.492, 'title': 'Docker container management and integration', 'summary': "Covers working with docker containers, running multiple containers, logging, terminal commands, and integrating docker in software development, including practical examples and commands like 'docker logs' and 'docker exec'.", 'chapters': [{'end': 2962.861, 'start': 2742.492, 'title': 'Working with docker containers', 'summary': 'Explains how to run and manage docker containers, including starting, stopping, and restarting containers, and the difference between running in attached and detached mode.', 'duration': 220.369, 'highlights': ["When running a Redis image with 'Docker run Redis,' the container will start in attached mode, and can be viewed using 'Docker PS.' Running the Redis image with 'Docker run Redis' starts the container in attached mode, allowing it to be viewed using 'Docker PS.'", "Using 'Docker run -d Redis' starts the container in detached mode, enabling it to run in the background. The command 'Docker run -d Redis' starts the container in detached mode, allowing it to run in the background.", "To restart a container, the container ID is required, and it can be done using 'Docker stop [container ID]' and 'Docker start [container ID].' Restarting a container requires the container ID and can be achieved by using 'Docker stop [container ID]' and 'Docker start [container ID].' ", "Using 'Docker PS -a' displays all containers, running or not running, and allows for restarting stopped containers. The command 'Docker PS -a' displays all containers, running or not running, and allows for restarting stopped containers."]}, {'end': 3550.096, 'start': 2963.281, 'title': 'Using multiple docker containers', 'summary': 'Explains how to run multiple docker containers with different image versions, bind ports to avoid conflicts, and use basic docker commands such as pull, run, start, stop, and troubleshooting, including options like detached mode and port binding.', 'duration': 586.815, 'highlights': ['The chapter explains how to run multiple Docker containers with different image versions It describes the need to run two Redis containers with different image versions and the process of pulling and starting containers with different versions.', 'It explains how to bind ports to avoid conflicts It details the process of binding ports on the host machine to the containers to avoid conflicts, ensuring that different containers are bound to different ports on the host.', 'Basic Docker commands such as pull, run, start, stop, and troubleshooting are discussed The chapter covers basic Docker commands like pull, run, start, stop, and troubleshooting, including options like detached mode and port binding for effective container management.']}, {'end': 4010.154, 'start': 3550.489, 'title': 'Docker container logging and terminal commands', 'summary': "Discusses the logging of docker containers and the use of docker exec to obtain a terminal within a running container, with emphasis on the commands 'docker logs', 'docker exec', and the differentiation between 'docker run' and 'docker start'.", 'duration': 459.665, 'highlights': ["The 'docker logs' command allows viewing logs produced by a container, either by specifying the container ID or the container name. The 'docker logs' command enables viewing logs produced by a container, allowing easy troubleshooting by specifying the container ID or name.", "The 'docker exec' command provides access to the terminal of a running container, facilitating tasks such as navigating directories, checking configuration files, and validating environmental variables. The 'docker exec' command provides terminal access to a running container, enabling tasks like navigating directories, inspecting configuration files, and validating environmental variables.", "Understanding the difference between 'docker run' and 'docker start' is crucial, where 'docker run' creates a new container from an image, while 'docker start' restarts a stopped container with its predefined attributes. Distinguishing between 'docker run' and 'docker start' is crucial, as 'docker run' creates a new container from an image, while 'docker start' restarts a stopped container with its predefined attributes."]}, {'end': 4357.103, 'start': 4010.694, 'title': 'Docker integration in software development', 'summary': 'Discusses the integration of docker in software development workflow, emphasizing the use of docker containers in local development, continuous integration, and deployment processes, and provides a practical example of using docker in a javascript and node.js application with a mongodb database.', 'duration': 346.409, 'highlights': ['The chapter discusses the integration of Docker in software development workflow, emphasizing the use of Docker containers in local development, continuous integration, and deployment processes. The chapter provides an overview of how Docker integrates into various stages of software development workflow, including local development, continuous integration, and deployment processes.', 'The chapter provides a practical example of using Docker in a JavaScript and Node.js application with a MongoDB database. A practical demonstration of using Docker in a JavaScript and Node.js application with a MongoDB database is presented, showcasing the integration of Docker containers in the development process.']}], 'duration': 1614.611, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE2742492.jpg', 'highlights': ["The 'docker exec' command provides terminal access to a running container, enabling tasks like navigating directories, inspecting configuration files, and validating environmental variables.", "The 'docker logs' command enables viewing logs produced by a container, allowing easy troubleshooting by specifying the container ID or name.", 'The chapter provides a practical example of using Docker in a JavaScript and Node.js application with a MongoDB database, showcasing the integration of Docker containers in the development process.', 'The chapter provides an overview of how Docker integrates into various stages of software development workflow, including local development, continuous integration, and deployment processes.']}, {'end': 5365.793, 'segs': [{'end': 4538.577, 'src': 'embed', 'start': 4486.541, 'weight': 0, 'content': [{'end': 4490.868, 'text': 'So how it works is that Docker creates its isolated Docker network.', 'start': 4486.541, 'duration': 4.327}, {'end': 4494.182, 'text': 'where the containers are running in.', 'start': 4492.421, 'duration': 1.761}, {'end': 4506.148, 'text': 'So when I deploy two containers in the same network, in this case Mongo and Mongo Express, they can talk to each other using just the container name,', 'start': 4494.882, 'duration': 11.266}, {'end': 4509.79, 'text': 'without local host, port number, et cetera.', 'start': 4506.148, 'duration': 3.642}, {'end': 4512.792, 'text': "just the container name, because they're in the same network.", 'start': 4509.79, 'duration': 3.002}, {'end': 4521.409, 'text': 'And the applications that run outside of Docker, like our node jazz, which just runs from node server,', 'start': 4514.366, 'duration': 7.043}, {'end': 4527.812, 'text': 'is going to connect to them from outside or from the host using local host and the port number.', 'start': 4521.409, 'duration': 6.403}, {'end': 4538.577, 'text': "So later, when we package our application into its own Docker image, What we're going to have is again a Docker network with MongoDB container,", 'start': 4528.712, 'duration': 9.865}], 'summary': 'Docker creates isolated network for containers, enabling simple communication using container names. applications outside docker connect using localhost and port number.', 'duration': 52.036, 'max_score': 4486.541, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE4486541.jpg'}, {'end': 4732.485, 'src': 'embed', 'start': 4705.439, 'weight': 1, 'content': [{'end': 4711.204, 'text': "which is very handy because we're going to need those two for the experts to connect to the Mungo.", 'start': 4705.439, 'duration': 5.765}, {'end': 4714.887, 'text': 'And you can also specify that any database.', 'start': 4711.805, 'duration': 3.082}, {'end': 4720.413, 'text': "we're just going to provide the username and password because we can create the database from the Mungo Express UI later.", 'start': 4714.887, 'duration': 5.526}, {'end': 4721.874, 'text': "So let's do that.", 'start': 4721.013, 'duration': 0.861}, {'end': 4728.961, 'text': 'And the way you can specify the environmental variables you can actually see here as well is by just.', 'start': 4722.334, 'duration': 6.627}, {'end': 4732.485, 'text': "Let's copy this one.", 'start': 4731.383, 'duration': 1.102}], 'summary': 'Experts need two variables to connect to mungo database, username and password.', 'duration': 27.046, 'max_score': 4705.439, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE4705439.jpg'}, {'end': 4817.118, 'src': 'embed', 'start': 4792.982, 'weight': 2, 'content': [{'end': 4803.75, 'text': "So basically all these options or all these flags that we said to go one more time through them, it's going to start in detached mode.", 'start': 4792.982, 'duration': 10.768}, {'end': 4812.836, 'text': 'We are opening the port on the host username and password that we want to be to use in the startup process.', 'start': 4804.45, 'duration': 8.386}, {'end': 4813.556, 'text': "We're going to.", 'start': 4813.216, 'duration': 0.34}, {'end': 4817.118, 'text': 'rewrite or override the name of the container.', 'start': 4814.637, 'duration': 2.481}], 'summary': 'Starting in detached mode, opening port on host, and overriding container name.', 'duration': 24.136, 'max_score': 4792.982, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE4792982.jpg'}], 'start': 4357.103, 'title': 'Using docker for mongodb application', 'summary': 'Explains how to use docker containers to simplify the development process for mongodb application, including connecting mongodb and mongodb ui containers, setting up a docker network, configuring environmental variables, and accessing databases and collections.', 'chapters': [{'end': 4457.783, 'start': 4357.103, 'title': 'Using docker containers for mongodb application', 'summary': 'Explains how to use docker containers to simplify the development process by connecting mongodb and mongodb ui containers, making it easier to manage and update the database from the application. the speaker demonstrates pulling the mongodb and mongo express images from docker hub and checking them locally.', 'duration': 100.68, 'highlights': ['The speaker demonstrates pulling the MongoDB and Mongo Express images from Docker Hub and checking them locally.', 'The chapter explains how to use Docker containers to simplify the development process by connecting MongoDB and MongoDB UI containers, making it easier to manage and update the database from the application.']}, {'end': 4679.391, 'start': 4458.223, 'title': 'Setting up docker network for mongodb and mongo express', 'summary': 'Explains how to set up a docker network for running mongodb and mongo express containers, allowing them to communicate with each other using just the container name and connect to external applications using the host name and port number.', 'duration': 221.168, 'highlights': ['Docker creates isolated Docker networks where containers can communicate with each other using just the container name, simplifying the connection process.', "Creating a custom Docker network named 'Mongo network' allows for running MongoDB and Mongo Express containers within the same network, enabling seamless communication between them.", 'When running the MongoDB container, the command includes specifying the port (27017) for both the host and container, and running it in detached mode to ensure proper functionality.']}, {'end': 4916.272, 'start': 4679.391, 'title': 'Configuring mongodb and mongo express', 'summary': 'Discusses configuring environmental variables for mongodb and mongo express, including specifying root username, password, container name, and network, and starting the containers to connect mongodb and mongo express.', 'duration': 236.881, 'highlights': ['Configuring environmental variables for MongoDB startup The chapter explains how to define root username and password for MongoDB startup, with the ability to overwrite default username and password, allowing for customization and security.', 'Specifying container name and network for MongoDB startup It details the process of specifying the container name and network for MongoDB startup, ensuring connectivity with Mongo Express and structuring the command for readability.', 'Configuring environmental variables for Mongo Express The chapter emphasizes the importance of configuring the admin username, password, and MongoDB server for Mongo Express to connect to the running MongoDB container on startup, ensuring authentication and connectivity.']}, {'end': 5365.793, 'start': 4916.952, 'title': 'Setting up mongodb and mongo express with docker', 'summary': 'Explains the process of setting up mongodb and mongo express with docker, including creating the docker run command, connecting mongo express to the mongodb container, accessing databases and collections, querying and updating data, and monitoring container logs.', 'duration': 448.841, 'highlights': ['The chapter explains the process of setting up MongoDB and Mongo Express with Docker, including creating the Docker run command, connecting Mongo Express to the MongoDB container, accessing databases and collections, querying and updating data, and monitoring container logs. The chapter covers setting up MongoDB and Mongo Express with Docker, creating the Docker run command, connecting Mongo Express to the MongoDB container, accessing databases and collections, querying and updating data, and monitoring container logs.', 'Mongo Express successfully connects to the MongoDB container, making the MongoDB database available at Port 8081. Mongo Express successfully connects to the MongoDB container, making the MongoDB database available at Port 8081.', "Creating a new database named 'user account' within Mongo Express and querying collections for fetching and updating data. Creating a new database named 'user account' within Mongo Express and querying collections for fetching and updating data.", 'Demonstration of connecting to the MongoDB database using a prepared code for Node.js, including specifying the protocol, host, port, username, and password. Demonstration of connecting to the MongoDB database using a prepared code for Node.js, including specifying the protocol, host, port, username, and password.', 'Monitoring container logs for activities, such as checking the last activity, streaming the logs, and checking for errors or issues. Monitoring container logs for activities, such as checking the last activity, streaming the logs, and checking for errors or issues.']}], 'duration': 1008.69, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE4357103.jpg', 'highlights': ['The chapter explains how to use Docker containers to simplify the development process by connecting MongoDB and MongoDB UI containers, making it easier to manage and update the database from the application.', "Creating a custom Docker network named 'Mongo network' allows for running MongoDB and Mongo Express containers within the same network, enabling seamless communication between them.", 'Configuring environmental variables for MongoDB startup The chapter explains how to define root username and password for MongoDB startup, with the ability to overwrite default username and password, allowing for customization and security.', 'The chapter explains the process of setting up MongoDB and Mongo Express with Docker, including creating the Docker run command, connecting Mongo Express to the MongoDB container, accessing databases and collections, querying and updating data, and monitoring container logs.']}, {'end': 6581.04, 'segs': [{'end': 5491.184, 'src': 'embed', 'start': 5463.219, 'weight': 0, 'content': [{'end': 5467.643, 'text': 'So this is a Docker run command of the MongoDB that we executed previously.', 'start': 5463.219, 'duration': 4.424}, {'end': 5471.347, 'text': 'So basically, we Docker compose file.', 'start': 5468.664, 'duration': 2.683}, {'end': 5482.638, 'text': 'What we can do is we can take the whole command with its configuration and map it into a file so that we have a structured commands.', 'start': 5471.907, 'duration': 10.731}, {'end': 5484.54, 'text': "So if you have, let's say,", 'start': 5483.379, 'duration': 1.161}, {'end': 5491.184, 'text': '10 Docker containers that you want to run for your application and they all need to talk to each other and interact with each other,', 'start': 5484.54, 'duration': 6.644}], 'summary': 'Using docker compose for structured commands to run 10 mongodb containers', 'duration': 27.965, 'max_score': 5463.219, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE5463219.jpg'}, {'end': 5563.304, 'src': 'embed', 'start': 5534.046, 'weight': 1, 'content': [{'end': 5538.149, 'text': 'Right So we need to know which image that container is going to be built from.', 'start': 5534.046, 'duration': 4.103}, {'end': 5542.391, 'text': 'And of course, you can specify a version tag here next to the name.', 'start': 5538.589, 'duration': 3.802}, {'end': 5545.052, 'text': 'The next one is port.', 'start': 5543.391, 'duration': 1.661}, {'end': 5549.335, 'text': 'So we can also specify which ports is going to open.', 'start': 5545.733, 'duration': 3.602}, {'end': 5554.978, 'text': 'First one is on the host and the second one after the colon is on the container.', 'start': 5549.675, 'duration': 5.303}, {'end': 5557.322, 'text': 'So the port mapping is there.', 'start': 5556.061, 'duration': 1.261}, {'end': 5563.304, 'text': 'And of course, the environmental variables can be also mapped in the Docker compose.', 'start': 5558.182, 'duration': 5.122}], 'summary': 'Docker compose can specify image, ports, and environmental variables.', 'duration': 29.258, 'max_score': 5534.046, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE5534046.jpg'}, {'end': 5693.843, 'src': 'embed', 'start': 5662.84, 'weight': 2, 'content': [{'end': 5670.742, 'text': 'So what Docker compose will do is actually take care of creating a common network for these containers,', 'start': 5662.84, 'duration': 7.902}, {'end': 5676.703, 'text': "so we don't have to create the network and specify in which network these containers will run in.", 'start': 5670.742, 'duration': 5.961}, {'end': 5679.484, 'text': "And we're going to see that in action right away.", 'start': 5677.424, 'duration': 2.06}, {'end': 5687.534, 'text': "So let's actually create a Docker compose file.", 'start': 5684.87, 'duration': 2.664}, {'end': 5693.843, 'text': "So I'm going to paste all my contents here, and this is exactly what we saw on the slides.", 'start': 5688.876, 'duration': 4.967}], 'summary': 'Docker compose simplifies container network setup.', 'duration': 31.003, 'max_score': 5662.84, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE5662840.jpg'}, {'end': 5915.903, 'src': 'embed', 'start': 5889.491, 'weight': 3, 'content': [{'end': 5894.093, 'text': "we still get connection refuse because it's not started completely.", 'start': 5889.491, 'duration': 4.602}, {'end': 5901.957, 'text': 'And somewhere here, when MongoDB is started and listening for connections, Mongo Express is able to connect to it.', 'start': 5894.653, 'duration': 7.304}, {'end': 5905.298, 'text': 'So this is something that you can also do with Docker compose.', 'start': 5901.997, 'duration': 3.301}, {'end': 5915.903, 'text': 'When you have two containers that where one depends on another one starting, you can actually configure this waiting logic in the Docker compose.', 'start': 5906.038, 'duration': 9.865}], 'summary': 'Mongodb and mongo express can connect using docker compose with waiting logic.', 'duration': 26.412, 'max_score': 5889.491, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE5889491.jpg'}, {'end': 6023.865, 'src': 'embed', 'start': 5995.037, 'weight': 4, 'content': [{'end': 5997.138, 'text': 'Of course, that is very inconvenient.', 'start': 5995.037, 'duration': 2.101}, {'end': 6001.4, 'text': "You want to have some persistence, especially when you're working with the database.", 'start': 5997.558, 'duration': 3.842}, {'end': 6012.406, 'text': "And there is a concept we're going to learn later called volumes that makes it possible to have persistency between the container restarts.", 'start': 6001.801, 'duration': 10.605}, {'end': 6017.229, 'text': "OK, so let's actually create the database again because we need it.", 'start': 6012.927, 'duration': 4.302}, {'end': 6022.684, 'text': 'And inside the database, we had actually users collection.', 'start': 6019.321, 'duration': 3.363}, {'end': 6023.865, 'text': "Let's create that one as well.", 'start': 6022.724, 'duration': 1.141}], 'summary': 'Learning about volumes for database persistency and creating a users collection.', 'duration': 28.828, 'max_score': 5995.037, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE5995037.jpg'}, {'end': 6112.512, 'src': 'embed', 'start': 6081.096, 'weight': 5, 'content': [{'end': 6088.079, 'text': 'And in addition to removing the containers or stopping them, removing the containers, it also removes the network.', 'start': 6081.096, 'duration': 6.983}, {'end': 6092.707, 'text': "So the next time we restarted, it's going to recreate.", 'start': 6089.386, 'duration': 3.321}, {'end': 6096.268, 'text': "So let's actually check that the network L.S.", 'start': 6092.727, 'duration': 3.541}, {'end': 6100.709, 'text': 'that default my default network is gone.', 'start': 6097.308, 'duration': 3.401}, {'end': 6103.61, 'text': 'And when I do up.', 'start': 6101.789, 'duration': 1.821}, {'end': 6107.891, 'text': 'See, it gets recreated.', 'start': 6106.09, 'duration': 1.801}, {'end': 6112.512, 'text': 'That should give you a good idea of what Docker composes and how to use it.', 'start': 6108.571, 'duration': 3.941}], 'summary': 'Using docker compose recreates network upon restart.', 'duration': 31.416, 'max_score': 6081.096, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6081096.jpg'}, {'end': 6233.863, 'src': 'embed', 'start': 6187.979, 'weight': 6, 'content': [{'end': 6196.275, 'text': 'it packages it then in a Docker image and then pushes it into a Docker repository.', 'start': 6187.979, 'duration': 8.296}, {'end': 6207.063, 'text': "So we're going to actually simulate what Jenkins does with their application and how it actually packages it into a Docker image on the local environment.", 'start': 6196.835, 'duration': 10.228}, {'end': 6212.226, 'text': "So I'm going to do all this on my laptop, but it's basically the same thing that Jenkins will do.", 'start': 6207.083, 'duration': 5.143}, {'end': 6217.09, 'text': 'And then a later step, we can actually push the built image into a Docker repository.', 'start': 6212.407, 'duration': 4.683}, {'end': 6229.641, 'text': 'In order to build a Docker image from an application, we basically have to copy the contents of that application into the Docker file.', 'start': 6220.435, 'duration': 9.206}, {'end': 6231.582, 'text': 'It could be an artifact that we built.', 'start': 6229.881, 'duration': 1.701}, {'end': 6233.863, 'text': 'In our case, we just have three files.', 'start': 6231.882, 'duration': 1.981}], 'summary': 'Simulating jenkins to package and push app into docker repository.', 'duration': 45.884, 'max_score': 6187.979, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6187979.jpg'}, {'end': 6289.114, 'src': 'embed', 'start': 6259.897, 'weight': 8, 'content': [{'end': 6264.86, 'text': 'So the first line of every Dockerfile is from image.', 'start': 6259.897, 'duration': 4.963}, {'end': 6270.464, 'text': 'So whatever image you are building, you always want to base it on another image.', 'start': 6265.521, 'duration': 4.943}, {'end': 6274.587, 'text': 'In our case, we have a JavaScript application with no JS backend.', 'start': 6270.944, 'duration': 3.643}, {'end': 6278.97, 'text': 'So we are going to need node inside of our container.', 'start': 6274.947, 'duration': 4.023}, {'end': 6289.114, 'text': 'so that it can run our node application instead of basing it on a Linux Alpine or some other lower level image,', 'start': 6279.986, 'duration': 9.128}], 'summary': "Dockerfile must start with 'from image'; using node for javascript app.", 'duration': 29.217, 'max_score': 6259.897, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6259897.jpg'}, {'end': 6390.568, 'src': 'embed', 'start': 6358.447, 'weight': 9, 'content': [{'end': 6364.428, 'text': 'So this will be just an alternative to defining environmental variables in a Docker compose.', 'start': 6358.447, 'duration': 5.981}, {'end': 6373.754, 'text': "For example, I would say it's better to define the environment of variables externally in a Docker compose file, because if something changes,", 'start': 6364.448, 'duration': 9.306}, {'end': 6375.936, 'text': 'you can actually override it.', 'start': 6373.754, 'duration': 2.182}, {'end': 6380.52, 'text': 'You can change the Docker compose file and override it instead of rebuilding the image.', 'start': 6376.136, 'duration': 4.384}, {'end': 6381.961, 'text': 'But this is an option.', 'start': 6380.92, 'duration': 1.041}, {'end': 6390.568, 'text': 'So this end command basically would translate to setting the environmental variables inside of the image environment.', 'start': 6382.482, 'duration': 8.086}], 'summary': 'Suggests defining environment variables externally in docker compose for flexibility and easy overrides.', 'duration': 32.121, 'max_score': 6358.447, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6358447.jpg'}, {'end': 6505.939, 'src': 'embed', 'start': 6456.308, 'weight': 10, 'content': [{'end': 6461.851, 'text': 'Now, you would probably ask, I can execute a copy command, a Linux copy command using run.', 'start': 6456.308, 'duration': 5.543}, {'end': 6463.031, 'text': 'Yes, you could.', 'start': 6462.391, 'duration': 0.64}, {'end': 6473.997, 'text': 'But the difference here is that, as I said, all these commands in run, for example, they apply to they get executed inside of the container.', 'start': 6463.332, 'duration': 10.665}, {'end': 6477.154, 'text': 'The copy command that you see here.', 'start': 6474.793, 'duration': 2.361}, {'end': 6486.776, 'text': 'it actually executes on the host and you see the first parameter is dot and the second parameter is slash home slash app.', 'start': 6477.154, 'duration': 9.622}, {'end': 6495.078, 'text': 'So source and the target so I can copy files that I have on my host inside of that container image.', 'start': 6487.136, 'duration': 7.942}, {'end': 6505.939, 'text': 'because if I were to execute run CP source destination, that command would execute inside of the Docker container.', 'start': 6496.613, 'duration': 9.326}], 'summary': "Using 'run' to execute linux copy command, with source as dot and target as /home/app, allows copying files from the host to the container.", 'duration': 49.631, 'max_score': 6456.308, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6456308.jpg'}, {'end': 6568.575, 'src': 'embed', 'start': 6536.916, 'weight': 11, 'content': [{'end': 6538.277, 'text': 'But inside of the container.', 'start': 6536.916, 'duration': 1.361}, {'end': 6546.323, 'text': 'So, once we copy our server jazz and other files inside of a container, we can then execute node server jazz,', 'start': 6538.597, 'duration': 7.726}, {'end': 6555.771, 'text': 'and we are able to do it because we are basing on the node image that already has node pre installed and we are going to see all this in action.', 'start': 6546.323, 'duration': 9.448}, {'end': 6564.014, 'text': 'So another question here, what is the difference between run and CMD? You could I could also say run node server jazz.', 'start': 6556.571, 'duration': 7.443}, {'end': 6568.575, 'text': 'The difference, again, is that CMD is an entry point command.', 'start': 6564.634, 'duration': 3.941}], 'summary': "Using a container, we can execute 'node server jazz' as the entry point command.", 'duration': 31.659, 'max_score': 6536.916, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6536916.jpg'}], 'start': 5367.833, 'title': 'Using docker compose for container management', 'summary': 'Covers using docker compose to manage containers, including creating and starting containers, managing dependencies, configuring network, and handling container data persistence, with a demonstration of these processes.', 'chapters': [{'end': 5719.801, 'start': 5367.833, 'title': 'Docker compose for node.js application with mongodb and mongo ui', 'summary': 'Covers setting up a fully functional javascript node.js application with persistence in mongodb and mongo ui running in docker containers, discussing the tediousness of docker run commands, introducing docker compose as a solution to simplify running multiple docker containers, and explaining the structured docker compose file for configuring services like mongodb and mongo express.', 'duration': 351.968, 'highlights': ['Setting up a fully functional JavaScript Node.js application with persistence in MongoDB and Mongo UI running in Docker containers The chapter discusses the process of setting up a fully functional JavaScript Node.js application with persistence in MongoDB and Mongo UI running in Docker containers, showcasing a realistic local development scenario using Docker containers.', 'Introducing Docker Compose as a solution to simplify running multiple Docker containers The chapter introduces Docker Compose as a solution to simplify running multiple Docker containers, addressing the tediousness of Docker run commands and the need for automation, providing a more efficient approach for managing Docker containers.', 'Explaining the structured Docker Compose file for configuring services like MongoDB and Mongo Express The chapter explains the structured Docker Compose file for configuring services like MongoDB and Mongo Express, detailing the organization of commands, including container name mapping, image specification, port mapping, and environmental variable mapping, offering a more structured and manageable approach for Docker container configuration.']}, {'end': 6112.512, 'start': 5719.801, 'title': 'Using docker compose for container management', 'summary': 'Explains how to use docker compose to manage containers, including creating and starting containers, managing dependencies, configuring network, and handling container data persistence, with a demonstration of creating and starting containers, managing network, handling data persistence, and stopping containers.', 'duration': 392.711, 'highlights': ["Containers are started using Docker Compose command 'up', which creates a network and starts the specified containers. The Docker Compose command 'up' starts all the containers specified in the YAML file, creating a network and starting the containers within it.", 'Docker Compose handles container dependencies, allowing configuration of waiting logic for containers that depend on one another. Docker Compose can configure waiting logic for containers with dependencies, ensuring that containers start in the correct order.', 'Data persistence in containers can be achieved using volumes, allowing data to persist between container restarts. The concept of volumes in Docker allows for data persistence between container restarts, addressing the issue of data loss when containers are restarted.', 'Docker Compose simplifies the process of stopping and removing containers, as well as managing associated networks. Docker Compose provides an easier method for stopping and removing containers, and also handles the removal of associated networks.']}, {'end': 6381.961, 'start': 6113.649, 'title': 'Building docker image from node.js app', 'summary': 'Discusses the process of building a docker image from a node.js javascript application, simulating the steps on a local environment, and explaining the use of a dockerfile blueprint to create the image, with reference to jenkins and docker hub.', 'duration': 268.312, 'highlights': ['The process of building a Docker image from a Node.js JavaScript application is explained, including the use of a Dockerfile blueprint to create the image. The chapter delves into the process of building a Docker image from a Node.js JavaScript application, detailing the use of a Dockerfile blueprint to create the image.', "The steps involved in simulating the process on a local environment and the correlation to Jenkins' actions are demonstrated. The simulation of the process on a local environment and its similarity to Jenkins' actions is detailed, providing insight into the steps involved.", 'The significance of basing the Docker image on a Node.js image is explained, emphasizing the availability of Node within the image and its impact on container usability. The significance of basing the Docker image on a Node.js image is explained, emphasizing the availability of Node within the image and its impact on container usability.', 'The concept of configuring environmental variables within a Dockerfile is introduced as an alternative to defining them in Docker compose, with considerations for flexibility and adaptability. The concept of configuring environmental variables within a Dockerfile is introduced as an alternative to defining them in Docker compose, with considerations for flexibility and adaptability.']}, {'end': 6581.04, 'start': 6382.482, 'title': 'Docker file commands and syntax', 'summary': 'Explains the docker file commands run, copy, and cmd, highlighting how they execute linux commands, create directories, and set entry point commands, emphasizing the distinction between run and cmd and their impacts on the container environment.', 'duration': 198.558, 'highlights': ['The run command in a Docker file allows execution of Linux commands, such as creating directories inside the container, without affecting the host environment.', 'The copy command in a Docker file enables the copying of files from the host environment into the container image, distinguishing it from the run command by executing on the host rather than inside the container.', 'The CMD command in a Docker file serves as an entry point command, executing specific commands within the container environment, distinguishing it from the run command and marking it as the primary command to be executed.']}], 'duration': 1213.207, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE5367833.jpg', 'highlights': ['Setting up a fully functional JavaScript Node.js application with persistence in MongoDB and Mongo UI running in Docker containers', 'Introducing Docker Compose as a solution to simplify running multiple Docker containers', 'Explaining the structured Docker Compose file for configuring services like MongoDB and Mongo Express', "The Docker Compose command 'up' starts all the containers specified in the YAML file, creating a network and starting the containers within it", 'Docker Compose can configure waiting logic for containers with dependencies, ensuring that containers start in the correct order', 'The concept of volumes in Docker allows for data persistence between container restarts, addressing the issue of data loss when containers are restarted', 'Docker Compose provides an easier method for stopping and removing containers, and also handles the removal of associated networks', 'The chapter delves into the process of building a Docker image from a Node.js JavaScript application, detailing the use of a Dockerfile blueprint to create the image', "The simulation of the process on a local environment and its similarity to Jenkins' actions is detailed, providing insight into the steps involved", 'The significance of basing the Docker image on a Node.js image is explained, emphasizing the availability of Node within the image and its impact on container usability', 'The concept of configuring environmental variables within a Dockerfile is introduced as an alternative to defining them in Docker compose, with considerations for flexibility and adaptability', 'The run command in a Docker file allows execution of Linux commands, such as creating directories inside the container, without affecting the host environment', 'The copy command in a Docker file enables the copying of files from the host environment into the container image, distinguishing it from the run command by executing on the host rather than inside the container', 'The CMD command in a Docker file serves as an entry point command, executing specific commands within the container environment, distinguishing it from the run command and marking it as the primary command to be executed']}, {'end': 7141.809, 'segs': [{'end': 6779.987, 'src': 'embed', 'start': 6755.012, 'weight': 6, 'content': [{'end': 6762.898, 'text': 'So Alpine is lightweight base image that we installed node on top of it and then we stole our own application on top of it.', 'start': 6755.012, 'duration': 7.886}, {'end': 6765.7, 'text': 'And basically this is how all the images are built.', 'start': 6763.198, 'duration': 2.502}, {'end': 6768.862, 'text': "So now let's go back and complete our Docker file.", 'start': 6766.28, 'duration': 2.582}, {'end': 6772.004, 'text': 'So we have the from specified.', 'start': 6769.443, 'duration': 2.561}, {'end': 6775.366, 'text': 'We have the environmental variables specified.', 'start': 6772.865, 'duration': 2.501}, {'end': 6779.987, 'text': "And in just a second, we're going to actually see these commands in action.", 'start': 6775.906, 'duration': 4.081}], 'summary': "Alpine is a lightweight base image with node and application installed on top. docker file has 'from' and environmental variables specified.", 'duration': 24.975, 'max_score': 6755.012, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6755012.jpg'}, {'end': 6838.08, 'src': 'embed', 'start': 6807.119, 'weight': 0, 'content': [{'end': 6810.88, 'text': "So now that we have a Docker file ready, let's see how to actually use it.", 'start': 6807.119, 'duration': 3.761}, {'end': 6821.082, 'text': 'So how do we build an image out of it? So in order to build an image using Docker file, we have to provide two parameters.', 'start': 6811.04, 'duration': 10.042}, {'end': 6827.163, 'text': 'One is we want to give our image a name in the tech, just like all the other images have.', 'start': 6821.702, 'duration': 5.461}, {'end': 6829.864, 'text': 'So we are going to do it using minus T.', 'start': 6827.683, 'duration': 2.181}, {'end': 6838.08, 'text': "So we're going to call our image my app and we're going to give it a take of one point zero.", 'start': 6831.109, 'duration': 6.971}], 'summary': 'To build a docker image, use -t to name it and specify a tag (e.g., my app:1.0).', 'duration': 30.961, 'max_score': 6807.119, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6807119.jpg'}, {'end': 6937.424, 'src': 'embed', 'start': 6910.138, 'weight': 4, 'content': [{'end': 6918.147, 'text': "So if we go back to this diagram that we saw in the review, so basically we've gone all these steps or we have simulated some of the steps.", 'start': 6910.138, 'duration': 8.009}, {'end': 6921.05, 'text': "We've built the JavaScript application using a Docker containers.", 'start': 6918.207, 'duration': 2.843}, {'end': 6931.339, 'text': "And once the application is ready, let's say we made the commit and we're we just simulated what Jenkins server also does.", 'start': 6921.77, 'duration': 9.569}, {'end': 6937.424, 'text': 'So what Jenkins does is actually it takes the Docker file that we create.', 'start': 6932.019, 'duration': 5.405}], 'summary': 'Javascript application built using docker containers, simulating jenkins server processes.', 'duration': 27.286, 'max_score': 6910.138, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6910138.jpg'}, {'end': 7081.035, 'src': 'embed', 'start': 7004.971, 'weight': 1, 'content': [{'end': 7010.974, 'text': "And in this case, I'm not going to specify any other options because we just want to see what's going on inside of the container.", 'start': 7004.971, 'duration': 6.003}, {'end': 7012.215, 'text': "So I'm just going to run it.", 'start': 7011.374, 'duration': 0.841}, {'end': 7023.325, 'text': "OK. so the problem is that it can't find the server jazz file, which is actually logical, because we're not telling it to look in the correct directory.", 'start': 7013.857, 'duration': 9.468}, {'end': 7032.043, 'text': "So since we're copying all the resources in this home slash home slash app directory, several days is going to be there as well.", 'start': 7023.866, 'duration': 8.177}, {'end': 7034.985, 'text': 'And this is another topic.', 'start': 7032.804, 'duration': 2.181}, {'end': 7043.108, 'text': 'Whenever you adjust a Docker file, you have to rebuild an image because the old image cannot be overwritten, so to say.', 'start': 7035.405, 'duration': 7.703}, {'end': 7047.91, 'text': "So what I'm going to do now is actually I'm going to delete the one that I built.", 'start': 7043.708, 'duration': 4.202}, {'end': 7051.052, 'text': "So I'm going to I'm going to actually take the image.", 'start': 7049.011, 'duration': 2.041}, {'end': 7053.453, 'text': 'This is how you delete an image.', 'start': 7051.512, 'duration': 1.941}, {'end': 7062.783, 'text': "but I can delete it because it's as it says the docker is used by a stopped container.", 'start': 7056.118, 'duration': 6.665}, {'end': 7066.086, 'text': 'So if I do docker p s minus eight.', 'start': 7063.084, 'duration': 3.002}, {'end': 7072.369, 'text': "Actually, let's grab to my app like this.", 'start': 7067.566, 'duration': 4.803}, {'end': 7076.432, 'text': 'I have to first delete the container.', 'start': 7074.051, 'duration': 2.381}, {'end': 7078.534, 'text': 'So this is how you delete a container.', 'start': 7076.752, 'duration': 1.782}, {'end': 7081.035, 'text': "It's Docker are M.", 'start': 7078.594, 'duration': 2.441}], 'summary': 'Troubleshooting docker: resolving file path issues and managing images and containers.', 'duration': 76.064, 'max_score': 7004.971, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE7004971.jpg'}], 'start': 6581.5, 'title': 'Docker image creation and container management', 'summary': 'Covers creating a docker file, specifying base image, building an image, and demonstrates layer stacking process. it also discusses building, running docker containers, sharing images, and managing containers.', 'chapters': [{'end': 6909.578, 'start': 6581.5, 'title': 'Creating docker file and building image', 'summary': 'Covers the creation of a docker file, specifying the base image and building an image using docker file, with a demonstration of the layer stacking process and the necessary parameters for building an image.', 'duration': 328.078, 'highlights': ['The process of creating a Docker file and specifying the base image with a specific version, such as node 13 Alpine, is explained. Explanation of creating a Docker file and specifying a specific version of the base image.', 'Demonstration of the layer stacking process in Docker images, showcasing how each image is based on another base image, with a simplified visualization. Explanation and visualization of the layer stacking process in Docker images.', 'The parameters required for building an image using a Docker file, including specifying the image name and tag, and the location of the Docker file, are outlined. Explanation of the parameters required for building an image using a Docker file.']}, {'end': 7141.809, 'start': 6910.138, 'title': 'Building and running docker containers', 'summary': 'Discusses the process of building and running docker containers, including steps such as building a docker image, sharing the image in a team, running a container, and managing docker images and containers.', 'duration': 231.671, 'highlights': ['The process of building a Docker image using Jenkins server involves committing the Docker file into the repository with the code, and Jenkins then builds a Docker image based on the Docker file. Jenkins server builds a Docker image based on the Docker file committed into the repository, facilitating the automated building process.', 'Sharing Docker images within a team involves pushing them into a Docker repository, allowing team members to download and test the images locally or deploy them on development servers. Sharing Docker images within a team involves pushing them into a Docker repository, enabling team members to download and test the images locally or deploy them on development servers.', "The importance of rebuilding an image when making changes to the Docker file is highlighted, as the old image cannot be overwritten. It's essential to rebuild an image after making changes to the Docker file, as the old image cannot be overwritten, ensuring the changes are reflected in the new image.", "The steps involved in deleting a Docker image and container are outlined, including first deleting the container and then the image using Docker commands. The process of deleting a Docker image and container is outlined, involving first deleting the container using 'docker rm' command and then deleting the image using 'docker rmi' command.", 'The process of rebuilding a modified Docker file and running the updated Docker image is demonstrated, showcasing the steps involved in rebuilding and running the Docker container. The process of rebuilding a modified Docker file and running the updated Docker image is demonstrated, showcasing the steps involved in rebuilding and running the Docker container to reflect the changes made.']}], 'duration': 560.309, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE6581500.jpg', 'highlights': ['Demonstration of the layer stacking process in Docker images, showcasing how each image is based on another base image, with a simplified visualization.', 'Jenkins server builds a Docker image based on the Docker file committed into the repository, facilitating the automated building process.', 'Sharing Docker images within a team involves pushing them into a Docker repository, enabling team members to download and test the images locally or deploy them on development servers.', "It's essential to rebuild an image after making changes to the Docker file, as the old image cannot be overwritten, ensuring the changes are reflected in the new image.", "The process of deleting a Docker image and container is outlined, involving first deleting the container using 'docker rm' command and then deleting the image using 'docker rmi' command.", 'The process of rebuilding a modified Docker file and running the updated Docker image is demonstrated, showcasing the steps involved in rebuilding and running the Docker container to reflect the changes made.', 'The process of creating a Docker file and specifying the base image with a specific version, such as node 13 Alpine, is explained.', 'Explanation of the parameters required for building an image using a Docker file, including specifying the image name and tag, and the location of the Docker file.']}, {'end': 8773.032, 'segs': [{'end': 7345.22, 'src': 'embed', 'start': 7315.926, 'weight': 2, 'content': [{'end': 7325.468, 'text': 'So what we can do now is instead of copying the whole directory where the Docker file is, I just want to copy all the contents of it folder.', 'start': 7315.926, 'duration': 9.542}, {'end': 7331.85, 'text': "So what I'm going to do is I'm going to say copy all the contents.", 'start': 7326.048, 'duration': 5.802}, {'end': 7341.717, 'text': 'And again, because we modified a Docker file, we need to recreate the image in order to leave the Docker container terminal.', 'start': 7333.03, 'duration': 8.687}, {'end': 7342.898, 'text': 'You can actually exit.', 'start': 7341.737, 'duration': 1.161}, {'end': 7345.22, 'text': 'So now we are on the host again.', 'start': 7343.739, 'duration': 1.481}], 'summary': 'Modify docker file to copy all contents, recreate image, exit container.', 'duration': 29.294, 'max_score': 7315.926, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE7315926.jpg'}, {'end': 7423.302, 'src': 'embed', 'start': 7383.418, 'weight': 1, 'content': [{'end': 7386.941, 'text': "So I'm going to say my one point zero.", 'start': 7383.418, 'duration': 3.523}, {'end': 7392.327, 'text': 'And of course, I could have executed with a minus D in a detached mode.', 'start': 7388.584, 'duration': 3.743}, {'end': 7393.367, 'text': "It doesn't matter now.", 'start': 7392.687, 'duration': 0.68}, {'end': 7398.691, 'text': 'And if I do a doctor PS, I see my image container running.', 'start': 7394.188, 'duration': 4.503}, {'end': 7402.133, 'text': "And now let's actually enter the container again.", 'start': 7399.351, 'duration': 2.782}, {'end': 7404.235, 'text': 'So team.', 'start': 7403.154, 'duration': 1.081}, {'end': 7407.477, 'text': 'And as we learned, it was.', 'start': 7405.976, 'duration': 1.501}, {'end': 7410.259, 'text': 'In this age.', 'start': 7407.497, 'duration': 2.762}, {'end': 7417.338, 'text': "And again, we're going to see the home app.", 'start': 7411.935, 'duration': 5.403}, {'end': 7423.302, 'text': 'And here we just have the contents of app directory.', 'start': 7418.919, 'duration': 4.383}], 'summary': 'Executed image container in detached mode and accessed app directory.', 'duration': 39.884, 'max_score': 7383.418, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE7383418.jpg'}, {'end': 7664.717, 'src': 'embed', 'start': 7637.02, 'weight': 0, 'content': [{'end': 7643.444, 'text': 'So we want to push this image here into that repository.', 'start': 7637.02, 'duration': 6.424}, {'end': 7650.169, 'text': 'So how do we do that? If you click on this one, the view push commands will be highlighted.', 'start': 7643.725, 'duration': 6.444}, {'end': 7651.771, 'text': 'This is different registry.', 'start': 7650.269, 'duration': 1.502}, {'end': 7657.975, 'text': 'But basically what you need to do in order to push an image into repository are two things.', 'start': 7651.891, 'duration': 6.084}, {'end': 7664.717, 'text': 'One, You have to log in into the private repository because you have to authenticate yourself.', 'start': 7658.596, 'duration': 6.121}], 'summary': 'Push image into repository: 2 steps - log in, push. authentication required for private repository.', 'duration': 27.697, 'max_score': 7637.02, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE7637020.jpg'}, {'end': 8446.068, 'src': 'embed', 'start': 8416.55, 'weight': 3, 'content': [{'end': 8425.757, 'text': 'Right now, in order to start an application on development server, you would need all the containers that make up that application environment.', 'start': 8416.55, 'duration': 9.207}, {'end': 8428.74, 'text': 'OK, so we have MongoDB and Mongo Express already.', 'start': 8425.777, 'duration': 2.963}, {'end': 8440.264, 'text': "So what we are going to do is here we're going to add a new container in the list, which is going to be our own image.", 'start': 8429.46, 'duration': 10.804}, {'end': 8446.068, 'text': "So let's go ahead and copy the image from our repository.", 'start': 8440.705, 'duration': 5.363}], 'summary': 'Adding a new container to the application environment from the repository.', 'duration': 29.518, 'max_score': 8416.55, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE8416550.jpg'}], 'start': 7142.169, 'title': 'Docker container management and optimization', 'summary': 'Covers accessing and navigating a docker container, optimizing it for efficiency and reduced size, creating a private docker repository on aws using elastic container registry, and deploying docker images to a repository and development server with docker compose and network configuration.', 'chapters': [{'end': 7225.835, 'start': 7142.169, 'title': 'Accessing and navigating docker container', 'summary': "Covers accessing a docker container's terminal, navigating its virtual file system, and setting environmental variables, emphasizing the importance of using 'shell' when 'bash' is not installed.", 'duration': 83.666, 'highlights': ["Navigating the virtual file system within a Docker container, emphasizing the importance of using 'shell' when 'bash' is not installed.", 'Accessing and examining specified environmental variables set within the Docker environment, such as MongoDB username and password.']}, {'end': 7471.009, 'start': 7226.716, 'title': 'Docker container optimization', 'summary': 'Covers optimizing a docker container by creating a specific app directory, copying only necessary files, and removing unnecessary docker files, resulting in increased efficiency and reduced container size.', 'duration': 244.293, 'highlights': ['Creating an app directory and copying only necessary files reduces container size and improves efficiency. The speaker creates an app directory and copies only the necessary files for starting an application inside the container, resulting in reduced container size and improved efficiency.', 'Removing unnecessary Docker files and artifacts from the container further optimizes the setup. The process involves removing unnecessary Docker files, artifacts, and external images from the container, leading to a further optimized container setup.', "Optimizing the container by copying only essential contents enhances its functionality and adherence to best practices. By copying only essential contents and avoiding unnecessary files, the container's functionality is enhanced, aligning with best practices for containerization."]}, {'end': 8280.558, 'start': 7471.409, 'title': 'Creating private docker repository on aws', 'summary': 'Demonstrates creating a private docker repository on aws using elastic container registry, including the process of pushing and managing images, and explains the concept of docker image naming and pushing commands.', 'duration': 809.149, 'highlights': ['The chapter demonstrates creating a private Docker repository on AWS using Elastic Container Registry. It includes creating a private repository using the AWS Elastic Container Registry (ECR) and naming it based on the application name. AWS ECR allows creating a Docker repository per image.', 'It explains the process of pushing and managing Docker images in the private repository. The process involves logging into the private repository, authenticating, and pushing the images into the repository using Docker login and push commands, and managing different versions of the same image within the repository.', 'The chapter discusses the concept of Docker image naming and pushing commands. It explains the naming concept in Docker registries, the structure of the image name, and the significance of including the repository domain or address in the image name for pushing it to a specific repository.']}, {'end': 8773.032, 'start': 8281.718, 'title': 'Docker deployment workflow', 'summary': 'Demonstrates the process of pushing and deploying docker images to a repository and development server, including the use of docker compose and configuration of docker network.', 'duration': 491.314, 'highlights': ['The process involves simulating how Jenkins pushes an image to a Docker repository, requiring Jenkins user to have credentials and execute Docker login, and subsequently pushing the image to the repository.', 'After pushing the image to the repository, the next step involves deploying the application using Docker compose on a development server, where the image is pulled from the repository and additional containers are pulled from Docker Hub.', 'The Docker compose file on the development server is configured to include the necessary image and containers, requiring Docker login and port configuration, with the ability to connect containers using service names within the Docker network.']}], 'duration': 1630.863, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE7142169.jpg', 'highlights': ['Creating a private Docker repository on AWS using Elastic Container Registry and naming it based on the application name', 'Optimizing the container by copying only essential contents enhances its functionality and adherence to best practices', 'Accessing and examining specified environmental variables set within the Docker environment, such as MongoDB username and password', 'The process involves simulating how Jenkins pushes an image to a Docker repository, requiring Jenkins user to have credentials and execute Docker login']}, {'end': 9974.47, 'segs': [{'end': 8910.429, 'src': 'embed', 'start': 8882.978, 'weight': 0, 'content': [{'end': 8888.279, 'text': 'So, if I were to remove the container or stop it and restart the container,', 'start': 8882.978, 'duration': 5.301}, {'end': 8894.161, 'text': 'then the data in this virtual file system is gone and it starts from a fresh state,', 'start': 8888.279, 'duration': 5.882}, {'end': 8900.982, 'text': 'which is obviously not very practical because I want to save the changes that my application is making in the database.', 'start': 8894.161, 'duration': 6.821}, {'end': 8903.242, 'text': "And that's where I need Docker volumes.", 'start': 8901.322, 'duration': 1.92}, {'end': 8905.543, 'text': 'So what are the Docker volumes exactly?', 'start': 8903.482, 'duration': 2.061}, {'end': 8910.429, 'text': 'So, on a host, we have a physical file system, right?', 'start': 8906.543, 'duration': 3.886}], 'summary': 'Using docker volumes to preserve data, avoiding data loss on container restarts.', 'duration': 27.451, 'max_score': 8882.978, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE8882978.jpg'}, {'end': 8990.517, 'src': 'embed', 'start': 8959.341, 'weight': 1, 'content': [{'end': 8963.065, 'text': 'it gets the data automatically from from the host, because the data is still there.', 'start': 8959.341, 'duration': 3.724}, {'end': 8968.487, 'text': "And that's how data is populated on the startup of a container every time you restart.", 'start': 8963.565, 'duration': 4.922}, {'end': 8973.85, 'text': 'Now, there are different types of Docker volumes and so different ways of creating them.', 'start': 8969.007, 'duration': 4.843}, {'end': 8978.231, 'text': 'Usually the way to create Docker volumes is using Docker run command.', 'start': 8974.53, 'duration': 3.701}, {'end': 8982.313, 'text': 'So in the Docker run, there is an option called minus V.', 'start': 8979.072, 'duration': 3.241}, {'end': 8990.517, 'text': 'And this is where we define the connection or the reference between the host directory and the container directory.', 'start': 8982.313, 'duration': 8.204}], 'summary': 'Data is automatically populated on container startup from host, using docker volumes and docker run command.', 'duration': 31.176, 'max_score': 8959.341, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE8959341.jpg'}, {'end': 9431.559, 'src': 'embed', 'start': 9395.657, 'weight': 2, 'content': [{'end': 9405.756, 'text': 'So, for example, if you check it out online, You see that the default path where MongoDB stores its data is data slash data slash DB.', 'start': 9395.657, 'duration': 10.099}, {'end': 9407.737, 'text': 'And we can actually check that out.', 'start': 9406.296, 'duration': 1.441}, {'end': 9409.879, 'text': 'So if I say Docker P.S.', 'start': 9408.098, 'duration': 1.781}, {'end': 9411.76, 'text': 'and go inside the container.', 'start': 9410.419, 'duration': 1.341}, {'end': 9420.687, 'text': "It's minus I.T.", 'start': 9415.383, 'duration': 5.304}, {'end': 9423.689, 'text': 'I can actually see data DB.', 'start': 9420.687, 'duration': 3.002}, {'end': 9428.157, 'text': 'And here is all the data that MongoDB actually holds.', 'start': 9424.895, 'duration': 3.262}, {'end': 9431.559, 'text': 'But this is, of course, only the container.', 'start': 9428.697, 'duration': 2.862}], 'summary': "Mongodb default data path is 'data/db'.", 'duration': 35.902, 'max_score': 9395.657, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE9395657.jpg'}, {'end': 9693.675, 'src': 'embed', 'start': 9669.125, 'weight': 3, 'content': [{'end': 9679.79, 'text': 'what happens is that Docker for Mac application seems to actually create a Linux VM in the background and store all the Docker information,', 'start': 9669.125, 'duration': 10.665}, {'end': 9685.312, 'text': 'or Docker data about the containers and the volumes, et cetera inside of that VM storage.', 'start': 9679.79, 'duration': 5.522}, {'end': 9687.613, 'text': 'So if we execute this command here.', 'start': 9685.772, 'duration': 1.841}, {'end': 9693.675, 'text': 'So this is actually the physical storage on my laptop that I have where all the data is stored.', 'start': 9687.853, 'duration': 5.822}], 'summary': 'Docker for mac creates a linux vm to store docker data.', 'duration': 24.55, 'max_score': 9669.125, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE9669125.jpg'}], 'start': 8773.032, 'title': 'Developing javascript application with docker', 'summary': 'Covers developing a javascript application locally with docker containers, including building and pushing the image, and setting up the application with docker compose. it also explains the importance of docker volumes for data persistence, how to use named volumes for production, and demonstrates the process of using docker compose to persist mongodb data. additionally, it explains the different paths for locating docker volumes on windows, linux, and mac, the structure of the volumes directory, and the storage of data for containers.', 'chapters': [{'end': 8829.02, 'start': 8773.032, 'title': 'Developing javascript application with docker', 'summary': 'Covers the process of developing a javascript application locally with docker containers, including building and pushing the image, and setting up the application with docker compose.', 'duration': 55.988, 'highlights': ['The process includes developing a JavaScript application locally with Docker containers, building the image, and pushing it into a private repository, then setting up the application with Docker compose.', 'Using Docker containers to run applications provides easier connectivity between them, offering more advantages.', 'Simulating a development server involved pulling the image from a private repository and other images from the Docker Hub, then setting up the application with Docker compose.']}, {'end': 9189.667, 'start': 8829.46, 'title': 'Understanding docker volumes', 'summary': 'Explains the importance of docker volumes for data persistence in docker, covering the need for data persistence in stateful applications, the types of docker volumes (host, anonymous, named), and how to create and use them in docker run commands and docker compose, emphasizing the benefits of named volumes for production use.', 'duration': 360.207, 'highlights': ['The need for data persistence in stateful applications like databases is addressed by using Docker volumes, ensuring that data is not lost when containers are removed or restarted. stateful applications', 'Three types of Docker volumes are explained: host volumes, anonymous volumes, and named volumes, with named volumes being recommended for production use due to additional benefits of Docker managing the volume directories on the host. three types of Docker volumes', 'The process of creating Docker volumes is detailed, covering the use of Docker run commands and Docker compose to define volume connections and references, with an emphasis on using named volumes for referencing and production use. use of Docker run commands and Docker compose']}, {'end': 9565.446, 'start': 9189.667, 'title': 'Node.js mongodb data persistence', 'summary': 'Demonstrates the process of using docker compose to persist mongodb data, including creating named volumes and mapping them to specific paths, ensuring data persistence and avoiding data loss.', 'duration': 375.779, 'highlights': ['The chapter demonstrates the process of using Docker Compose to persist MongoDB data. The chapter focuses on demonstrating the usage of Docker Compose to persist MongoDB data, ensuring data persistence and avoiding data loss.', 'Creating named volumes and mapping them to specific paths. The process involves creating named volumes and mapping them to specific paths inside the MongoDB container to ensure data persistence.', 'Ensuring data persistence and avoiding data loss. The main objective is to ensure data persistence and avoid data loss by utilizing Docker Compose to persist MongoDB data.']}, {'end': 9974.47, 'start': 9570.393, 'title': 'Locating docker volumes and understanding storage', 'summary': 'Explains the different paths for locating docker volumes on windows, linux, and mac, as well as the structure of the volumes directory, the unique hash for each volume, and the storage of data for containers. it also discusses the differences in volume paths on mac and linux, the storage location for docker data on mac, and the persistence of data in volumes. it additionally emphasizes the importance of learning about container orchestration tools and kubernetes for managing complex applications.', 'duration': 404.077, 'highlights': ['The path of the Docker volume differs between operating systems, such as program data Docker volumes on Windows, /var/lib/docker/volumes on Linux, and a similar path on Mac.', 'Inside the volumes directory, each volume has a unique hash, and the _data subdirectory contains all the persisted data and files.', 'On Mac, Docker for Mac application creates a Linux VM in the background to store Docker information, including containers and volumes.', 'Understanding the difference between named volumes and anonymous volumes, and how they store data for containers.', 'The process of updating container data, which cascades into the volumes directory for use on the next container startup.', 'The importance of learning about container orchestration tools and Kubernetes for managing complex applications with multiple containers deployed across servers.']}], 'duration': 1201.438, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/3c-iBn73dDE/pics/3c-iBn73dDE8773032.jpg', 'highlights': ['Using Docker containers for application development and connectivity offers advantages.', 'The need for data persistence in stateful applications is addressed by using Docker volumes.', 'Demonstrating the usage of Docker Compose to persist MongoDB data.', 'Understanding the different paths for locating Docker volumes on Windows, Linux, and Mac.']}], 'highlights': ['Mix of animated theoretic explanations and hands-on demos, practical use cases', 'Over 100,000 container images available on Docker Hub streamline development and deployment', 'Docker images are usually a couple of megabytes, while virtual machine images can be a couple of gigabytes large', "The 'docker exec' command provides terminal access to a running container, enabling tasks like navigating directories, inspecting configuration files, and validating environmental variables", 'Setting up a fully functional JavaScript Node.js application with persistence in MongoDB and Mongo UI running in Docker containers', 'Demonstration of the layer stacking process in Docker images, showcasing how each image is based on another base image, with a simplified visualization', 'Creating a private Docker repository on AWS using Elastic Container Registry and naming it based on the application name', 'Using Docker containers for application development and connectivity offers advantages', 'The need for data persistence in stateful applications is addressed by using Docker volumes', 'Understanding the different paths for locating Docker volumes on Windows, Linux, and Mac']}