-
Notifications
You must be signed in to change notification settings - Fork 6
Intro to Docker
In this document we will give an overview of what Docker is and how it could be used. If you want to watch a video instead, we recommend this short youtube video.
- Docker is a platform that allows developers to package and distribute applications along with their dependencies in lightweight containers.
- These containers are isolated environments that ensure consistency across different computing environments, making it easier to deploy applications reliably.
- Docker simplifies the process of building, shipping, and running applications, leading to faster development cycles and increased scalability.
- It enables seamless integration with existing development workflows and infrastructure, facilitating collaboration among teams
- Docker uses the host OS kernel, there is no custom or additional kernel inside running containers
- Docker uses resource isolation features of the Linux kernel such as cgroups and
- kernel namespaces to allow independent “containers” to run within a single Linux instance, avoiding the overhead of starting virtual machines
- *Dockerfile - A Dockerfile is a text file containing instructions to build a Docker image, specifying the environment, dependencies, and commands needed to run an application inside a Docker container.
- Docker Image - The basis of a Docker container. Represents a full application Specified via Dockerfiles.
- Docker Container - The standard unit in which the application service resides and executes.
- Docker Engine - Creates, ships and runs Docker containers deployable on a physical or virtual host locally, in a datacenter or cloud service provider.
- Registry Service (Docker Hub or Docker Trusted Registry) - Cloud or server based storage and distribution service for your images
- Resource Efficiency
- Uniformity
- Scalability
- Develop applications that work on any OS
- Easy to share applications among teams
- Easy to scale across multiple servers
- Large applications can be broken into multiple containers - one for each microservice
- Great solution for Cloud Computing
- Big community and library of Docker Images
- Removes Dependency on Infrastructure
- Microservices can be decoupled with different cloud services
Docker Compose is a tool for defining and running multi-container Docker applications. It uses YAML files to configure the services, networks, and volumes needed for the application. With a single command, docker-compose up, it can start and orchestrate the entire application stack. This simplifies development, testing, and deployment by encapsulating dependencies and configurations in a portable manner.
Kubernetes is an open-source container orchestration platform for automating deployment, scaling, and management of containerized applications. It provides features like load balancing, self-healing, and rolling updates. Kubernetes abstracts away the underlying infrastructure, enabling seamless deployment and management across various environments. Its declarative approach allows for efficient resource utilization and scalability in complex microservices architectures.
Feature | Docker Compose | Kubernetes |
---|---|---|
Orchestration | Limited, suitable for single-host setups | Comprehensive, supports multi-host environments |
Scaling | Manual scaling of containers | Automatic scaling based on defined rules |
High Availability | Limited support for high availability | Built-in support for high availability |
Networking | Basic networking features | Advanced networking with service discovery |
Complexity | Simpler setup and usage | Steeper learning curve but more powerful |
- ACLs In ERMrestJS and Chaise
- Facet Examples
- Facets JSON Structure
- Logging
- Model Annotation
- Model-based Logic and Heuristics
- Preformat Annotation Guide
- Export Annotation Guide
- Pseudo-Column Logic & Heuristics
- Table Alternatives
- Intro to Docker
- Chaise Dev Guide
- Dev Onboarding
- ERMrest 101
- ERMrest Howto
- ERMrestJS Dev Guide
- Extend Javascript Array
- Custom CSS guide
- Towards a style guide