Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Play With Docker

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Play With Docker

Slides for my talk at Digital Ocean meetup in Pune on 24/06/2017
- Getting started with Docker with some live examples.
- Understand the Docker Build-Ship-Run flow.
- Docker UI (Portainer)
- Docker Compose
- Docker Machine demo
- play-with-docker

Avatar for Karim Memon

Karim Memon

June 24, 2017
Tweet

Other Decks in Programming

Transcript

  1. DOCKER: BUILD $ echo "<? phpinfo(); ?>" > index.php Source

    Code Dockerfile Building Docker Image
  2. DOCKER: BUILD FROM php:7.0-apache COPY index.php /var/www/html/ $ echo "<?

    phpinfo(); ?>" > index.php Source Code Dockerfile Building Docker Image
  3. 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
  4. DOCKER: SHIP [HAVELI MODE] # EXPORT $ docker save dobyexample/php-info-demo

    > dobyexample-php-info-demo.tar # IMPORT $ docker load < dobyexample-php-info-demo.tar
  5. DOCKER COMPOSE: MULTI CONTAINER $ docker pull redis $ docker

    build -t web . $ docker run -d —name=db redis
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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!
  13. 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
  14. QA