Docker - Streamlining Web Development
8-31-2020What is Docker?
Docker can help streamline development teams by packaging all code and dependencies like system libraries and settings. Docker is similar to a virtual machine, but much more efficient. Packing up code in a “container” improves application performance and allow the application to run in different environments. Containers provide a clear separation from the code and application’s environment so it will function as intended despite potential differences in the development and staging environments. Containers virtualize operating systems instead of hardware.
Docker’s screenshot below outlines how Docker acts as a layer of separation between the host and the various containerized apps. Docker is open source and supported by Linux, Windows, data centers, and cloud hosting providers like Amazon Web Services (AWS). Docker lets you use almost any database and servers that you want – it’s great!
Why Programmers Should Use Docker
There are many benefits when working with Docker that development teams loves:
Lightweight: Docker is able to use your computer’s resources, it doesn’t require you to allocate more memory – it just uses as it needs it. Additionally, it will share libraries between the containerized apps so you only need to download the libraries once.
Efficient: When you start Docker, it will automatically pull down all relevant bins, database libraries, etc.
Portable: If everything is working on your PC using Docker, you can easily ship off your app as needed. Developers can focus on coding and not worry about the system the application will ultimately be running on.
Open Source: It can be extended to meet developers’ own needs if there are additional features needed that don’t come out-of-the-box.
Docker Compose Tool
Docker Compose is an extremely valuable toolset available to development teams. Docker Compose File is a tool that allows programmers to create environments and interact with them. It allows you to configure all application dependencies (e.g. databases, APIs, etc.). The Compose command line tool lets you easily create and run one or more containers with a single command.
The Compose file created is a YAML. YAML is human friendly data serialization standard for all programming languages. This file defines services that make up your app so they can be run together in an isolated environment. You may also use JSON.
Docker Hub
Docker Hub is a service provided by Docker and is the world’s largest library and community for container images. Docker Hub provides the following features:
- Repositories to push and pull container images.
- Official images provided by Docker (e.g. Node.js, Postgres, MySQL, etc.).
- Team and Organization access management for private repos.
- Builds to automatically build container images from GitHub and push to Docker Hub.
- Webhooks to integrate Docker Hub with other services.
Docker Hub currently offers three different pricing plans and offers discounts when billed annually versus monthly:
Free (For Individuals): This plan includes basic Docker tools for every developer, including unlimited public repos and one private repo.
- $0/month
Pro (For Individuals): Includes pro tools for developers with advances requirements for parallel builds and unlimited private repos.
- $5/month (annual billing) or $7/month (monthly billing)
Team (For Organizations): Includes advanced collaboration and management tools for teams (e.g. organization and team management with role-based access controls, parallel builds, and unlimited private repos).
- $7 per user/month (annual billing) or $9 per user/month (monthly billing)
Resources
Docker offers many web-based tutorials, as well as a beginner’s guide to help get your toes wet before you dive right in. Here are some resources for you to check-out:
Create a Docker Labs account and check out this playground tool to help you learn about Docker images.