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

Play With Docker

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

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