SlideShare a Scribd company logo
How 
is using ….
Docker is an open-source 
engine that automates the 
deployment of any 
application as a lightweight, 
portable, self-sufficient 
container that will run 
virtually anywhere.
Great, another 
virtualisation technology?
Guest OS 
Hypervisor 
Host OS 
Server 
Guest OS 
App A 
Bins / Libs 
App B 
Bins / Libs 
Virtual Machines 
App A 
Bins / Libs 
Docker Engine 
Host OS 
Server 
App B 
Bins / Libs 
Docker
Docker is .... 
• Written in GO, originally written in Python 
• A simple CLI and REST-like API to …. 
• LXC (Linux Containers) 
• Namespace - Isolate processes 
• cGroups - Provision resources for processes 
• UnionFS & AUFS Support - For images 
• Linux Containers have been around for years !!
Docker Containers.
Example Dockerfile. 
FROM russmckendrick/base:latest 
MAINTAINER Russ McKendrick <russ.mckendrick@reconnix.com> 
ADD nginx.repo /etc/yum.repos.d/ 
RUN yum -y install nginx mariadb php php-fpm php-mysql php-pdo 
php-devel php-gd php-pecl-memcache php-pspell php-snmp 
php-xmlrpc php-xml python-setuptools && yum clean all 
RUN easy_install pip && pip install "pip>=1.4,<1.5" --upgrade 
&& pip install supervisor 
RUN useradd webserver -u 666 && gpasswd -a webserver apache 
ADD conf-supervisord.conf /etc/supervisord.conf 
ADD default.conf /etc/nginx/conf.d/default.conf 
RUN curl -sS https://getcomposer.org/installer | php && mv 
composer.phar /usr/local/bin/composer 
ADD run /usr/local/bin/ 
RUN chmod +x /usr/local/bin/run 
CMD ["/usr/local/bin/run"] 
bootfs 
Kernel 
Base Image 
russmckendrick/base 
RUN yum -y install 
Image 
RUN easy_install pip 
Image 
Writable 
Container 
Containers, images & AUFS
Docker images can be pulled 
from the following sources. 
• Docker Hub (http://hub.docker.com/) 
• Third party hosts such as quay.io 
• A Private Docker Registry (self hosted) 
• Or build as needed on your host machine 
using Dockerfiles
Launching Containers. 
To launch two containers & 
link them together run: 
docker run -d --name="database" -v /home/containers/database:/var/ 
lib/mysql -e MYSQL_ROOT_PASSWORD=y0Urp455w0rd -e 
MYSQL_DATABASE=wibble -e MYSQL_USER=rah -e 
MYSQL_PASSWORD=y0UrDbP455w0rD russmckendrick/mariadb 
docker run -d -p 80 --name=“webserver” -v /home/containers/web:/ 
var/www/html -e VIRTUAL_HOST=demo.docker.reconnix.com -e 
PHP_POOL=demoapp --link database:db russmckendrick/nginx-php
Can quickly get confusing.
Container Management.
Docker has a large 
Eco System & Community. 
Ansible (http://www.ansible.com/home) | AWS Beanstalk (https://aws.amazon.com/elasticbeanstalk/) 
Blockade (http://blockade.readthedocs.org/en/latest/) | Chef (http://www.getchef.com/) 
Clocker (https://github.com/brooklyncentral/clocker) | Consul (http://www.consul.io/) 
Crane (https://github.com/michaelsauter/crane) | Decking.io (http://decking.io/) | Deis (http://deis.io/) 
Dockerize (https://dockerize.it/) | Dockermix (https://github.com/kstaken/dockermix) 
DockerUI (https://github.com/crosbymichael/dockerui) | Dokku (https://github.com/progrium/dokku/) 
Drydock (https://github.com/xpensia/drydock) | Fig (http://orchardup.github.io/fig/) 
Flynn (http://flynn.io) | Gaudi (https://github.com/marmelab/gaudi) 
GearD (http://openshift.github.io/geard/) | Guardrail (https://www.scriptrock.com/) 
Kubernetes (https://github.com/GoogleCloudPlatform/kubernetes) 
Maestro (https://github.com/toscanini/maestro) | MaestroNG (https://github.com/signalfuse/maestro-ng) 
Octohost (http://www.octohost.io/) | Packer.io (http://www.packer.io) 
Puppet (https://www.puppetlabs.com) | Shipper (https://github.com/mailgun/shipper) 
Shipyard (https://github.com/shipyard/shipyard) | Stackmachine (https://stackmachine.com/) 
Stampede.io (https://github.com/cattleio/stampede) 
Vagrant (https://github.com/welvet/docker_vagrant)
Reconnix needed … 
• Something that was light weight 
• Something which is developer friendly 
• Something which could run anywhere Docker 
is installed
Fig.
Fig … 
• Is a developer friendly wrapper for Docker 
• Provides isolated development environments 
• Can scale up & down with a single command 
• Allows you to ship your configuration 
• Uses an easy to follow syntax which is similar 
to the flags used by Docker, but in a single 
YAML file 
• Has a “run once” feature meaning you can a 
single commands on a Container, useful for 
PHPUnit etc 
• Is now owned by Docker, Inc.
Example fig.yml. 
webserver: 
image: russmckendrick/nginx-php 
volumes: 
- ./web:/var/www/html/ 
ports: 
- 80 
environment: 
PHP_POOL: demoapp 
VIRTUAL_HOST: demo.docker.reconnix.com 
links: 
- databaseserver:db 
databaseserver: 
image: russmckendrick/mariadb 
volumes: 
- ./database:/var/lib/mysql/
Routing Web Traffic.
How do we route web traffic 
in a way which doesn’t 
complicate things? 
• Wildcard DNS e.g. *.docker.reconnix.com 
• A Proxy which automatically configures itself …
To launch a container which acts a http proxy run; 
docker run -d -p 80:80 --name=“router” -v /var/run/ 
docker.sock:/tmp/docker.sock -t russmckendrick/nginx-proxy 
it binds to port 80 & watches for containers 
launching which have the “VIRTUAL_HOST=” 
variable set. When one launches it reconfigures 
NGINX to route to the containers port 80.
Connecting to Containers.
If you need access to the containers there is no need 
to configure SSH. 
“nsenter” & “docker-enter” 
these easily allow you to access the containers via a 
console.
Production.
There are lots of options 
for Production. 
• Replicate development environment on a 
single server or VM 
• Use a Clustered Operating System such as 
CoreOS 
• Run multiple servers with shared storage 
• Run a Galera cluster or DBaaS for database
Example: Legacy Code. 
• Docker image with PHP4 installed 
• CPU & Memory limits put in place 
• Code mounted read-only 
• “Media” directories can be mounted no-exec 
• This means: 
• If hacked, only container exposed 
• Can easily rebuild if needed 
• Very easy to migrate
Demo.
https://reconnix.com/

More Related Content

What's hot

PHP development with Docker
PHP development with DockerPHP development with Docker
PHP development with Docker
Yosh de Vos
 
Rapid Development With Docker Compose
Rapid Development With Docker ComposeRapid Development With Docker Compose
Rapid Development With Docker Compose
Justin Crown
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker Compose
Mario IC
 
Adventures in docker compose
Adventures in docker composeAdventures in docker compose
Adventures in docker compose
LinkMe Srl
 
From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017
Chris Tankersley
 
Running Django on Docker: a workflow and code
Running Django on Docker: a workflow and codeRunning Django on Docker: a workflow and code
Running Django on Docker: a workflow and code
Danielle Madeley
 
Docker Mentorweek beginner workshop notes
Docker Mentorweek beginner workshop notesDocker Mentorweek beginner workshop notes
Docker Mentorweek beginner workshop notes
Sreenivas Makam
 
Continuous integration with Docker and Ansible
Continuous integration with Docker and AnsibleContinuous integration with Docker and Ansible
Continuous integration with Docker and AnsibleDmytro Slupytskyi
 
Docker
DockerDocker
Docker
Cary Gordon
 
Docker Distributed application bundle & Stack - Overview
Docker Distributed application bundle & Stack - Overview Docker Distributed application bundle & Stack - Overview
Docker Distributed application bundle & Stack - Overview
Thomas Chacko
 
Docker in 30 minutes
Docker in 30 minutesDocker in 30 minutes
Docker in 30 minutes
Steve Poole
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
Justyna Ilczuk
 
Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014
André Rømcke
 
Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015
Leonid Mirsky
 
Docker Compose and Panamax - ContainerDays Boston - June 2015
Docker Compose and Panamax - ContainerDays Boston - June 2015Docker Compose and Panamax - ContainerDays Boston - June 2015
Docker Compose and Panamax - ContainerDays Boston - June 2015
Jonas Rosland
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and Symfony
André Rømcke
 
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea LuzzardiWhat's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
Mike Goelzer
 
Docker in production
Docker in productionDocker in production
Docker in production
Mateusz Kutyba
 
Deploying Symfony2 app with Ansible
Deploying Symfony2 app with AnsibleDeploying Symfony2 app with Ansible
Deploying Symfony2 app with Ansible
Roman Rodomansky
 

What's hot (20)

PHP development with Docker
PHP development with DockerPHP development with Docker
PHP development with Docker
 
Rapid Development With Docker Compose
Rapid Development With Docker ComposeRapid Development With Docker Compose
Rapid Development With Docker Compose
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker Compose
 
Adventures in docker compose
Adventures in docker composeAdventures in docker compose
Adventures in docker compose
 
From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017
 
Running Django on Docker: a workflow and code
Running Django on Docker: a workflow and codeRunning Django on Docker: a workflow and code
Running Django on Docker: a workflow and code
 
Docker orchestration
Docker orchestrationDocker orchestration
Docker orchestration
 
Docker Mentorweek beginner workshop notes
Docker Mentorweek beginner workshop notesDocker Mentorweek beginner workshop notes
Docker Mentorweek beginner workshop notes
 
Continuous integration with Docker and Ansible
Continuous integration with Docker and AnsibleContinuous integration with Docker and Ansible
Continuous integration with Docker and Ansible
 
Docker
DockerDocker
Docker
 
Docker Distributed application bundle & Stack - Overview
Docker Distributed application bundle & Stack - Overview Docker Distributed application bundle & Stack - Overview
Docker Distributed application bundle & Stack - Overview
 
Docker in 30 minutes
Docker in 30 minutesDocker in 30 minutes
Docker in 30 minutes
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
 
Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014Dockerize your Symfony application - Symfony Live NYC 2014
Dockerize your Symfony application - Symfony Live NYC 2014
 
Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015Docker orchestration using core os and ansible - Ansible IL 2015
Docker orchestration using core os and ansible - Ansible IL 2015
 
Docker Compose and Panamax - ContainerDays Boston - June 2015
Docker Compose and Panamax - ContainerDays Boston - June 2015Docker Compose and Panamax - ContainerDays Boston - June 2015
Docker Compose and Panamax - ContainerDays Boston - June 2015
 
Getting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and SymfonyGetting instantly up and running with Docker and Symfony
Getting instantly up and running with Docker and Symfony
 
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea LuzzardiWhat's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
What's New in Docker 1.12 (June 20, 2016) by Mike Goelzer & Andrea Luzzardi
 
Docker in production
Docker in productionDocker in production
Docker in production
 
Deploying Symfony2 app with Ansible
Deploying Symfony2 app with AnsibleDeploying Symfony2 app with Ansible
Deploying Symfony2 app with Ansible
 

Similar to How Reconnix Is Using Docker

Docker fundamentals
Docker fundamentalsDocker fundamentals
Docker fundamentals
Alper Unal
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and docker
Fabio Fumarola
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Ricardo Amaro
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for Development
Chris Tankersley
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
Fabio Fumarola
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
msyukor
 
Docker 101 @KACST Saudi HPC 2016
Docker 101  @KACST Saudi HPC 2016Docker 101  @KACST Saudi HPC 2016
Docker 101 @KACST Saudi HPC 2016
Walid Shaari
 
Docker+java
Docker+javaDocker+java
Docker+java
DPC Consulting Ltd
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
Ben Hall
 
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on AzureDocker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Patrick Chanezon
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
Ben Hall
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ElasTest Project
 
Docker Networking - Boulder Linux Users Group (BLUG)
Docker Networking - Boulder Linux Users Group (BLUG)Docker Networking - Boulder Linux Users Group (BLUG)
Docker Networking - Boulder Linux Users Group (BLUG)
Dan Mackin
 
Docker DANS workshop
Docker DANS workshopDocker DANS workshop
Docker DANS workshop
vty
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
Ben Hall
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Van Phuc
 
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Patrick Chanezon
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
Arun prasath
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant Ricardo Amaro
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
Erica Windisch
 

Similar to How Reconnix Is Using Docker (20)

Docker fundamentals
Docker fundamentalsDocker fundamentals
Docker fundamentals
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and docker
 
Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant Automate drupal deployments with linux containers, docker and vagrant
Automate drupal deployments with linux containers, docker and vagrant
 
Killer Docker Workflows for Development
Killer Docker Workflows for DevelopmentKiller Docker Workflows for Development
Killer Docker Workflows for Development
 
2 Linux Container and Docker
2 Linux Container and Docker2 Linux Container and Docker
2 Linux Container and Docker
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
 
Docker 101 @KACST Saudi HPC 2016
Docker 101  @KACST Saudi HPC 2016Docker 101  @KACST Saudi HPC 2016
Docker 101 @KACST Saudi HPC 2016
 
Docker+java
Docker+javaDocker+java
Docker+java
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
 
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on AzureDocker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
 
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and JenkinsExpoQA 2017 Using docker to build and test in your laptop and Jenkins
ExpoQA 2017 Using docker to build and test in your laptop and Jenkins
 
Docker Networking - Boulder Linux Users Group (BLUG)
Docker Networking - Boulder Linux Users Group (BLUG)Docker Networking - Boulder Linux Users Group (BLUG)
Docker Networking - Boulder Linux Users Group (BLUG)
 
Docker DANS workshop
Docker DANS workshopDocker DANS workshop
Docker DANS workshop
 
Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)Running Docker in Development & Production (DevSum 2015)
Running Docker in Development & Production (DevSum 2015)
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
 
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
 
Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment Docker - Demo on PHP Application deployment
Docker - Demo on PHP Application deployment
 
Drupalcamp es 2013 drupal with lxc docker and vagrant
Drupalcamp es 2013  drupal with lxc docker and vagrant Drupalcamp es 2013  drupal with lxc docker and vagrant
Drupalcamp es 2013 drupal with lxc docker and vagrant
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
 

Recently uploaded

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 

Recently uploaded (20)

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 

How Reconnix Is Using Docker

  • 2. Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.
  • 4. Guest OS Hypervisor Host OS Server Guest OS App A Bins / Libs App B Bins / Libs Virtual Machines App A Bins / Libs Docker Engine Host OS Server App B Bins / Libs Docker
  • 5. Docker is .... • Written in GO, originally written in Python • A simple CLI and REST-like API to …. • LXC (Linux Containers) • Namespace - Isolate processes • cGroups - Provision resources for processes • UnionFS & AUFS Support - For images • Linux Containers have been around for years !!
  • 7. Example Dockerfile. FROM russmckendrick/base:latest MAINTAINER Russ McKendrick <russ.mckendrick@reconnix.com> ADD nginx.repo /etc/yum.repos.d/ RUN yum -y install nginx mariadb php php-fpm php-mysql php-pdo php-devel php-gd php-pecl-memcache php-pspell php-snmp php-xmlrpc php-xml python-setuptools && yum clean all RUN easy_install pip && pip install "pip>=1.4,<1.5" --upgrade && pip install supervisor RUN useradd webserver -u 666 && gpasswd -a webserver apache ADD conf-supervisord.conf /etc/supervisord.conf ADD default.conf /etc/nginx/conf.d/default.conf RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer ADD run /usr/local/bin/ RUN chmod +x /usr/local/bin/run CMD ["/usr/local/bin/run"] bootfs Kernel Base Image russmckendrick/base RUN yum -y install Image RUN easy_install pip Image Writable Container Containers, images & AUFS
  • 8. Docker images can be pulled from the following sources. • Docker Hub (http://hub.docker.com/) • Third party hosts such as quay.io • A Private Docker Registry (self hosted) • Or build as needed on your host machine using Dockerfiles
  • 9. Launching Containers. To launch two containers & link them together run: docker run -d --name="database" -v /home/containers/database:/var/ lib/mysql -e MYSQL_ROOT_PASSWORD=y0Urp455w0rd -e MYSQL_DATABASE=wibble -e MYSQL_USER=rah -e MYSQL_PASSWORD=y0UrDbP455w0rD russmckendrick/mariadb docker run -d -p 80 --name=“webserver” -v /home/containers/web:/ var/www/html -e VIRTUAL_HOST=demo.docker.reconnix.com -e PHP_POOL=demoapp --link database:db russmckendrick/nginx-php
  • 10. Can quickly get confusing.
  • 12. Docker has a large Eco System & Community. Ansible (http://www.ansible.com/home) | AWS Beanstalk (https://aws.amazon.com/elasticbeanstalk/) Blockade (http://blockade.readthedocs.org/en/latest/) | Chef (http://www.getchef.com/) Clocker (https://github.com/brooklyncentral/clocker) | Consul (http://www.consul.io/) Crane (https://github.com/michaelsauter/crane) | Decking.io (http://decking.io/) | Deis (http://deis.io/) Dockerize (https://dockerize.it/) | Dockermix (https://github.com/kstaken/dockermix) DockerUI (https://github.com/crosbymichael/dockerui) | Dokku (https://github.com/progrium/dokku/) Drydock (https://github.com/xpensia/drydock) | Fig (http://orchardup.github.io/fig/) Flynn (http://flynn.io) | Gaudi (https://github.com/marmelab/gaudi) GearD (http://openshift.github.io/geard/) | Guardrail (https://www.scriptrock.com/) Kubernetes (https://github.com/GoogleCloudPlatform/kubernetes) Maestro (https://github.com/toscanini/maestro) | MaestroNG (https://github.com/signalfuse/maestro-ng) Octohost (http://www.octohost.io/) | Packer.io (http://www.packer.io) Puppet (https://www.puppetlabs.com) | Shipper (https://github.com/mailgun/shipper) Shipyard (https://github.com/shipyard/shipyard) | Stackmachine (https://stackmachine.com/) Stampede.io (https://github.com/cattleio/stampede) Vagrant (https://github.com/welvet/docker_vagrant)
  • 13. Reconnix needed … • Something that was light weight • Something which is developer friendly • Something which could run anywhere Docker is installed
  • 14. Fig.
  • 15. Fig … • Is a developer friendly wrapper for Docker • Provides isolated development environments • Can scale up & down with a single command • Allows you to ship your configuration • Uses an easy to follow syntax which is similar to the flags used by Docker, but in a single YAML file • Has a “run once” feature meaning you can a single commands on a Container, useful for PHPUnit etc • Is now owned by Docker, Inc.
  • 16. Example fig.yml. webserver: image: russmckendrick/nginx-php volumes: - ./web:/var/www/html/ ports: - 80 environment: PHP_POOL: demoapp VIRTUAL_HOST: demo.docker.reconnix.com links: - databaseserver:db databaseserver: image: russmckendrick/mariadb volumes: - ./database:/var/lib/mysql/
  • 18. How do we route web traffic in a way which doesn’t complicate things? • Wildcard DNS e.g. *.docker.reconnix.com • A Proxy which automatically configures itself …
  • 19. To launch a container which acts a http proxy run; docker run -d -p 80:80 --name=“router” -v /var/run/ docker.sock:/tmp/docker.sock -t russmckendrick/nginx-proxy it binds to port 80 & watches for containers launching which have the “VIRTUAL_HOST=” variable set. When one launches it reconfigures NGINX to route to the containers port 80.
  • 21. If you need access to the containers there is no need to configure SSH. “nsenter” & “docker-enter” these easily allow you to access the containers via a console.
  • 23. There are lots of options for Production. • Replicate development environment on a single server or VM • Use a Clustered Operating System such as CoreOS • Run multiple servers with shared storage • Run a Galera cluster or DBaaS for database
  • 24. Example: Legacy Code. • Docker image with PHP4 installed • CPU & Memory limits put in place • Code mounted read-only • “Media” directories can be mounted no-exec • This means: • If hacked, only container exposed • Can easily rebuild if needed • Very easy to migrate
  • 25. Demo.