Simple steps to Docker for Developers: Part 1.

Every conference, Developers gathering I attend this passed 2-3 years, the word "Docker" is on everyone's lips: from CxO to Junior Developers and even CS students and Science Fair High School Participants. 

I also notice a lot of confusion and uncertainty about what "Docker"  really is. What is the purpose of Docker. How to start with Docker? 

My focus here is exclusively on Windows-based developers. 

So, What is Docker? Lets get it from the mouth of the horse himself: 

Docker is The Modern Platform for 

High-Velocity Innovation

The "Only independent container platform that enables organizations to seamlessly build, share and run any application, anywhere—from hybrid cloud to the edge."

Solomon Hykes started Docker in France (2013 ?) as an internal project within dotCloud, a platform-as-a-service company, with initial contributions by other dotCloud engineers including Andrea Luzzardi and Francois-Xavier Bourlet.

Docker is a collection of interoperating software-as-a-service and platform-as-a-service offerings that employ operating-system-level virtualization to cultivate development and delivery of software inside standardized software packages called containers. The software that hosts the containers is called Docker Engine. 

Okay, let me repeat myself: Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package.
How to start using Docker for Development?

It started out running only on Linux and some of us in the windows world were temporarily sidelined! But no more.

For those of us who have been on Windows 7 for the past two years, it was and of course a very clumsy process to have Docker to run on Windows 7/8: you had to use the "Docker Toolbox" and perform extra configurations, etc. It was essentially installing a Linux VM through Oracle VirtualBox and other stuffs.

That also is gone with Windows 10. Phew!!! Now, you can setup docker on Windows 10 with the "Docker for Windows".

Step 1: Navigate to https://www.docker.com/products/developer-tools and read all you can.

Step 2: Create your Docker Hub account at https://hub.docker.com/  (not required to do your Docker-oriented development, but what do you have to loose?), it will help you upload and download docker images and other goodies. 

Step 3: Download Docker for Window from https://docs.docker.com/docker-for-windows/
The best way to learn is by doing! 

Step 4: When successfully downloaded and installed, you get the following nice screen. Look for the whale symbol in your system tray.


Now, get PowerShell. Every developer should have PowerShell understanding, even a rudimentary one. And if you are contemplating Tech Lead, DevOps Engineer or other Technical Roles in today's Development landscape, get a working knowledge of PowerShell.

Again, not required to do your Docker Development stuff, but just a bonus I wanted to through in here.

Step 4:  Fire up a PowerShell command prompt (Make sure you have Version 5.0 minimum installed). Remember, you don't need Linux/Unix shell absolutely to play with those systems, just PowerShell Core 6 (Open source and run every where!). 

PowerShell Core 6.0 is a new edition of PowerShell that is cross-platform (Windows, macOS, and Linux), open-source, and built for heterogeneous environments and the hybrid cloud.

So head over to https://github.com/powershell/powershell to get the latest and greatest. 
Anyway, enough of PowerShell, head over to 
for the PowerShell Documentation.

Step 5: Start Docker (ing)! Everything starts with "Docker"

Don't know what you are looking for? Just type docker --help and voila!

Usage: docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default
                           "C:\\Users\\rawamba\\.docker")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level
                           ("debug"|"info"|"warn"|"error"|"fatal")
                           (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "C:\\Users\\rawamba\\.docker\\ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "C:\\Users\\rawamba\\.docker\\cert.pem")
      --tlskey string      Path to TLS key file (default
                           "C:\\Users\\rawamba\\.docker\\key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  attach      Attach local standard input, output, and error streams to a running 

container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save       Save one or more images to a tar archive (streamed to STDOUT by default)
  search    Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.







Comments

Popular posts from this blog

Why can't Microsoft install IIS on Window Operating Systems by default?

Exam 70-487: Accessing Data - How to choose the Appropriate Data Access Technology - Entity Framework?

Exam 70-487: Accessing Data - How to choose the Appropriate Data Access Technology - Azure Cosmos DB?