This slide is just for beginner journey with docker who are eager to learn docker but don't know where to start or how it works. In here I am trying to explain every basic things of docker as simple as possible.
3. WHY WE NEED DOCKER
When comes to deploy app in server
we have to install various resources or
packages for the app configuration.
On the other side you have another
team build a app under node js,
maybe you hire a freelancer who
would make app by php but another
version and so on …
4. If you install all of this requirement
in a single server high chances for
app crashes.
But on the other hand, your
developer might say it's all fault for
the person who has responsible for
deployment.
7. 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
deploy it as one package.
WHAT CAN IT DO
8. By doing so, thanks to the container, the
developer can rest assured that the
application will run on any other Linux
machine regardless of any customized
settings that machine might have that
could differ from the machine used for
writing and testing the code.
Source: https://opensource.com/resources/what-docker
WHAT CAN IT DO
9. It's like a virtual machine but
really a virtual machine. Its
virtualize the application using
same kernel making isolated
environment.
How it can perform
12. BUT I AM STILL CONFUSED
WHY I NEED THIS
Scenario 1
Maybe you have a which run php 5.5
and you have php 5.5 installed in your
system. Suddenly your supervisor asks
you to deploy a laravel 5.6 app which
supports php 7.1
But you can’t update php version your
existing might have stop working or your
apache lib might stop working.
13. BUT I AM STILL CONFUSED
WHY I NEED THIS
Scenario 2
Maybe your application is not working
with other application because both
application share same network
configuration, same port number etc
14. BUT I AM STILL CONFUSED
WHY I NEED THIS
Scenario 3
Maybe your DevOps team have little
knowledge about code or the platform
you used in your application.
15. BUT I AM STILL CONFUSED
WHY I NEED THIS
Scenario 4
Maybe DevOps team don't have that
much time for deploying app from
scratch.
16. BUT I AM STILL CONFUSED
WHY I NEED THIS
Above all of this problem scenario has
one solution and that is docker.
18. Q1. So it's more like Virtual
machine, right? If not what
is the difference between
docker and virtual
machine.
Ans. No, it's not like virtual
machine. Discussion in next
slide...
24. > docker run <image_name>
RUN
To start image it start with
docker run
> docker run ubuntu
Example
25. > docker run <image_name>:10
Version
Also specify the version of
the image
> docker run node:10
Example
26. > docker run -it <image_name>:10
I/O
You can use I/O by
specify the -it
> docker run -it ubuntu /bin/bash
Example
27. > docker run -p 8080:8000 <image_name>:10
Port mapping
You can use port
mapping by specify port
Local_port: Docker_port
> docker run -it ubuntu /bin/bash
Example
28. Volume mapping
You can map volume to source code to
container source code
> docker run -p 3306:3306 mysql -v opt/dataDir:/var/lib/mysql
30. > docker run -d -p 8080:8000 <image_name>
Run app detach mode
You will run application in
background mode by using -d
> docker run -d -p 8080:8080 web_app
Example
31. > docker run <image_name> php artisan serve
Run command inside image
Run bash command after the
image name
> docker run web_app php artisan serve
Example
32. > docker run -h
Others option
You can get others command by
using --help after docker run
> docker run -h
Example
35. It's like a instruction file for building
image. Like if want to deploy an app,
you have to run many bash
command to install package and
extensions.
36. It looks like this. Where all the instruction
written.
Also there have certain requirement for
write this file.
You can find this from HERE
Dockerfile
38. Docker Compose
By docker compose you can write
multiple services. Also you can easily
link one service to another service.
Learn more about docker compose
from here.
Also if confused about Docker
compose and Dockerfile Click here for
more detailed information.
40. package.json
Make a package.json file
and add this code to
there.
{
"name": "docker_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "First Last",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.1"
}
}
41. server.js
Make a server.js file
and add this code
to there.
'use strict';
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(PORT, HOST);
console.log(`Running http://${HOST}:${PORT}`);
42. Dockerfile
Make a Dockerfile
file and add this
code to there.
FROM node:10
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json
AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]