0% found this document useful (0 votes)
120 views

Introduction To Docker: Alexander González

The document introduces Docker by explaining that it provides standardized packaging for software applications and dependencies through containers that isolate applications and share the same operating system kernel, and it outlines the Docker workflow of building, shipping, and running containerized applications using images and commands like docker build, docker run, and docker compose.

Uploaded by

Ñă Đîä
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
120 views

Introduction To Docker: Alexander González

The document introduces Docker by explaining that it provides standardized packaging for software applications and dependencies through containers that isolate applications and share the same operating system kernel, and it outlines the Docker workflow of building, shipping, and running containerized applications using images and commands like docker build, docker run, and docker compose.

Uploaded by

Ñă Đîä
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 28

Introduction to Docker

Alexander González {Microsoft Student Partner}


[email protected]
Agenda
Section 1: Section 3:
What is Docker
What is Docker Not Networking
Basic Docker Commands
Dockerfiles

Section 2: Section 4:

Anatomy of a Docker image Docker compose / stacks


Docker volumes
Demo
FIRST OF ALL!

App A App A

Maquina programador/Entorno desarrollo Servidor/Entorno producción


Section 1:
What is Docker
Basic Docker Commands
Dockerfiles
What is a container?
• Standardized packaging for
software and
dependencies
• Isolate apps from each
other
• Share the same OS kernel
• Works for all major Linux
distributions
• Containers native to Windows
Server 2016
The Role of Images and Containers

D o c ke r I m a g e D o c ke r Container

E xa m p l e : U b u ntu with N od e. j s a n d C re a t e d b y u s i n g a n i m a ge . R u n s
A p p l i ca ti o n C o d e you r applicati on.
Docker containers are NOT VMs
• Easy connection to make
• Fundamentally different architectures
• Fundamentally different benefits

Maquina Virtual Contenedores

7
Docker Containers Versus Virtual Machines
App 1 App 2

B i n s / L i bs B i n s / L i bs

App 1 App 2
Gu est O S Gu est O S

Bins/Libs Bins/Libs

Hyp e r v i s o r D o c ke r E n g i n e

Ho st O p e rati n g Sy s te m Ho st O p e rati n g Sy s te m

Virtual Machines D o c ke r Conta in ers


• Li ght w eig ht , open, secure platform
• S im pli f y building, shipping, running
W h a t Is D o c ke r ?
apps
• R u n s natively o n L i n u x or W i n d o w s
S e rv er
• R u n s o n W i n d o w s or Mac
D e v e l o p m e n t m ac hine s (with a
virtual m ac hin e)
• Relies o n " i m a g e s " a n d
"containers"
Using Docker: Build, Ship, Run Workflow
Developers IT Operations

BUILD SHIP RUN


Development Environments Create & Store Images Deploy, Manage, Scale

10
Some Docker vocabulary
Docker Image
The basis of a Docker container. Represents a full application

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(Public) or Docker Trusted


Registry(Private))
11 Cloud or server based storage and distribution service for your images
Basic Docker Commands
$ docker image pull node:latest

$ docker image ls
$ docker container run –d –p 5000:5000 –-name node node:latest

$ docker container ps

$ docker container stop node(or <container id>)

$ docker container rm node (or <container id>)

$ docker image rmi (or <image id>)

$ docker build –t node:2.0 .

$ docker image push node:2.0

$ docker --help
Dockerfile – Linux Example
• Instructions on
how to build a
Docker image

• Looks very similar


to “native”
commands

• Important to
optimize your
Dockerfile
14
Section 2:
Anatomy of a Docker Container
Docker Volumes
Volume Use Cases
Let’s Go Back to Our Dockerfile

15
Each Dockerfile Command Creates a Layer


EXPOSE

COPY

WORKDIR

RUN

FROM

Kernel

16
Docker Image Pull: Pulls Layers

17
Docker Volumes
• Volumes mount a directory on the host into the container at a specific location

• Can be used to share (and persist) data between containers


• Directory persists after the container is deleted
• Unless you explicitly delete it

• Can be created in a Dockerfile or via CLI

18
Why Use Volumes
• Mount local source code into a running container

docker container run -v


$(pwd):/usr/src/app/ myapp

• Improve performance
− As directory structures get complicated traversing the tree can slow system
performance

• Data persistence

19
Section 3:
Networking
What is Docker Bridge Networking
Docker host Docker host

Cntnr 1 Cntnr 2 Cntnr 3 Cntnr 4 Cntnr 5 Cntnr 6 Cntnr 7

bridgenet1 bridgenet2 bridgenet3

docker network create -d bridge --name bridgenet1

21
Docker Bridge Networking and Port Mapping

Docker host 1
Host port Container port
Cntnr1

10.0.0.8 :80
$ docker container run -p 8080:80 ...

Bridge

172.14.3.55 :8080

L2/L3 physical network

22
Section 4:
Docker Compose
Docker Compose: Multi Container Applications

• Build and run one container at a time • Define multi container app in compose.yml file
• Manually connect containers together • Single command to deploy entire app
• Must be careful with dependencies and start • Handles container dependencies
up order • Works with Docker Swarm, Networking,
Volumes, Universal Control Plane

49
Docker Compose: Multi Container Applications

version: '2' # specify docker-compose version

# Define the services/containers to be run


services:
angular: # name of the first service
build: client # specify the directory of the Dockerfile
ports:
- "4200:4200" # specify port forewarding

express: #name of the second service


build: api # specify the directory of the Dockerfile
ports:
- "3977:3977" #specify ports forewarding

database: # name of the third service


image: mongo # specify image to build container from
ports:
- "27017:27017" # specify port forewarding
Docker Compose: Scale Container
Applications
Demo
Angular Node.js/Express Mongo DB

You might also like