Docker is a widely used open-source platform and tool for containerization, which is a technology for packaging and running applications and their dependencies in a consistent and isolated environment known as a container. Docker has revolutionized the way software is developed, shipped, and deployed by making it easier to create, deploy, and manage applications in a lightweight and portable container format. Here's an overview of Docker: **Key Concepts:** 1. **Container**: A container is a lightweight and standalone executable package that includes an application, its runtime, libraries, and system tools, all bundled together. Containers run consistently on any environment that supports the Docker platform. 2. **Docker Engine**: The Docker Engine is the core component of Docker. It is responsible for running containers and managing images, as well as providing the necessary APIs and tools for interacting with Docker. 3. **Images**: Docker images are read-only templates used to create containers. They contain everything needed to run an application, including code, runtime, system tools, and libraries. Images are stored in a registry, such as Docker Hub, from which they can be pulled and run as containers. 4. **Containers**: Containers are instances of Docker images that run as isolated processes on the host system. They are lightweight, fast to start, and can be easily created, destroyed, and scaled. 5. **Dockerfile**: A Dockerfile is a text document that contains instructions for building a Docker image. It specifies the base image, software installation, configuration, and any other steps required to create a container. 6. **Docker Hub**: Docker Hub is a cloud-based registry where Docker users can find, share, and store Docker images. It contains a vast collection of public images, and users can also store their private images. **Key Features:** 1. **Portability**: Docker containers are portable, meaning they can run consistently across various environments, such as development, testing, staging, and production, as long as Docker is available on those platforms. 2. **Isolation**: Containers provide a high degree of isolation, ensuring that applications do not interfere with each other and do not affect the underlying host system. 3. **Efficiency**: Containers are lightweight, and multiple containers can run on a single host, making efficient use of resources and allowing for higher density on a single server. 4. **Versioning**: Docker images can be versioned, making it easy to roll back to previous versions of an application if needed. 5. **Microservices**: Docker is commonly used for building and deploying microservices-based architectures, where different parts of an application are containerized and can be managed independently. 6. **Scalability**: Docker containers can be easily scaled up or down based on demand, making it well-suited for auto-scaling in cloud environments. 7. **Orchestration**: Docker provides tools for container orchestration, such as Docker Compose for defining multi-container applications and Kubernetes for managing containerized applications in a cluster. 8. **Security**: Docker provides security features, including isolation using Linux namespaces and cgroups, as well as support for security profiles and policies. **Use Cases:** Docker is used in various scenarios, including: - Application development and testing. - Continuous integration and continuous delivery (CI/CD). - Creating development environments that match production. - Packaging and distributing software. - Running microservices architectures. - Building scalable and resilient applications in the cloud. Docker has had a significant impact on modern software development and deployment practices, providing developers and operators with a consistent, efficient, and flexible way to work with applications and their dependencies. [[https://www.youtube.com/watch?v=eGz9DS-aIeY|you need to learn Docker RIGHT NOW!! // Docker Containers 101]] [[https://stackoverflow.com/questions/42158596/can-windows-containers-be-hosted-on-linux|Can Windows containers be hosted on Linux?]] [[https://certsimple.com/can-you-use-docker-to-run-windows-programs-on-linux/|Can You Use Docker To Run Windows Programs On Linux?]] [[https://www.youtube.com/watch?v=bKFMS5C4CG0| Docker networking is CRAZY!! (you NEED to learn it)]] Master in DevOps : Docker Jenkins GIT CI Pipeline and Maven https://www.udemy.com/devops-training/ What you'll learn An understanding of DevOps and the modern DevOps toolsets The ability to automate all aspects of a modern code delivery and deployment pipeline Understand the concepts of continuous inspection, continuous integration, and continuous deployment, and the difference between them. Containerize a web-based application with a microservice approach and automate it using Dockerfile Create a multi-stage Jenkins job and visualize the complicated build pipeline with Jenkins build pipeline plugin. Hand's-on with best practices for making Dockerfiles and Compose files like a Pro! Create and manage repositories on GitHub Manage project defects or enhancement requests with GitHub Issues And many many more… Understating of DevOps & DevOps Process Introduction Preview What is DevOps || DevOps Tools Preview13:43 Continuous Development 09:58 Continuous Testing 04:06 Continuous Integration 12:39 Continuous Deployment & Monitoring 08:32 –**GIT** Introduction & Installation 42:35 Git | WelCome & Goal 01:44 Audience & Study Tips 02:24 Key GIT Terminology 04:40 GIT Introduction 20:30 Install GIT on LINUX 04:23 Download and Install GIT on Windows 08:54 –GIT Quick Start 40:45 Configure User Information in GIT 09:27 Create First GIT Repository 09:24 First GIT Commit 09:23 Adding Files and GIT Logs 06:42 Understanding of GIT Workflow 05:49 –Bonus on Other Course 00:55 Bonus Lecture: Get my other courses at the maximum discount! 00:55 –Text Editor for GIT **Installation** 23:40 GIT Text Editor OverView 01:41 Install SubLime Text on Linux 04:03 Configure SubLime with GIT 05:56 NotePad ++ As GIT Editor for Windows 12:00 –Version Control System GIT & GITHUB 18:54 Verify Changes in GIT 09:33 Compare Stage Area with Local Repository in GIT 05:15 Delete File in GIT 04:06 –GIT with GITHUB **Advance** 01:03:28 Explore Git with GITHub 07:59 Create Centralized Repository 17:33 Create Branches in GIT 18:05 Merge Branches in GIT 12:09 Revert a Commit in GIT 07:42 –GIT Basics **Through Explanation** 01:29:19 Add GIT in Existing Project Part 10:22 Fork GitHub Existing Project 08:37 Git CLI Complete Workflow 10:44 Back-out GIT Changes 08:07 Delete File in GIT 08:49 Rename & Move File in GIT 13:39 Find Commit, File History in GIT 10:51 GIT Alias 07:02 Exclude Unwanted Files in GIT 11:08 –Comparisons in GIT 26:35 SetUp Git Project for Comparision 08:01 Compare Working Directory & Stage Area 06:42 Compare Work Directory and GIT Repo 03:15 Compare Stage Area & GIT Repo 03:51 Compare Commits in GIT 04:46 –Branching & Merging in GIT 35:33 Basics of Branches in GIT 08:16 Happy Path Merges in GIT 08:18 Auto Merge in GIT 09:12 Merge Conflicts & Resolution 09:47 –GIT Rebase 56:16 GIT Merge vs GIT Rebase 17:12 GIT Rebase Example 11:50 Create Merge Conflicts in Rebase 08:26 Resolve Merge Conflicts in GIT Rebase 05:37 Rebase Remote Repository in GIT 13:11 –GIT Stashing 47:27 GIT Stash with Example 16:21 Stash Untracked Files & Git Stash Pop 13:37 Manage Multiple Stash 09:24 Stashing into Branch 08:05 –GIT Tagging 29:50 GIT Tagging Introduction 07:54 GIT Annotated Tags 05:57 Compare Tags in GIT 07:44 Tag a Specific Commit in GIT 04:36 Update Tags in GIT 03:39 –GIT Common Mistakes and Fixes 32:04 Fixing Common Mistakes in GIT Part 1 10:05 Fixing Common Mistakes in GIT Part 2 12:38 Fixing Common Mistakes in GIT Part 3 09:21 –Project Build Tool : MAVEN 53:57 Maven Introduction 07:59 Configure Maven on Windows Machine 08:25 Configure Maven on Windows Machine : Text Direction 01:06 Project Code Location 00:06 Configure Maven on Mac Machine 06:01 Generate First Maven Project From Maven CLI 11:42 Maven Build Life Cycle 12:09 POM.xml File in Maven Project 06:29 –Continuous Integration || Jenkins Introduction 56:12 What is Continuous Integration || Need of Jenkins 12:39 Download and Configure Jenkins on Linux 13:56 Text Direction : Download & Configure Jenkins on Linux 00:46 Download & Configure Jenkins on Windows 12:33 Text Direction : Download & Configure Jenkins on Windows 03:01 Download and Configure Jenkins on Mac OS 12:08 Text Direction : Download & Configure Jenkins on Mac OS 01:04 Java 9,10 Warning 00:05 –Jenkins Getting Started 43:48 Jenkins Architecture 12:21 Create & Execute Jenkins Job 21:01 Install GIT & GitHub Plugin 10:26 –Continuous Integration | Jenkins Jobs 01:06:52 Configure Jenkins to Work With Java, GIT, Gradle, Maven 05:43 Create First Maven Base Jenkin Project 13:40 CookBook: Create First Maven Base Jenkin Project 00:33 Trouble Shooting: Create our First Maven-based Jenkins Project 00:29 Run Maven Project Via Jenkins 15:01 Trouble Shooting: Run our First Jenkins Build and Jenkins Workspace 00:46 Source Code Polling 18:12 Text Direction : Add SSH Key in Local from GitHUB 00:05 Build Trigger Options in Jenkins 12:19 Text Direction : GitHub Hook SetUp 00:02 –Continuous Inspection with Jenkins 20:08 Code Quality Check with Jenkins 19:57 Text Direction: Code Quality and Code Coverage Metrics Report 00:11 –Continuous Delivery with Jenkins 01:46:24 Archive Artefact in Jenkins 07:44 Install Tomcat as Staging Env 24:38 Deploy Staging Environment 26:30 The latest Deploy to Container plugin 00:25 Build PipeLine Intro 08:57 Jenkins Parallel Builds 06:04 Deploy to Production 31:46 Trouble Shooting: Deploy to Production 00:19 –Jenkins As Code Pipeline 01:33:45 Jenkins As Code Pipeline Overview 30:25 Text Lecture: Overview of Pipeline as Code 00:15 Code Pipeline : Build Project 26:19 Text Lecture: Build Pipeline 00:22 Code Pipeline : Deploy in Staging Env 15:59 Text Lecture: Deploy Staging Env 00:15 Code Pipeline : Deploy in Production Env 19:24 Text Direction : Deploy in Production Env 00:25 Trouble Shooting: Automate Code Pipeline 00:19 –Distributed Builds 01:15:21 Introduction to Distributed Builds 09:06 Text Direction : Distributed Builds Intro 00:02 Install Jenkins on Cloud 21:59 Text Direction : Install Jenkins on Cloud 00:50 Install Jenkins Slave on Cloud 33:45 Text Direction : Install Jenkins Slave on Cloud 00:25 Distributed Builds & Build Lebels 09:14 –Docker Setup and Installation 01:37:40 What is Docker 12:56 Where I will Find the Docker Resource 01:24 Getting Course Resources : GitHub Repo 00:37 Docker Edition : Which Do I Use? 08:35 Install Docker on Various Platforms: Text Direction 01:24 Docker For Windows 14:46 Text Direction: Docker on Windows 00:06 Docker on Mac Machine 19:02 Create Linux Machine on Cloud 12:35 Text Direction : Create Machine on Cloud 00:20 Install Docker on Linux Machine 21:20 Text Direction: Install Docker on Linux Machine 00:28 Terminal Shell and Tab Completion for Docker CLI 01:04 5 Facts Everyone Should Know about Containers 03:00 –Creating Docker Containers : Start Like a Beginner 01:42:50 Check Docker Install and Configurations 14:09 Start Your First Container 29:04 Stop-Remove the Containers 20:07 Docker Internal Processing 04:41 Containers vs Virtual Machines 12:30 Assignment : Manage Multiple Containers 07:41 Assignment Answer : Manage Multiple Containers 14:38 –Use Docker Containers : Advance 29:42 Docker CLI Monitoring 13:18 Start Container in Interactive Mode 06:51 Run Commands in Running Containers 09:33 –Docker Networking 46:03 Docker Network : Introduction 06:06 Explore Container Networks 11:05 Docker Network CLI : List & Inspect 06:56 Docker Network : Create, Connect & Disconnect Network 10:39 Docker Network : DNS Concept 11:17 –Docker Container Images : Beginning 43:47 What is Docker Image 05:20 Docker Hub Repository 12:20 Concept of Docker Image Layers 05:36 Docker Image Tagging 07:49 Upload Docker Image to Cloud 12:42 –Docker Container Images : Build Images 01:00:31 Dockerfile Basics 02:38 Docker File Instructions 14:18 Create Custom Docker Image 20:25 Extend Official Docker Image 10:09 Assignment : Build Docker Image 02:21 Assignment Answer : Build Docker Image 10:40 –Docker Containers : Manage Data 01:10:01 Persistent Data Problem 06:08 Persistent Data : Data Volumes 13:15 Persistent Data : Bind Mounts 11:20 Assignment : Data Volumes 02:06 Assignment Answer : Data Volumes 25:30 Assignment : Bind Mounts 00:59 Assignment Answer : Bind Mount 10:43 –Docker Compose : Multi Container Tool 42:26 Docker Compose Introduction 04:52 Docker Compose YML File 03:51 Run MYSQL & WORDPRESS via Docker Compose 15:32 Docker Compose : Build Application From Scratch 18:11 –Docker Swarm Introduction: Swarm Orchestration 59:42 Docker Swarm Introduction: Swarm Orchestration 11:58 Docker Swarm Terminology 07:06 Create Service on Docker Swarm 16:47 Create Docker Swarm Cluster 19:36 Text Direction : SetUp Docker on Swarm Docker Nodes 00:31 Busting 5 DevOps Myths 03:44 –Docker Swarm Features and Applications 48:57 Networks in Docker Swarm 13:52 Docker Swarm Traffic Management 09:31 Assignment : Deploy Multi-Node Application in Docker Swarm 08:54 Assignment Answer : Deploy Multi-Node Application in Docker Swarm 16:40 –Docker Swarm Stack Deployment : Multi Service Deployment 56:59 Docker Swarm Stacks 18:16 Docker Swarm Stack : Scale Application 14:09 Docker Swarm : Persistent Data Issue in Distributed Application 10:42 Swarm : Deploy Distributed Application 13:52 –Docker Swarm Secrets Management : Protect Sensitive Data 35:29 Docker Swarm Secrets Introduction 08:09 Create Docker Service with Secrets 11:26 Deploy Stack with Swarm Secrets 15:54 –Docker Swarm Service Management 01:00:09 ZeroDowntime Service Upgrade 18:51 HealthCheck in Docker Swarm 16:18 Container Placement in Docker Swarm 17:59 Service Constraints in YML File 07:01 –Bonus on Other Course 00:55 Bonus Lecture: Get my other courses at the maximum discount! 00:55