PLAY WITH DOCKER
KARIM MEMON@abdulkarim_me
TABLE OF GYAAN
DOCKER
DOCKER COMPOSE
DOCKER MACHINE
PLAY-WITH-DOCKER.COM
RESOURCES
TABLE OF GYAAN
DOCKER
DOCKER COMPOSE
DOCKER MACHINE
PLAY-WITH-DOCKER.COM
RESOURCES
DOCKER: MIND MAP
DOCKER
DOCKER
BUILD
DOCKER
BUILD
SHIP
DOCKER
BUILD
SHIP
RUN
DOCKER
https://www.architectgroup.com/docs/docker/_images/info-6.png
DOCKER: BUILD
$ echo "<? phpinfo(); ?>" > index.php
Source Code
Dockerfile
Building Docker Image
DOCKER: BUILD
FROM php:7.0-apache
COPY index.php /var/www/html/
$ echo "<? phpinfo(); ?>" > index.php
Source Code
Dockerfile
Building Docker Image
DOCKER: BUILD
FROM php:7.0-apache
COPY index.php /var/www/html/
$ echo "<? phpinfo(); ?>" > index.php
$ docker build -t dobyexample/php-info-demo .
Source Code
Dockerfile
Building Docker Image
DOCKER: SHIP
$ docker login --username=kn330
$ docker push dobyexample/php-info-demo
DOCKER: SHIP [HAVELI MODE]
DOCKER: SHIP [HAVELI MODE]
# EXPORT
DOCKER: SHIP [HAVELI MODE]
# EXPORT
$ docker save dobyexample/php-info-demo >
dobyexample-php-info-demo.tar
DOCKER: SHIP [HAVELI MODE]
# EXPORT
$ docker save dobyexample/php-info-demo >
dobyexample-php-info-demo.tar
# IMPORT
DOCKER: SHIP [HAVELI MODE]
# EXPORT
$ docker save dobyexample/php-info-demo >
dobyexample-php-info-demo.tar
# IMPORT
$ docker load < dobyexample-php-info-demo.tar
DOCKER: RUN
$ docker run -d -p 8080:80 --name phpinfo dobyexample/php-info-demo
DOCKER: TIP
$ docker run -d 
-v “/var/run/docker.sock:/var/run/docker.sock” 
-p 9000:9000 
portainer/portainer
TABLE OF GYAAN
DOCKER
DOCKER COMPOSE
DOCKER MACHINE
PLAY-WITH-DOCKER.COM
RESOURCES
DOCKER COMPOSE
DOCKER COMPOSE
DEFINING AND RUNNING MULTI-CONTAINER DOCKER
APPLICATIONS
DOCKER COMPOSE: MULTI CONTAINER
DOCKER COMPOSE: MULTI CONTAINER
$ docker pull redis
DOCKER COMPOSE: MULTI CONTAINER
$ docker pull redis
$ docker build -t web .
DOCKER COMPOSE: MULTI CONTAINER
$ docker pull redis
$ docker build -t web .
$ docker run -d —name=db redis
DOCKER COMPOSE: MULTI CONTAINER
$ docker pull redis
$ docker build -t web .
$ docker run -d —name=db redis
$ docker run -d --link db:db -p 3000:80 web python app.py
DOCKER COMPOSE: MULTI CONTAINER
$ docker pull redis
$ docker build -t web .
$ docker run -d —name=db redis
$ docker run -d --link db:db -p 3000:80 web python app.py
MULTI CONTAINER APPLICATIONS ARE BITTER
DOCKER COMPOSE: MULTI CONTAINER
$ docker pull redis
$ docker build -t web .
$ docker run -d —name=db redis
$ docker run -d --link db:db -p 3000:80 web python app.py
MULTI CONTAINER APPLICATIONS ARE BITTER
WE NEED SIMPLER WAY TO DEFINE AND MANAGE

MULTI CONTAINER APPLICATIONS
DOCKER COMPOSE: MULTI CONTAINER
DOCKER COMPOSE: YAML
DOCKER COMPOSE: YAML
$ docker pull mysql
$ docker pull wordpress
$ docker run -d --name=db

-e MYSQL_ROOT_PASSWORD=root

mysql
$ docker run --name=wp -p
8000:80 --link db:db -e
WORDPRESS_DB_HOST=db -e
WORDPRESS_DB_PASSWORD=root
wordpress
DOCKER COMPOSE: YAML
$ docker pull mysql
$ docker pull wordpress
$ docker run -d --name=db

-e MYSQL_ROOT_PASSWORD=root

mysql
$ docker run --name=wp -p
8000:80 --link db:db -e
WORDPRESS_DB_HOST=db -e
WORDPRESS_DB_PASSWORD=root
wordpress
version: '2'
services:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
wp:
depends_on:
- db
image: wordpress
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_PASSWORD: root
DOCKER COMPOSE: YAML
$ docker pull mysql
$ docker pull wordpress
$ docker run -d --name=db

-e MYSQL_ROOT_PASSWORD=root

mysql
$ docker run --name=wp -p
8000:80 --link db:db -e
WORDPRESS_DB_HOST=db -e
WORDPRESS_DB_PASSWORD=root
wordpress
version: '2'
services:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
wp:
depends_on:
- db
image: wordpress
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_PASSWORD: root
$ docker-compose up
DOCKER COMPOSE: YAML
$ docker pull mysql
$ docker pull wordpress
$ docker run -d --name=db

-e MYSQL_ROOT_PASSWORD=root

mysql
$ docker run --name=wp -p
8000:80 --link db:db -e
WORDPRESS_DB_HOST=db -e
WORDPRESS_DB_PASSWORD=root
wordpress
version: '2'
services:
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
wp:
depends_on:
- db
image: wordpress
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_PASSWORD: root
$ docker-compose up
SO MUCH WIN!
TABLE OF GYAAN
DOCKER
DOCKER COMPOSE
DOCKER MACHINE
PLAY-WITH-DOCKER.COM
RESOURCES
DOCKER MACHINE
DOCKER MACHINE
MANGAE DOCKER HOSTS
DOCKER MACHINE
MANGAE DOCKER HOSTS
LOCAL
DOCKER MACHINE
MANGAE DOCKER HOSTS
LOCAL
STD
DOCKER MACHINE
MANGAE DOCKER HOSTS
LOCAL
ISD
STD
DOCKER MACHINE
$ docker-machine create -d digitalocean --digitalocean-access-token=xx staging
$ eval "$(docker-machine env staging)”
$ docker run -d -p 8080:80 --name phpinfo-app dobyexample/php-info-demo
TABLE OF GYAAN
DOCKER
DOCKER COMPOSE
DOCKER MACHINE
PLAY-WITH-DOCKER.COM
RESOURCES
PLAY-WITH-DOCKER
training.play-with-docker.com
QA
RESOURCES
https://docs.docker.com/get-started/#prerequisites
http://training.play-with-docker.com/helloworld/
https://docs.docker.com/compose/rails/
https://docs.docker.com/compose/django/
https://github.com/docker/labs/blob/master/windows/readme.md
https://github.com/docker/machine
https://dobyexample.gitbooks.io/docker-101-dobyexample/content/chapter-5/

Play With Docker