XieResearchGroup
  • About the Group
  • HPC Environments
    • Summary of HPCs
      • DGX (Group)
      • DLS (Department)
      • Dragon (Group)
    • HPC User Guide (Must Read)
      • Overall Workflow
      • Connect to HPCs
      • User Directories
      • Run Jobs
      • Data Backup
  • Useful Tutorials
    • Linux Tutorial
      • Linux Commands
    • Docker Tutorial
      • Intro to Docker
      • Intro to NVIDIA Docker
      • Use Docker for Deep Learning
      • Docker Useful Commands
    • Jupyter Notebook Tutorial
      • Run Jupyter Server with GPU Access on HPCs
    • HTCondor Tutorial
      • Introduction of HTCondor
      • Quick Start Guide
      • Submitting Vanilla Job
      • Submitting Docker Job
      • HTCondor Useful Commands
    • Better Deep Learning
      • Better Training
      • Better Generalization
      • Better Prediction
    • About Graph Neural Networks
    • Data Preprocessing
      • Untitled
      • Untitled
  • Contribute to the Wiki
Powered by GitBook
On this page
  • About Containers
  • Comparing Containers and Virtual Machines

Was this helpful?

  1. Useful Tutorials
  2. Docker Tutorial

Intro to Docker

PreviousDocker TutorialNextIntro to NVIDIA Docker

Last updated 2 years ago

Was this helpful?

Docker is an open-source project for automating the deployment of applications as portable, self-sufficient containers that can run on the cloud or on-premises. Docker is also a company that promotes and evolves this technology. Docker works in collaboration with cloud, Linux, and Windows vendors.

Official website of Docker:

On the DGX and DLS machines, we actually use the NVIDIA Docker to get the GPU support for deep learning researches.

About Containers

A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment.

Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.

Comparing Containers and Virtual Machines

Containers and virtual machines have similar resource isolation and allocation benefits, but function differently because containers virtualize the operating system instead of hardware. Containers are more portable and efficient.

CONTAINERS

Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space. Containers take up less space than VMs (container images are typically tens of MBs in size), and start almost instantly.

VIRTUAL MACHINES

Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers. The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, one or more apps, necessary binaries and libraries - taking up tens of GBs. VMs can also be slow to boot.

https://www.docker.com/