Docker for Development: Getting Started Lisa H. Ridley Savas Labs - PowerPoint PPT Presentation
Docker for Development: Getting Started Lisa H. Ridley Savas Labs DrupalCamp Chattanooga November 5, 2016 Who am I? Lisa Ridley, Director of Client Success, Savas Labs Lead Developer and Project Manager Automated Testing Champion
Docker for Development: Getting Started Lisa H. Ridley Savas Labs DrupalCamp Chattanooga November 5, 2016
Who am I? Lisa Ridley, Director of Client Success, Savas Labs • Lead Developer and Project Manager • Automated Testing Champion (Unit, Functional, User Acceptance, Visual Regression) • drupal.org: lhridley • twitter: lhridley • GitHub: github.com/lhridley & github.com/codementality • LInkedIn: https://www.linkedin.com/in/lisahridley • Blog: http://savaslabs.com/blog/ 2
What is your development environment? Development Environment # users MAMP / WAMP / Locally installed LAMP/LEMP Stack 10 Vagrant / VMWare / Parallels / VirtualBox — Virtual Machines 6 Remote server 4 Docker / Containers 3 Other 0 3
What is Docker? • Automates the deployment of applications in software containers • Operating system abstraction layer • Open Source Project (May 2013) 4
What is a Docker software container • An isolated user-space instance — that contains a complete application with all dependencies and components needed to run properly • Shares the underlying O/S kernel • Looks and feels like a real server 5 5
What does that look like? Container Container Container Application Application Application Binaries / Libraries Binaries / Libraries Binaries / Libraries Docker Engine Host Operating System Infrastructure 6
Containers vs. Virtual Machines App App App App App App Bins/Libs Bins/Libs Bins/Libs Bins/Libs Bins/Libs Bins/Libs Guest O/S Guest O/S Guest O/S Docker Engine Hypervisor Host Operating System Host Operating System Infrastructure Infrastructure Virtual Machine Containers 7
Containers vs. Virtual Machines App App App Bins/Libs Bins/Libs Bins/Libs Docker Engine Host Operating System Infrastructure Virtual Machine Containers 7
Containers vs. Virtual Machines App App App App App App Libraries and Binaries Bins/Libs Bins/Libs Bins/Libs Guest Operating System Docker Engine Hypervisor Host Operating System Host Operating System Infrastructure Infrastructure Virtual Machine Containers 7
As a Developer, how does this benefit me? 8
Benefits of Containerization • Development environment consists of components • Components can be swapped as needed for different clients / applications • If production environment is containerized, deployment is as simple as dropping a completed application in a fully tested container on the production server 9
Containers as components Apache Client App Container Container v1 MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10
Containers as components • Applications are isolated Apache Client App Container Container v1 MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10
Containers as components • Applications are isolated Apache Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10
Containers as components • Applications are isolated Client App Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 5.6 Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data Container Container PHP 7.0 Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container Memcached PHP 7.0 Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish Apache Solr Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish ElasticSearch Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v1 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Container • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10
Containers as components • Applications are isolated NGinX Client App Container Container v2 • Reconfiguration is painless MySQL Client Data …Really painless Container Container PHP 7.0 Redis • Updates are simplified Container Container Varnish ElasticSearch Selenium Container Container Container Docker Engine 10
Docker Stack Configuration (docker-compose) version: '2' services: web: db: domainname: local.hptn.org container_name: hptn_db hostname: local.hptn.org image: mysql:5.5.47 container_name: local.hptn.org volumes: ports: - ./docker/mysql:/etc/mysql/conf.d/ - '443:443' - mysql-data:/var/lib/mysql - '80:80' environment: environment: MYSQL_DATABASE: 'hptn_docker' - RUN_AS_UID=1000 MYSQL_ROOT_PASSWORD: 'root' - GH_TOKEN - IMGUR_API_KEY ports: image: savaslabs/hptn-web:1.6 - '33308:3306' depends_on: selenium: - db container_name: hptn_selenium - memcached image: selenium/standalone-firefox:2.53.0 volumes: volumes: - ./docker/hptn-web/drupal:/conf - /dev/shm:/dev/shm - ./docker/hptn-web/php:/etc/php5 volumes: memcached: mysql-data: container_name: hptn_memcached driver: local image: memcached:1.4.21 environment: - MEMCACHED_MEMORY_LIMIT=128 11
How can I get started using Docker for development • Install the Docker Engine (Linux), Docker for Windows, or Docker for Mac • Install Docker Compose (Linux) • Create a docker-compose.yml file with your stack configuration • Execute docker-compose up -d 12
Projects to jumpstart your development efforts • Docker For Drupal (docker4drupal.org) • Docker based development environment (drupal.org), https://www.drupal.org/node/2736447 • https://github.com/peperoni60/drupal-docker • Tons more on Github, pick your flavor • Docker Hub: https://hub.docker.com • Docker Sync (for OS X) (http://docker-sync.io/) 13
Questions? 14
Recommend
More recommend
Explore More Topics
Stay informed with curated content and fresh updates.