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
--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
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
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
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
Post a Comment