SlideShare a Scribd company logo
1 of 88
Download to read offline
@giltayar
Docker and the Path to a Better
Staging Environment
Gil Tayar (@giltayar)
June 2018
https://github.com/giltayar/docker-and-the-path
1
@giltayar
Staging Environments
2
@giltayar
Staging Environments
● The environment where the application is deployed to,
prior to deployment in production
● Also used prior to integrating code between teams
● Usually one environment, but can be more
● And, unfortunately…
3
@giltayar
Almost, but not quite, entirely unlike
production
(apologies to Douglas Adams)
4
@giltayar
Staging Environments
● Built using a combination of chewing gum and baling wire
● Not maintained as well as the production environment
● Not the same deployment procedure
● Not the same production infrastructure
5
@giltayar
And this is where we test...
6
@giltayar@giltayar
About Me ● My developer experience goes all the way
back to the ‘80s.
● Am, was, and always will be a developer
● Testing the code I write is my passion
● Currently evangelist and architect @
Applitools
● We deliver Visual Testing tools:
If you’re serious about testing, checkout
Applitools Eyes
● Sometimes my arms bend back
● But the gum I like is coming back in style
@giltayar
7
@giltayar
8
@giltayar
Revolution!
9
@giltayar
Revolution in...
● How apps are developed
● How apps are tested
● How apps are deployed to production
10
@giltayar
This Talk
● What Docker is
● How to use it with Docker-compose
● How to use it with Kubernetes
● How to build a production and staging
environment with it
11
@giltayar
Put your seatbelt on,
it’s going to be a wild
and technical ride
12
@giltayar
End Goal
● Run our application in a staging environment using
Docker
● Simple application:
○ MongoDB database
○ Blogging web application (frontend and backend)
13
@giltayar
How would we run Mongo in a staging environment?
● Install it on one of the machines in Staging
or…
● Build a VM image that includes Mongodb, and run it on AWS, VMware…
14
@giltayar
Problematic
● Installing:
○ Automated install scripts are not easy
● VM image:
○ We can run two!
○ Not easy building the image
○ Start time is minutes.
○ But it’s the better option.
15
@giltayar
Virtual Hardware
The VM Option
Blog app
VM1
mongodb
VM2
Operating System Operating System
Hypervisor (AWS, Vmware, Hyper-V…)
Virtual Hardware
Hardware
16
@giltayar
The Docker Option
Blog app
Docker Container 1
mongodb
Process Isolation Process Isolation
Operating System
Hardware
Docker Container 2
17
@giltayar
Let’s Run MongoDB under
Docker
18
@giltayar
Dockerfile
FROM ubuntu
WORKDIR /data
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y
RUN apt-get install -q -y mongodb
RUN mkdir -p /data/db
EXPOSE 27017
CMD ["mongod"]
● An image is a frozen container
● A template for docker containers
● Set of instructions that is run in
the container:
● Runs the base image (FROM)
● Executes the RUN-s
(using WORKDIR and ENV)
● Adds some metadata to container
(CMD, EXPOSE)
● Freezes the result into a docker
image
19
@giltayar
Building the docker image
docker build . -t mymongo
Where the files are
Tag the image with a
name
20
@giltayar
Running a container
$ docker run mymongo
The image to run
21
@giltayar
Yay! It’s working
MongoDB
Process Isolation
27017
Operating System
Hardware
Docker Container 1
22
@giltayar
Connecting to mongo via mongo client
$ mongo
23
@giltayar
Why isn’t it connecting? (Docker and TCP Ports)
MongoDB
Process Isolation
27017
Mongo Client
27017
Operating System
Hardware
Docker Container 1
24
@giltayar
Running a container with port mapping
docker run -d -p 27017:27017 mymongo
Host Port
Container Port
Detached
25
@giltayar
This is what port mapping looks like
MongoDB
Process Isolation
27017 Mongo Client
Operating System
Hardware
Docker Container 1
27017
26
@giltayar
Connecting with Mongo Client
$ mongo
> db.users.save({username: 'giltayar', name: 'Gil Tayar'})
> db.users.find()
{ "_id" : ObjectId("5abf3d2bdef8a36d505d3732"), "a" : 1 }
27
@giltayar
And… it’s connecting!
MongoDB
Process Isolation
27017 Mongo Client
Operating System
Hardware
Docker Container 1
27017
28
@giltayar
Connecting with Mongo Client
$ mongo
> db.users.save({username: 'giltayar', name: 'Gil Tayar'})
> db.users.find()
{ "_id" : ObjectId("5abf3d2bdef8a36d505d3732"), "a" : 1 }
29
@giltayar
Running another Mongo container
$ docker run -d -p 7017:27017 mymongo
$ mongo localhost:7017
> db.users.save({username: 'giltayar', name: 'Gil Tayar'})
> db.users.find()
{ "_id" : ObjectId("5abf3d2bdef8a36d505d3732"), "a" : 1 }
Use a different host
port
30
@giltayar
Two containers, different host ports
MongoDB
Process Isolation
27017
Mongo Client
Docker Container 1
27017
MongoDB
Process Isolation
27017
Docker Container 2
7017
31
@giltayar
Maintenance of Docker Containers
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
6e33d46a915c mymongo "mongod" Less than a second ago Up 1 second 0.0.0.0:27017->27017/tcp
44ce252702e6 mymongo "mongod" 9 seconds ago Up 11 seconds 0.0.0.0:7017->27017/tcp
$ docker rm 6e33d46a915c
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
44ce252702e6 mymongo "mongod" 9 seconds ago Up 11 seconds 0.0.0.0:7017->27017/tcp
32
@giltayar
Let’s Run The Blog App
33
@giltayar
Running the Blog App Locally
$ cd ../blog-app-example
$ npm install
$ npm run build:frontend
$ npm run dev
34
@giltayar
Running the Blog App
MongoDB
Process Isolation
27017 Blog App
Operating System
Hardware
Docker Container 1
27017
3000
35
@giltayar
Dockerfile
FROM node
WORKDIR app
ENV NODE_ENV=production
COPY . .
RUN npm install --production
EXPOSE 3000
CMD ["node", "src/app.js"]
● “node” is an image that already has
NodeJS installed
○ Thousands of these pre-built
images in hub.docker.com.
● COPY copies from host directory into
docker directory
36
@giltayar
Building the Blog App
$ cd ../blog-app-example
$ npm run build:frontend
$ docker build . -t myblog
37
@giltayar
$ docker run -t -p 3000:3000 giltayar/blog-app-example
...
Error: secret should be set
at module.exports (.../index.js:21:42)
at Object.<anonymous> (/app/src/routes/auth.js:14:13)
Running the App
38
@giltayar
Twelve Factor Apps
● A set of rules on how to run modern web apps
● Apply extremely well to docker apps
● Rule #3: Store config in the environment
● The blog app is a 12-factor app
● We have to pass:
○ A SECRET environment variable
○ a MONGODB_URI environment variable
For more information: https://12factor.net
39
@giltayar
$ docker run -t -p 3000:3000 
-e SECRET=shhhh 
-e MONGODB_URI=localhost:27017 
giltayar/blog-app-example
...
Error: connect ECONNREFUSED 127.0.0.1:27017
at Object._errnoException (util.js:1003:13)
Running the App
Environment variable
So I can Ctrl+C
40
@giltayar
localhost in a container refers to the container itself
MongoDB
Process Isolation
27017
Docker Container 1
27017
Blog App
Process Isolation
3000
Docker Container 2
3000
localhost:27017
41
@giltayar
MongoDB
Process Isolation
27017
mymongo
Blog App
Process Isolation
3000
Docker Container 2
3000
mymongo:27017
What if we could create one network?
42
@giltayar
Running the App in a network
$ docker network create mynet
$ docker run -d 
--network=mynet 
--name=mongo 
mymongo
$ docker run -t -p 3000:3000 
-e SECRET=shhhh -e MONGODB_URI=mongo:27017
--network=mynet 
myblog
Join the network
Use this name
43
@giltayar
Running the same app twice
$ docker network create mynet
$ docker run -d --network=mynet --name=mongo mymongo
$ docker run -d -p 3000:3000 --network=mynet 
-e SECRET=shhhh -e MONGODB_URI=mongo:27017 myblog
$ docker network create mynet2
$ docker run -d --network=mynet2 --name=mongo2 mymongo
$ docker run -d -p 3001:3000 --network=mynet2 
-e SECRET=shhhh -e MONGODB_URI=mongo2:27017 myblog
44
@giltayar
Let’s try them...
http://localhost:3000
http://localhost:3001
45
@giltayar
MongoDB
Process Isolation
mymongo
Blog App
Process Isolation
3000
Docker Container 2
3000
MongoDB
Process Isolation
mymongo
Blog App
Process Isolation
3000
Docker Container 2
3001
Ephemeral Staging Environments!
46
@giltayar
What if there was an even simpler way to run
multiple containers?
47
@giltayar
Docker Compose!
48
@giltayar
Docker Compose
● Write a file (docker-compose.yml)
● The file declares all the containers and the connections between them
● Then just “run” the docker composition
Let’s do it!
49
@giltayar
docker-compose.yml
version: '3'
services:
mongo:
image: mymongo
blog:
image: myblog
environment:
SECRET: shhh
MONGODB_URI: mongo:27017
ports:
- "3000:3000"
50
@giltayar
Running it
$ docker-compose up
or…
$ docker-compose up -d
51
@giltayar
Trying it
http://localhost:3000
52
@giltayar
$ docker-compose stop
or…
$ docker-compose down
Killing it
53
@giltayar
Can we run two instances of a docker-compose?
● Yes, but we need to take care not to use the same host port.
● Time, alas, does not permit me to show you the details
● You can check the git repo for the full information
54
@giltayar
OK, This is cool
But what has this got to do with Staging?
55
@giltayar
docker-compose
● Enables you to run the whole application locally
● Does not run your application in a staging
environment…
● … or in production
56
@giltayar
So whadda we do?
57
@giltayar
58
@giltayar
59
@giltayar
Kubernetes is docker-compose for production
60
@giltayar
Kubernetes
● Like Docker-compose:
○ Also uses docker containers to run services
○ Can also deploy easily using a set of declarative files
○ Easy to use
● But better:
○ Can deploy multiple services to multiple computers
○ Self-heals itself
○ Robust enough to be used in production
61
@giltayar
kubectl
62
@giltayar
Minikube (or… it might as well have been in the cloud)
Minikube VM
This laptop
kubectl
63
@giltayar
apiVersion: apps/v1
kind: Deployment
metadata:
name: myblog
spec:
selector:
matchLabels:
app: myblog
replicas: 1
template:
metadata:
labels:
app: myblog
myblog.yml
spec:
containers:
- name: myblog
image: myblog
ports:
- containerPort: 3000
env:
- name: MONGODB_URI
value: 'mymongo:27017'
- name: SECRET
value: 'shhhhhh'
64
@giltayar
Let’s “apply” the yml to the Kubernetes cluster
$ kubectl apply -f myblog-1.yml
deployment "myblog" created
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myblog-56589c8f7f-xdlgz 0/1 ErrImagePull 0 5s
65
@giltayar
Why the “ErrImagePull” Error?
Minikube VM
This laptop
mymongo
myblog
Local docker registry
ubuntu
node
...
Global docker registry
@hub.docker.com
pull
66
@giltayar
Why the “ErrImagePull” Error?
Minikube VM
This laptop
mymongo
myblog
Local docker registry
ubuntu
node
giltayar/mymongo
giltayar/myblog
...
Global docker registry
@hub.docker.com
push
pull
67
@giltayar
So let’s push our images to the global docker registry
$ docker tag myblog giltayar/myblog
$ docker push giltayar/myblog
$ docker tag mymongo giltayar/mymongo
$ docker push giltayar/mymongo
68
@giltayar
apiVersion: apps/v1
kind: Deployment
metadata:
name: myblog
spec:
selector:
matchLabels:
app: myblog
replicas: 1
template:
metadata:
labels:
app: myblog
myblog.yml (fixed)
spec:
containers:
- name: myblog
image: giltayar/myblog
ports:
- containerPort: 3000
env:
- name: MONGODB_URI
value: 'mymongo:27017'
- name: SECRET
value: 'shhhhhh'
69
@giltayar
Let’s reapply...
$ kubectl apply -f myblog-2.yml
$ kc get pods
NAME READY STATUS RESTARTS AGE
myblog-6b4567d975-h89g6 0/1 CrashLoopBackOff 3 3m
$ kc logs myblog-6b4567d975-h89g6
...
Error: getaddrinfo ENOTFOUND mymongo mymongo:27017
70
@giltayar
apiVersion: apps/v1
kind: Deployment
metadata:
name: mymongo
spec:
selector:
matchLabels:
app: mymongo
replicas: 1
template:
metadata:
labels:
app: mymongo
mymongo.yml
spec:
containers:
- name: mymongo
image: giltayar/mymongo
ports:
- containerPort: 27017
71
@giltayar
Let’s apply the mongo yml
$ kubectl apply -f mymongo.yml
$ kc get pods
NAME READY STATUS RESTARTS AGE
myblog-6b4567d975-h89g6 0/1 Error 6 7m
mymongo-67b9bd8c7f-87j2j 1/1 Running 0 2m
$ kc logs myblog-6b4567d975-h89g6
...
Error: getaddrinfo ENOTFOUND mymongo mymongo:27017
72
@giltayar
Same Problem. Why?
● Because in docker-compose,
the name of the service is also the way to discover it
● In kubernetes, a deployment is just a set of containers.
○ Not discoverable
● To “discover” pods, create a Kubernetes Service
73
@giltayar
Pods are not discoverable
mymongo
myblog
myblog
myblog
K8s Cluster
74
@giltayar
We need a service
mymongo
myblog
myblog
myblog
mymongo-service
K8s Cluster
75
@giltayar
mymongo-service.yml
kind: Service
apiVersion: v1
metadata:
name: mymongo-service
spec:
selector:
app: mymongo
ports:
- protocol: TCP
targetPort: 27017
port: 27017
76
@giltayar
apiVersion: apps/v1
kind: Deployment
metadata:
name: myblog
spec:
selector:
matchLabels:
app: myblog
replicas: 1
template:
metadata:
labels:
app: myblog
myblog.yml (fixed again)
spec:
containers:
- name: myblog
image: giltayar/myblog
ports:
- containerPort: 3000
env:
- name: MONGODB_URI
value:
'mymongo-service:27017'
- name: SECRET
value: 'shhhhhh'
77
@giltayar
And now applying...
$ kubectl apply -f mymongo-service.yml
service "mymongo-service" created
$ kubectl apply -f myblog.yml
deployment "myblog" configured
$ kc get pods
NAME READY STATUS RESTARTS AGE
myblog-566ccc499c-sx8cf 1/1 Running 0 2m
mymongo-67b9bd8c7f-87j2j 1/1 Running 0 14m
78
@giltayar
Blog is running. Can we access it?
● No! It’s just a set of containers.
● We need a service.
● But this time, the service needs to be
accessible from outside the cluster!
79
@giltayar
We need a service
mymongo
myblog
myblog
myblog
mymongo-service
K8s Cluster
myblog-service
80
@giltayar
kind: Service
apiVersion: v1
metadata:
name: myblog-service
spec:
selector:
app: myblog
ports:
- protocol: TCP
targetPort: 3000
port: 3000
type: NodePort # this is how you enable access from outside
myblog-service.yml
81
@giltayar
And now applying...
$ kubectl apply -f myblog.yml
service "myblog-service" created
$ kubectl apply -f myblog.yml
deployment "myblog" configured
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
myblog-service NodePort 10.109.42.144 <none> 3000: 31489/TCP
mymongo-service ClusterIP 10.103.150.100 <none> 27017/TCP
82
@giltayar
And now we try it...
$ minikube ip
192.168.64.8
http://192.168.64.8:31489/
83
@giltayar
And it works!
● And the same deployment procedure will work in production...
84
@giltayar
$ kubectl create namespace blog1
$ kubectl -n blog1 apply -f 
mymongo.yml,
Mymongo-service.yml,
myblog.yml,
myblog-service.yml
Let’s create another parallel environment
85
@giltayar
Summary
● The long journey…
● Running individual containers using docker
● Running environments locally using docker-compose
● Running environments in a production environment
using Kubernetes
86
@giltayar
This is how you build your staging environment:
● Docker images built by developers…
● … and deployed into Kubernetes clusters
87
@giltayar
Thank You!
@giltayar
https://github.com/giltayar/docker-and-the-path
88

More Related Content

What's hot

Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐KAI CHU CHUNG
 
Hiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceHiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceJesse Vincent
 
Gradle - time for another build
Gradle - time for another buildGradle - time for another build
Gradle - time for another buildIgor Khotin
 
Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!Stacy Devino
 
うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-kyon mm
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejugrobbiev
 
Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Soshi Nemoto
 
Dgeni documentation generator
Dgeni   documentation generatorDgeni   documentation generator
Dgeni documentation generatorPeter Darwin
 
The world of gradle - an introduction for developers
The world of gradle  - an introduction for developersThe world of gradle  - an introduction for developers
The world of gradle - an introduction for developersTricode (part of Dept)
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new buildIgor Khotin
 
Continous delivery with sbt
Continous delivery with sbtContinous delivery with sbt
Continous delivery with sbtWojciech Pituła
 
Gradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionGradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionSchalk Cronjé
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin WritingSchalk Cronjé
 
The Ring programming language version 1.7 book - Part 75 of 196
The Ring programming language version 1.7 book - Part 75 of 196The Ring programming language version 1.7 book - Part 75 of 196
The Ring programming language version 1.7 book - Part 75 of 196Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202Mahmoud Samir Fayed
 
Custom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerCustom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerGaryCoady
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeedYonatan Levin
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Schalk Cronjé
 

What's hot (20)

Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
 
Hiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret SauceHiveminder - Everything but the Secret Sauce
Hiveminder - Everything but the Secret Sauce
 
Gradle - time for another build
Gradle - time for another buildGradle - time for another build
Gradle - time for another build
 
Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!
 
Gradle in 45min
Gradle in 45minGradle in 45min
Gradle in 45min
 
うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-うさぎ組 in G* WorkShop -うさみみの日常-
うさぎ組 in G* WorkShop -うさみみの日常-
 
JavaScript on the Desktop
JavaScript on the DesktopJavaScript on the Desktop
JavaScript on the Desktop
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejug
 
Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)
 
Dgeni documentation generator
Dgeni   documentation generatorDgeni   documentation generator
Dgeni documentation generator
 
The world of gradle - an introduction for developers
The world of gradle  - an introduction for developersThe world of gradle  - an introduction for developers
The world of gradle - an introduction for developers
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
 
Continous delivery with sbt
Continous delivery with sbtContinous delivery with sbt
Continous delivery with sbt
 
Gradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 versionGradle in 45min - JBCN2-16 version
Gradle in 45min - JBCN2-16 version
 
Basic Gradle Plugin Writing
Basic Gradle Plugin WritingBasic Gradle Plugin Writing
Basic Gradle Plugin Writing
 
The Ring programming language version 1.7 book - Part 75 of 196
The Ring programming language version 1.7 book - Part 75 of 196The Ring programming language version 1.7 book - Part 75 of 196
The Ring programming language version 1.7 book - Part 75 of 196
 
The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202The Ring programming language version 1.8 book - Part 77 of 202
The Ring programming language version 1.8 book - Part 77 of 202
 
Custom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerCustom deployments with sbt-native-packager
Custom deployments with sbt-native-packager
 
A friend in need - A JS indeed
A friend in need - A JS indeedA friend in need - A JS indeed
A friend in need - A JS indeed
 
Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016Idiomatic Gradle Plugin Writing - GradleSummit 2016
Idiomatic Gradle Plugin Writing - GradleSummit 2016
 

Similar to Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar

Perspectives on Docker
Perspectives on DockerPerspectives on Docker
Perspectives on DockerRightScale
 
Docker Introduction.pdf
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdfOKLABS
 
Build and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes worldBuild and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes worldJorge Morales
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline Docker, Inc.
 
Swarm: Native Docker Clustering
Swarm: Native Docker ClusteringSwarm: Native Docker Clustering
Swarm: Native Docker ClusteringRoyee Tager
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tipsSamuel Chow
 
Docker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps ChicagoDocker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps Chicagobridgetkromhout
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to productionmuayyad alsadi
 
[Gstar 2013] Unity Security
[Gstar 2013] Unity Security[Gstar 2013] Unity Security
[Gstar 2013] Unity SecuritySeungmin Shin
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned RightScale
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020CloudHero
 
Azure from scratch part 5 By Girish Kalamati
Azure from scratch part 5 By Girish KalamatiAzure from scratch part 5 By Girish Kalamati
Azure from scratch part 5 By Girish KalamatiGirish Kalamati
 
Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013Opersys inc.
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortalsHenryk Konsek
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 

Similar to Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar (20)

Perspectives on Docker
Perspectives on DockerPerspectives on Docker
Perspectives on Docker
 
Securité des container
Securité des containerSecurité des container
Securité des container
 
Docker Introduction.pdf
Docker Introduction.pdfDocker Introduction.pdf
Docker Introduction.pdf
 
Build and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes worldBuild and run applications in a dockerless kubernetes world
Build and run applications in a dockerless kubernetes world
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Swarm: Native Docker Clustering
Swarm: Native Docker ClusteringSwarm: Native Docker Clustering
Swarm: Native Docker Clustering
 
Learning Docker with Thomas
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with Thomas
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tips
 
Docker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps ChicagoDocker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps Chicago
 
JOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to ProductionJOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to Production
 
Techtalks: taking docker to production
Techtalks: taking docker to productionTechtalks: taking docker to production
Techtalks: taking docker to production
 
[Gstar 2013] Unity Security
[Gstar 2013] Unity Security[Gstar 2013] Unity Security
[Gstar 2013] Unity Security
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020Docker Essentials Workshop— Innovation Labs July 2020
Docker Essentials Workshop— Innovation Labs July 2020
 
Azure from scratch part 5 By Girish Kalamati
Azure from scratch part 5 By Girish KalamatiAzure from scratch part 5 By Girish Kalamati
Azure from scratch part 5 By Girish Kalamati
 
Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013Android Platform Debugging and Development at ELCE 2013
Android Platform Debugging and Development at ELCE 2013
 
Docker for mere mortals
Docker for mere mortalsDocker for mere mortals
Docker for mere mortals
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
DOCKER-PIAIC-SLIDES
DOCKER-PIAIC-SLIDESDOCKER-PIAIC-SLIDES
DOCKER-PIAIC-SLIDES
 

More from Applitools

Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...Applitools
 
Visual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UIVisual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UIApplitools
 
A Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureA Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureApplitools
 
Add AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and CuriosityAdd AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and CuriosityApplitools
 
The Future of AI-Based Test Automation
The Future of AI-Based Test AutomationThe Future of AI-Based Test Automation
The Future of AI-Based Test AutomationApplitools
 
Test Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed TeamsTest Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed TeamsApplitools
 
Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?Applitools
 
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityTriple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityApplitools
 
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing TeamsNavigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing TeamsApplitools
 
Introducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdfIntroducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdfApplitools
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
Collaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing CentraCollaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing CentraApplitools
 
What the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the FutureWhat the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the FutureApplitools
 
Getting Started with Visual Testing
Getting Started with Visual TestingGetting Started with Visual Testing
Getting Started with Visual TestingApplitools
 
Workshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with CypressWorkshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with CypressApplitools
 
From Washing Cars To Automating Test Applications
From Washing Cars To Automating Test ApplicationsFrom Washing Cars To Automating Test Applications
From Washing Cars To Automating Test ApplicationsApplitools
 
A Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous DeliveryA Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous DeliveryApplitools
 
AI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser TestingAI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser TestingApplitools
 
Workshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with JavascriptWorkshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with JavascriptApplitools
 

More from Applitools (20)

Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
Streamlining Your Tech Stack: A Blueprint for Enhanced Efficiency and Coverag...
 
Visual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UIVisual AI for eCommerce: Improving Conversions with a Flawless UI
Visual AI for eCommerce: Improving Conversions with a Flawless UI
 
A Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the FutureA Test Automation Platform Designed for the Future
A Test Automation Platform Designed for the Future
 
Add AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and CuriosityAdd AI to Your SDLC, presented by Applitools and Curiosity
Add AI to Your SDLC, presented by Applitools and Curiosity
 
The Future of AI-Based Test Automation
The Future of AI-Based Test AutomationThe Future of AI-Based Test Automation
The Future of AI-Based Test Automation
 
Test Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed TeamsTest Automation at Scale: Lessons from Top-Performing Distributed Teams
Test Automation at Scale: Lessons from Top-Performing Distributed Teams
 
Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?Can AI Autogenerate and Run Automated Tests?
Can AI Autogenerate and Run Automated Tests?
 
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and FunctionalityTriple Assurance: AI-Powered Test Automation in UI Design and Functionality
Triple Assurance: AI-Powered Test Automation in UI Design and Functionality
 
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing TeamsNavigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
Navigating the Challenges of Testing at Scale: Lessons from Top-Performing Teams
 
Introducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdfIntroducing the Applitools Self Healing Execution Cloud.pdf
Introducing the Applitools Self Healing Execution Cloud.pdf
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Collaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing CentraCollaborating From Design To Experience: Introducing Centra
Collaborating From Design To Experience: Introducing Centra
 
What the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the FutureWhat the QA Position Will Look Like in the Future
What the QA Position Will Look Like in the Future
 
Getting Started with Visual Testing
Getting Started with Visual TestingGetting Started with Visual Testing
Getting Started with Visual Testing
 
Workshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with CypressWorkshop: Head-to-Head Web Testing: Part 1 with Cypress
Workshop: Head-to-Head Web Testing: Part 1 with Cypress
 
From Washing Cars To Automating Test Applications
From Washing Cars To Automating Test ApplicationsFrom Washing Cars To Automating Test Applications
From Washing Cars To Automating Test Applications
 
A Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous DeliveryA Holistic Approach to Testing in Continuous Delivery
A Holistic Approach to Testing in Continuous Delivery
 
AI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser TestingAI-Powered-Cross-Browser Testing
AI-Powered-Cross-Browser Testing
 
Workshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with JavascriptWorkshop: An Introduction to API Automation with Javascript
Workshop: An Introduction to API Automation with Javascript
 

Recently uploaded

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 

Recently uploaded (20)

Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 

Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar