We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Docker - Hands On for Java Developers

Richard Chesterwood and Virtual Pair Programmers

A great course if you're a Java developer looking to get started with Docker. On this course, you'll be working with a real Microservice architecture built using Spring Boot. Your job will be to deploy the application as a set of Docker Containers.

Read more

A great course if you're a Java developer looking to get started with Docker. On this course, you'll be working with a real Microservice architecture built using Spring Boot. Your job will be to deploy the application as a set of Docker Containers.

Optionally, you'll be able to run the final system in a real cloud environment (AWS), using Docker Swarm.

Enroll now

What's inside

Learning objectives

  • Use docker on production quality java systems.
  • Distribute systems across multiple nodes in a cluster
  • Publish your own images on dockerhub
  • Know the differences between images and containers
  • Build your own containers from dockerfiles
  • Integrate docker into your build process

Syllabus

Chapter 1 - Introduction

An overview of the course

Find out what Docker can do for you, and we'll learn some of the basic jargon such as containers and images.
Read more
Introducing Docker
Images and Containers
Containers vs Virtual Machines
Installing Docker is much harder than actually using it. Here we guide you through the process.
Docker in Development and Production
Installing Docker Desktop
How to Check Docker is Working
You'll get a chance to deploy a real (but very small) Java application to a Tomcat based container.
Downloading Images
Running Containers
Port Mappings
Running on EC2 (optional demo)
You'll learn how to use DockerHub to find base images, and how to run containers from them
Docker Hub
Finding Base Images
Classic vs Modern Docker Commands
(Extra) For cygwin users: how to avoid TTY errors
Running Base Containers
Container Lifecycles
Errata - avoid using the :latest image
Practical: Running a Tomcat Container
Dockerfiles define images - you'll learn how to make your images in this section
Building images with "commit"
Dockerfiles
Copying files to images
Images Commands (CMD)
Copy vs Add
Labels vs MAINTAINER
We use Tomcat as an example application to deploy to a container
Setting up the IDE
How to Find Docker Base Images
How to Set the RUN Command in Docker
What Does the Docker EXPOSE Command Do?
Removing the Tomcat Default Applications
Installing a WAR file
Running a Spring Boot application in Docker is really easy!
Spring Boot Applications
You'll want to get your own DockerHub account to publish your images.
Pushing to DockerHub
You'll need to network containers together, especially if building a microservice architecture. It's easy and we learn about the Naming Service in Docker.
Containers and Services
Containers Names and DNS
Network Management
ERRATA: You will need some extra config in the next video...
Connecting to a Database Container
Network Topologies
Is Steve Jobs "notable or awesome"? (optional!)
Volumes enable you to persist some data from a container to disk
Introducing Volumes
Naming Volumes
Mount Points
This is an optional section. We use the fabric8 Docker Maven Plugin to integrate with a Java build process.
Fabric8 Docker Maven Plugin (DMP)
Build Problems with Maven Plugin?
Configuring DMP
Integrating with Maven Lifecycles
Integrating Pushes with Deploy
Jenkins
Starting up multiple containers for a system is tedious. Compose enables us to capture an entire system's architecture in a single text file.
Why Docker Compose?
Errata - use image mysql:5
Compose Files
Startup Order
Running docker-compose
Rolling out changes
To run serious production environments, you need an orchestration system. Kubernetes is the marker leader at the time of writing, but there is one built into Docker - Swarm.
Orchestration Systems
Introducing Swarm
Swarm Services
Warning - disable adblocker / ublock
Play with Docker
Monitoring Service Logs
Chapter 15 - Stacks
Managers vs Workers
Building a Stack
Service Lifecycles
Replicated Services
Routing Mesh
Visualizer
Rolling Updates
Chapter 16: Microservices on EC2
Introducing Fleetman Microservices
Starting an EC2 Cluster
Configuring the Cluster
Deploying a Stack
System Resilience
Service Discovery
Chapter 17 - Goodbye!
Course Close
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches how to utilize Docker in production-ready Java systems
Demonstrates how to distribute software systems across different nodes in a cluster
Provides experience in publishing personal images on Docker Hub
Covers the crucial differences between images and containers
Guides the construction of containers from Dockerfiles
Introduces Docker integration within a build process

Save this course

Save Docker - Hands On for Java Developers to your list so you can find it easily later:
Save

Reviews summary

Valuable for java developers

Learners say this course is valuable and relevant for Java developers. According to students, this course is well-structured and uses Spring Boot applications to demonstrate key concepts. Learners appreciate the instructor's knowledge, passion, and clarity. Many students plan to continue their learning with the instructor's Kubernetes course.
Instructor is knowledgeable and passionate.
"Richard has presented this course with great passion and knowledge."
Uses Spring Boot applications for examples.
"It uses Spring Boot application as an example."
"Perfect combination for most of the Java Developers."
Well-suited for Java developers.
"It was certainly 100% what I was looking for as a Java Developer."
"Perfect combination for most of the Java Developers."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Docker - Hands On for Java Developers with these activities:
Review Java Concepts
Reviewing key Java concepts will help you refresh your knowledge and prepare for the course.
Browse courses on Java
Show steps
  • Go through your Java notes or textbooks.
  • Practice writing simple Java programs.
Read the Docker documentation
The Docker documentation is a valuable resource for learning about Docker. It provides detailed information on all aspects of Docker, from installation to advanced topics such as Docker Swarm and Kubernetes.
Show steps
  • Identify the sections of the documentation that are relevant to your needs
  • Read the documentation carefully
  • Take notes and highlight important information
  • Use the documentation as a reference when working with Docker
Attend Docker Meetups
Attending Docker meetups will allow you to connect with other professionals and learn from their experiences.
Browse courses on Docker
Show steps
  • Find Docker meetups in your area.
  • Attend the meetups and participate in discussions.
11 other activities
Expand to see all activities and additional details
Show all 14 activities
Follow a Docker tutorial
Following a Docker tutorial is a great way to get started with Docker and learn the basics. It will help you understand the concepts of containerization and how to use Docker to build, deploy, and manage containerized applications.
Browse courses on Docker
Show steps
  • Find a Docker tutorial that matches your skill level
  • Follow the tutorial step-by-step
  • Test your understanding by completing the exercises in the tutorial
Discuss Docker with other students
Discussing Docker with other students is a great way to learn from each other and share your knowledge. It can also help you to identify areas where you need additional support.
Browse courses on Docker
Show steps
  • Find a study group or online forum where you can connect with other Docker users
  • Participate in discussions and ask questions
  • Share your own knowledge and experience
Follow Docker Tutorials
Following Docker tutorials will provide you with hands-on experience and a deeper understanding of the concepts.
Browse courses on Docker
Show steps
  • Find online tutorials on Docker.
  • Follow the tutorials step-by-step.
  • Try out the examples provided in the tutorials.
Practice deploying Docker containers
Deploying Docker containers is a key skill in this course. Practicing this skill will help you reinforce your understanding of the concepts and improve your ability to use Docker effectively.
Browse courses on Docker Containers
Show steps
  • Create a simple Java application
  • Create a Dockerfile for your application
  • Build and run your Docker container
  • Test your application in the container
  • Deploy your container to a cloud environment (optional)
Attend a Docker meetup or conference
Attending a Docker meetup or conference is a great way to learn about the latest Docker trends and technologies. It is also a great opportunity to network with other Docker users and developers.
Browse courses on Docker
Show steps
  • Find a Docker meetup or conference in your area
  • Register for the event
  • Attend the event and participate in the sessions and networking opportunities
Practice deploying Docker containers to a cloud environment (AWS)
Deploying Docker containers to a cloud environment is a key skill in this course. Practicing this skill will help you reinforce your understanding of the concepts and improve your ability to use Docker effectively in a production environment.
Browse courses on Docker Containers
Show steps
  • Create an AWS account
  • Create an EC2 instance
  • Install Docker on the EC2 instance
  • Deploy your Docker containers to the EC2 instance
  • Test your deployed containers
Practice Building Docker Containers
Regular practice in building Docker containers will improve your skills and confidence.
Browse courses on Docker
Show steps
  • Create a Dockerfile for a simple application.
  • Build and run the Docker container.
  • Try different Docker commands to manage the container.
Build a simple microservice using Docker
Building a microservice using Docker is a great way to apply the concepts you learn in this course. It will help you develop your skills in microservice design and implementation, as well as your ability to use Docker to deploy and manage microservices.
Browse courses on Microservices
Show steps
  • Design the architecture of your microservice
  • Create Dockerfiles for each component of your microservice
  • Build and run your microservice using Docker Compose
  • Test your microservice
  • Deploy your microservice to a cloud environment (optional)
Contribute to a Docker open-source project
Contributing to a Docker open-source project is a great way to learn more about Docker and how it works. It will also give you the opportunity to work with other Docker users and developers.
Browse courses on Docker
Show steps
  • Find a Docker open-source project that you are interested in
  • Read the project's documentation and contribute guidelines
  • Identify an issue or feature that you would like to work on
  • Create a pull request with your proposed changes
  • Work with the project maintainers to get your pull request merged
Deploy a Simple Microservice
Deploying a simple microservice will provide you with practical experience and a tangible outcome.
Browse courses on Microservices
Show steps
  • Create a simple microservice using Spring Boot.
  • Build a Docker container for the microservice.
  • Deploy the container to a platform like AWS or Azure.
Contribute to Docker Projects
Contributing to Docker projects will give you hands-on experience, improve your skills, and connect you with the community.
Browse courses on Docker
Show steps
  • Find open-source Docker projects on GitHub.
  • Choose a project and identify areas where you can contribute.
  • Fork the project, make your changes, and submit a pull request.

Career center

Learners who complete Docker - Hands On for Java Developers will develop knowledge and skills that may be useful to these careers:
DevOps Engineer
DevOps Engineers are responsible for bridging the gap between development and operations teams. They work to ensure that software is developed and deployed quickly and efficiently, while also maintaining quality and security. The Docker - Hands On for Java Developers course can help DevOps Engineers learn how to use Docker to automate the build, deployment, and management of software systems. The course also covers topics such as continuous integration and continuous delivery, which are essential for DevOps practices.
Software Architect
Software Architects are responsible for the design and architecture of software systems. They work with stakeholders to understand the requirements of a system and then design a solution that meets those requirements. The Docker - Hands On for Java Developers course can help Software Architects learn how to use Docker to design and architect scalable, reliable, and secure software systems. The course also covers topics such as containerization, microservices, and cloud computing, which are essential for modern software architecture.
Cloud Engineer
Cloud Engineers are responsible for the design, deployment, and management of cloud computing systems. They work with a variety of cloud technologies, including Docker, to build and deploy scalable, reliable, and secure applications. The Docker - Hands On for Java Developers course can help Cloud Engineers learn how to use Docker to containerize their applications for deployment in the cloud. The course also covers topics such as cloud networking, storage, and security, which are essential for cloud computing.
Software Engineer
Software Engineers are responsible for the design, development, and maintenance of software systems. They may work on a variety of projects, from small, standalone applications to large, enterprise-scale systems. The Docker - Hands On for Java Developers course can help Software Engineers learn how to use Docker to containerize their applications, which can improve performance, portability, and security. The course also covers topics such as image building, container networking, and orchestration, which are essential for developing and deploying complex software systems.
Systems Administrator
Systems Administrators are responsible for the maintenance and operation of computer systems. They work with a variety of operating systems, including Docker, to ensure that systems are running smoothly and efficiently. The Docker - Hands On for Java Developers course can help Systems Administrators learn how to use Docker to manage their systems more effectively. The course also covers topics such as container security, networking, and monitoring, which are essential for maintaining complex systems.
Technical Project Manager
Technical Project Managers are responsible for the planning, execution, and delivery of technical projects. They work with a variety of stakeholders to ensure that projects are completed on time, within budget, and to the required quality standards. The Docker - Hands On for Java Developers course can help Technical Project Managers learn how to use Docker to improve the efficiency and effectiveness of their projects. The course also covers topics such as containerization, continuous integration, and continuous delivery, which are essential for modern project management.
IT Manager
IT Managers are responsible for the planning, implementation, and management of IT systems. They work with a variety of stakeholders to ensure that IT systems are aligned with business goals. The Docker - Hands On for Java Developers course can help IT Managers learn how to use Docker to improve the efficiency and effectiveness of their IT systems. The course also covers topics such as containerization, cloud computing, and security, which are essential for modern IT management.
Business Analyst
Business Analysts are responsible for analyzing business needs and developing solutions to meet those needs. They work with a variety of stakeholders to understand the requirements of a business and then design and implement solutions that meet those requirements. The Docker - Hands On for Java Developers course may be useful for Business Analysts who want to learn how to use Docker to improve the efficiency and effectiveness of their work. The course also covers topics such as containerization, cloud computing, and security, which are essential for modern business analysis.
Security Analyst
Security Analysts are responsible for protecting computer systems from security threats. They work with a variety of security tools and technologies to identify, analyze, and mitigate security risks. The Docker - Hands On for Java Developers course may be useful for Security Analysts who want to learn how to use Docker to improve the security of their systems. The course also covers topics such as container security, networking, and monitoring, which are essential for modern security analysis.
Network Engineer
Network Engineers are responsible for the design, implementation, and maintenance of computer networks. They work with a variety of networking technologies to ensure that networks are running smoothly and efficiently. The Docker - Hands On for Java Developers course may be useful for Network Engineers who want to learn how to use Docker to manage and deploy network services. The course also covers topics such as containerization, cloud computing, and security, which are essential for modern network engineering.
Database Administrator
Database Administrators are responsible for the management and maintenance of databases. They work with a variety of database technologies to ensure that databases are running smoothly and efficiently. The Docker - Hands On for Java Developers course may be useful for Database Administrators who want to learn how to use Docker to manage and deploy databases. The course also covers topics such as containerization, cloud computing, and security, which are essential for modern database administration.
Data Scientist
Data Scientists are responsible for the collection, analysis, and interpretation of data. They work with a variety of data sources to extract insights that can be used to improve decision-making. The Docker - Hands On for Java Developers course may be useful for Data Scientists who want to learn how to use Docker to manage and process large datasets. The course also covers topics such as containerization, cloud computing, and security, which are essential for working with data in the modern world.
Software Tester
Software Testers are responsible for testing and validating software systems. They work with a variety of testing tools and techniques to ensure that software systems meet the required quality standards. The Docker - Hands On for Java Developers course may be useful for Software Testers who want to learn how to use Docker to improve the efficiency and effectiveness of their testing. The course also covers topics such as containerization, continuous integration, and continuous delivery, which are essential for modern software testing.
Quality Assurance Engineer
Quality Assurance Engineers are responsible for testing and validating software systems. They work with a variety of testing tools and techniques to ensure that software systems meet the required quality standards. The Docker - Hands On for Java Developers course may be useful for Quality Assurance Engineers who want to learn how to use Docker to improve the efficiency and effectiveness of their testing. The course also covers topics such as containerization, continuous integration, and continuous delivery, which are essential for modern quality assurance.

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Docker - Hands On for Java Developers.
Focuses on using Docker in enterprise environments. It covers topics such as security, governance, and orchestration, and provides guidance on integrating Docker with existing infrastructure and tools.
Provides a comprehensive overview of Kubernetes, the open-source container orchestration system. It valuable resource for Java developers who want to learn more about Kubernetes and how to use it to manage their Docker containers.
Provides a comprehensive overview of microservices patterns. It valuable resource for Java developers who want to learn more about how to design and build microservices-based applications.
Provides a comprehensive overview of data-intensive applications. It valuable resource for Java developers who want to learn more about how to design and build scalable, reliable, and maintainable data-intensive applications.
Although this book is not specifically about Docker, it valuable resource for those interested in integrating Docker with Jenkins. It covers topics such as plugin configuration, pipeline creation, and best practices for using Jenkins with Docker.
Provides a quick overview of Docker, covering topics such as image creation, container management, and networking. It is suitable for beginners with little to no prior knowledge of Docker.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Docker - Hands On for Java Developers.
Docker for Java Developers
Most relevant
Docker from A to Z™: Swarm + Jenkins
Most relevant
Cloud-Native: Microservices, Kubernetes, Service Mesh,...
Most relevant
Docker Swarm Mastery: DevOps Style Cluster Orchestration
Most relevant
Building Microservice Platforms with TARS
Most relevant
Working with Microservices in Go (Golang)
Most relevant
Docker Bootcamp: Conquer Docker with Real-World Projects
Most relevant
AWS Certified Solutions Architect - Associate (SAA-C03):...
Most relevant
Docker for Node.js Projects From a Docker Captain
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser