Вы находитесь на странице: 1из 28

Forloop/Abuja

containers and
virtualization tools
(Docker)
Imo Inyang
Full Stack Developer @
Reimnet
@imo_inyang on twitter
imo@reimnet.com
What is Virtualization?
virtualization refers to the act of creating
a virtual (rather than actual) version of
something, including virtual computer
hardware platforms, operating systems,
storage devices, and computer network
resources.
VM Virtual Machines
-Hypervisor and Vagrant

Containers
-Docker introduction
---Basic Setup and usage
Virtual Machines

A VM is essentially an emulation of a
real computer that executes programs
like a real computer. VMs run on top of
a physical machine using a hypervisor.
A hypervisor, in turn, runs on either a
host machine or on bare-metal.
Virtual Machines
hypervisor
A hypervisor is a software, firmware, or
hardware that VMs run on top of. The
hypervisors themselves run on physical
computers, referred to as the host
machine. The host machine provides the
VMs with resources, including RAM and
CPU. These resources are divided between
VMs and can be distributed as you see fit.
Type 1 hypervisor
Type 1 hypervisor (also called a bare metal
hypervisor) is installed directly on physical
host server hardware just like an operating
system. Type 1 hypervisors run on dedicated
hardware. They require a management
console and are used in data centers.

Examples
Oracle OVM for SPARC, ESXi, Hyper-V and
KVM.
Type 2 hypervisor
hosted hypervisor, is a virtual machine
manager that is installed as a software
application on an existing operating system
(OS).

Examples
VMware Fusion, Oracle Virtual Box, Oracle
VM for x86, Solaris Zones, Parallels and
VMware Workstation
Containers

Unlike a VM which provides


hardware virtualization, a container
provides operating-system-level
virtualization by abstracting the
user space. Youll see what I mean
as we unpack the term container.
Containers
What is the Difference
Containers and VMs?

Containers share the host systems kernel


with other containers.
Docker

Docker is an open-source project


based on Linux containers. It uses
Linux Kernel features like
namespaces and control groups to
create containers on top of an
operating system.
Before Docker
Google has been using their own
container technology for years.
Others Linux container technologies
include Solaris Zones, BSD jails,
and LXC, which have been around
for many years.

So why Docker?
Why Docker?

1. Ease of use: Docker has made it much



easier for anyonedevelopers, systems admins,
take advantage of
architects and othersto
containers in order to quickly build and test portable
applications.
The mantra is: build once, run anywhere.
Why Docker?

2. Speed: Docker containers are very lightweight and


fast. Since containers are just sandboxed
environments running on the kernel, they take up
fewer resources. You can create and run a Docker
container in seconds, compared to VMs which might
take longer because they have to boot up a full
virtual operating system every time.
Why Docker?
3. Docker Repository: Docker users also
benefit from the increasingly rich ecosystem
of Docker Hub, which you can think of as an
Github for Docker images.

Docker Hub has tens of thousands of public


images created by the community that are
readily available for use. Its incredibly easy to
search for images that meet your needs, ready
to pull down and use with little-to-no
modification.
Why Docker?

4. Modularity and Scalability: Docker


makes it easy to break out your
applications functionality into individual
containers.

This is needed in todays world of micro


services
Concept of Docker
Concept of Docker
Docker Engine
Docker engine is the layer on which Docker runs. Its
a lightweight runtime and tooling that manages
containers, images, builds, and more. It runs natively
on Linux systems and is made up of:

1. A Docker Daemon that runs in the host computer.


2. A Docker Client that then communicates with the
Docker Daemon to execute commands.
3. A REST API for interacting with the Docker
Daemon remotely.
Docker Images
Simply the blueprint of a docker application

Docker Container
This are real instances of an application Created from docker
images

Docker Daemon
Build, run and distributes docker containers

Docker Client
Docker on our local mechine - Think of it as the UI for Docker.

Docker Hub
A repository for docker images ( github for docker)
Dockerfile
A Dockerfile is where you write the instructions to build a
Docker image. These instructions can be:
RUN apt-get y install some-package: to install a software
package
EXPOSE 8000: to expose a port
ENV ANT_HOME /usr/local/apache-ant to pass an
environment variable
and so forth. Once youve got your Dockerfile set up, you can
use the docker build command to build an image from it.
Heres an example of a Dockerfile:
Installing Docker

Visit
https://docs.docker.com/engin
e/installation/
Docker Commands
Docker run <image>
Docker start <name | id >

Docker stop <name | id >

docker ps list all running containers


Docker ps -a include stopped

containers
Docker rm <name | id >

. docker build build docker image


docker network inspect bridge
Docker Network information
Test Commands
docker inspect {CID} | grep IPAddress | grep -v null| cut
-d '"' -f 4 | head -1
Get docker container ip

docker build -t reimo/static-forloop . //build docker image

docker run -d --name forloop1 -p 8087:80 reimo/static-


forloop //run docker image
Running Docker Image

docker run reimo/forloop


The comend above will download and run reimo/forloop
image from docker hub.

Flags
Docker accepts upto 4 or more flags per command

Flags Value

Run with flags


--name Container name(
your choice }
docker run --name
-d Null ( run
container in the forloophome -d -p 8900:80
background )
-p Port ( external
reimo/forloop
port to container
port 8900:80 )
Resources
https://docs.docker.com/
https://hub.docker.com/ - get docker images
Youtube
Google is your friend on this one !
End
Thanks for your time hope it was worth it?
If you think I can help, reach me via
imo@reimnet.com or @imo_inyang on twitter

Вам также может понравиться