SlideShare uma empresa Scribd logo
1 de 95
Baixar para ler offline
Docker for Ruby
Developers
NYC.rb, August 2015
Frank Macreery
CTO, Aptible
@fancyremarker
https://speakerdeck.com/fancyremarker
Docker
What’s it all about?
Docker
Containers: The new virtual machines?
https://www.docker.com/whatisdocker
Then: Virtual Machines
https://www.docker.com/whatisdocker
https://www.docker.com/whatisdocker
Now: Containers
https://www.docker.com/whatisdocker
Getting Started with
Docker
boot2docker
Kitematic
Getting Started with
Docker
Install boot2docker via

http://boot2docker.io/#installation

echo 'eval "$(boot2docker shellinit)"' >> ~/.bashrc
Getting Started with
Docker
Alternatively (if you have Homebrew and
VirtualBox installed)…



brew install boot2docker
brew install docker
Getting Started with
Docker
Images and containers
docker pull quay.io/aptible/nginx:latest
docker pull quay.io/aptible/nginx:latest
Reference to a Docker image
docker pull quay.io/aptible/nginx:latest
Image "repositories" can have many
"tags"
docker pull quay.io/aptible/nginx:latest
Pulls an image from a Docker
"registry"
A single
Docker image
consists of
many "layers"
docker images
docker run -d -p 80:80 -p 443:443 
quay.io/aptible/nginx:latest
docker run -d -p 80:80 -p 443:443 
quay.io/aptible/nginx:latest
Launches a new container from an
existing image
docker run -d -p 80:80 -p 443:443 
quay.io/aptible/nginx:latest
Forward container ports to the
host (host port:container port)
docker run -d -p 80:80 -p 443:443 
quay.io/aptible/nginx:latest
Run container in background
docker ps
Simplifying SOA
Service-oriented architectures without the
complexity
Dev/prod parity?
What makes dev/prod
parity so hard?
What makes dev/prod
parity so hard?
1 production deployment, many development/
staging environments
What makes dev/prod
parity so hard?
SOA simplifies each service’s responsibilities,
but often at the cost of additional deployment
complexity
What makes dev/prod
parity so hard?
The more services you have, the harder it is to
achieve dev/prod parity
What makes dev/prod
parity so hard?
The more engineers you have, the harder it is to
standardize dev parity
README != Automation
Dev/prod parity via Docker
Dev/prod parity via Docker
Define services in terms of Docker images
# docker-compose.yml for Aptible Auth/API
auth:
build: auth.aptible.com/
ports: "4000:4000"
links:
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_auth_development
api:
build: api.aptible.com/
ports: "4001:4001"
links:
- redis
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_api_development
REDIS_URL: redis://redis
APTIBLE_AUTH_ROOT_URL: http://docker:4000
redis:
image: quay.io/aptible/redis:latest
ports: "6379:6379"
postgresql:
image: quay.io/aptible/postgresql:aptible-seeds
ports: "5432:5432"
# docker-compose.yml for Aptible Auth/API
auth:
build: auth.aptible.com/
ports: "4000:4000"
links:
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_auth_development
api:
build: api.aptible.com/
ports: "4001:4001"
links:
- redis
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_api_development
REDIS_URL: redis://redis
APTIBLE_AUTH_ROOT_URL: http://docker:4000
redis:
image: quay.io/aptible/redis:latest
ports: "6379:6379"
postgresql:
image: quay.io/aptible/postgresql:aptible-seeds
ports: "5432:5432"
# docker-compose.yml for Aptible Auth/API
auth:
build: auth.aptible.com/
ports: "4000:4000"
links:
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_auth_development
api:
build: api.aptible.com/
ports: "4001:4001"
links:
- redis
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_api_development
REDIS_URL: redis://redis
APTIBLE_AUTH_ROOT_URL: http://docker:4000
redis:
image: quay.io/aptible/redis:latest
ports: "6379:6379"
postgresql:
image: quay.io/aptible/postgresql:aptible-seeds
ports: "5432:5432"
# docker-compose.yml for Aptible Auth/API
auth:
build: auth.aptible.com/
ports: "4000:4000"
links:
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_auth_development
api:
build: api.aptible.com/
ports: "4001:4001"
links:
- redis
- postgresql
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://postgresql/aptible_api_development
REDIS_URL: redis://redis
APTIBLE_AUTH_ROOT_URL: http://docker:4000
redis:
image: quay.io/aptible/redis:latest
ports: "6379:6379"
postgresql:
image: quay.io/aptible/postgresql:aptible-seeds
ports: "5432:5432"
Dev/prod parity via Docker
Use the same service/image configuration in
production as in development (Docker
Compose, Swarm, Kubernetes…)
Containerized SSL
Infrastructure management made easy
Elastic Load Balancer (ELB)
EC2 Instance EC2 Instance
NGiNX NGiNX
TCP/HTTPSTCP/HTTPS
HTTP HTTP
How to configure NGiNX with
multiple dynamic upstreams?
Chef?

Salt?

Ansible?
ENV configuration
$UPSTREAM_SERVERS
docker run -d -p 80:80 -p 443:443 
-e UPSTREAM_SERVERS=docker:4000,docker:4001 
quay.io/aptible/nginx:latest
docker run -d -p 80:80 -p 443:443 
-e UPSTREAM_SERVERS=docker:4000,docker:4001 
quay.io/aptible/nginx:latest
ENV configuration
Makes testing easier
https://github.com/sstephenson/bats
# Dockerfile
# Install and configure NGiNX...
# ...
ADD test /tmp/test
RUN bats /tmp/test
https://github.com/aptible/docker-nginx
Image: quay.io/aptible/nginx
#!/usr/bin/env bats
# /tmp/test/nginx.bats
@test "It should accept a list of UPSTREAM_SERVERS" {
simulate_upstream
UPSTREAM_SERVERS=localhost:4000 wait_for_nginx
run curl localhost 2>/dev/null
[[ "$output" =~ "Hello World!" ]]
}
#!/usr/bin/env bats
# /tmp/test/nginx.bats
@test "It should accept a list of UPSTREAM_SERVERS" {
simulate_upstream
UPSTREAM_SERVERS=localhost:4000 wait_for_nginx
run curl localhost 2>/dev/null
[[ "$output" =~ "Hello World!" ]]
}
@test "It should accept a list of UPSTREAM_SERVERS" {
simulate_upstream
UPSTREAM_SERVERS=localhost:4000 wait_for_nginx
run curl localhost 2>/dev/null
[[ "$output" =~ "Hello World!" ]]
}
simulate_upstream() {
nc -l -p 4000 127.0.0.1 < upstream-response.txt
}
ENV configuration
Abstracts implementation details:
could be NGiNX, HAProxy, …
ENV configuration
Simplifies configuration management: central
store doesn’t need to know parameters in advance
ENV configuration
$UPSTREAM_SERVERS
$FORCE_SSL
$DISABLE_WEAK_CIPHER_SUITES
(…)
Vulnerability Response
Fix, test, docker push, restart
Heartbleed
Heartbleed
POODLEbleed
Heartbleed
POODLEbleed
xBleed???
Integration Tests
Document and test every vulnerability response
#!/usr/bin/env bats
# /tmp/test/nginx.bats
@test "It should pass an external Heartbleed test" {
install_heartbleed
wait_for_nginx
Heartbleed localhost:443
uninstall_heartbleed
}
@test "It should pass an external Heartbleed test" {
install_heartbleed
wait_for_nginx
Heartbleed localhost:443
uninstall_heartbleed
}
install_heartbleed() {
export GOPATH=/tmp/gocode
export PATH=${PATH}:/usr/local/go/bin:${GOPATH}/bin
go get github.com/FiloSottile/Heartbleed
go install github.com/FiloSottile/Heartbleed
}
Integration tests happen
during each image build
Integration tests happen
during each image build
Images are built automatically via Quay
Build Triggers
Integration tests happen
during each image build
Build status is easy to verify at a glance
Integration tests happen
during each image build
Quay Time Machine lets us roll back an
image to any previous state
Database Deployment
Standardizing an "API" across databases
New databases mean
new dependencies
New databases mean
new dependencies
How to document setup steps for engineers?
New databases mean
new dependencies
How to deploy in production?
New databases mean
new dependencies
How to perform common admin tasks?
Backups? Replication? CLI access? Read-only
mode?
Wrap Databases in a
Uniform API
Standardizing an "API" across databases
#!/bin/bash
# run-database.sh
command="/usr/lib/postgresql/$PG_VERSION/bin/postgres -D "$DATA_DIRECTORY" -c config_file=/etc/postgresql/
$PG_VERSION/main/postgresql.conf"
if [[ "$1" == "--initialize" ]]; then
chown -R postgres:postgres "$DATA_DIRECTORY"
su postgres <<COMMANDS
/usr/lib/postgresql/$PG_VERSION/bin/initdb -D "$DATA_DIRECTORY"
/etc/init.d/postgresql start
psql --command "CREATE USER ${USERNAME:-aptible} WITH SUPERUSER PASSWORD '$PASSPHRASE'"
psql --command "CREATE DATABASE ${DATABASE:-db}"
/etc/init.d/postgresql stop
COMMANDS
elif [[ "$1" == "--client" ]]; then
[ -z "$2" ] && echo "docker run -it aptible/postgresql --client postgresql://..." && exit
psql "$2"
elif [[ "$1" == "--dump" ]]; then
[ -z "$2" ] && echo "docker run aptible/postgresql --dump postgresql://... > dump.psql" && exit
pg_dump "$2"
elif [[ "$1" == "--restore" ]]; then
[ -z "$2" ] && echo "docker run -i aptible/postgresql --restore postgresql://... < dump.psql" && exit
psql "$2"
#!/bin/bash
# run-database.sh
command="/usr/lib/postgresql/$PG_VERSION/bin/postgres -D "$DATA_DIRECTORY" -c config_file=/etc/postgresql/
$PG_VERSION/main/postgresql.conf"
if [[ "$1" == "--initialize" ]]; then
chown -R postgres:postgres "$DATA_DIRECTORY"
su postgres <<COMMANDS
/usr/lib/postgresql/$PG_VERSION/bin/initdb -D "$DATA_DIRECTORY"
/etc/init.d/postgresql start
psql --command "CREATE USER ${USERNAME:-aptible} WITH SUPERUSER PASSWORD '$PASSPHRASE'"
psql --command "CREATE DATABASE ${DATABASE:-db}"
/etc/init.d/postgresql stop
COMMANDS
elif [[ "$1" == "--client" ]]; then
[ -z "$2" ] && echo "docker run -it aptible/postgresql --client postgresql://..." && exit
psql "$2"
elif [[ "$1" == "--dump" ]]; then
[ -z "$2" ] && echo "docker run aptible/postgresql --dump postgresql://... > dump.psql" && exit
pg_dump "$2"
elif [[ "$1" == "--restore" ]]; then
[ -z "$2" ] && echo "docker run -i aptible/postgresql --restore postgresql://... < dump.psql" && exit
psql "$2"
--initialize: Initialize data directory
--client: Start a CLI client
--dump: Dump database to STDOUT
--restore: Restore from dump
--readonly: Start database in RO mode
db-launch ()
{
container=$(head -c 32 /dev/urandom | md5);
passphrase=${PASSPHRASE:-foobar};
image="${@: -1}";
docker create --name $container $image
docker run --volumes-from $container 
-e USERNAME=aptible -e PASSPHRASE=$passphrase 
-e DB=db $image --initialize
docker run --volumes-from $container $@
}
http://bit.ly/aptible-dblaunch
docker create --name $container $image
http://bit.ly/aptible-dblaunch
1. Create "volume container"
docker run --volumes-from $container 
-e USERNAME=aptible -e PASSPHRASE=$passphrase 
-e DB=db $image --initialize
http://bit.ly/aptible-dblaunch
2. Initialize database data volume
docker run --volumes-from $container $@
http://bit.ly/aptible-dblaunch
3. Run database
Thank you
@fancyremarker
frank@aptible.com

https://speakerdeck.com/fancyremarker

Mais conteúdo relacionado

Mais procurados

F03 a history of (open) conversation alfresco at university of zaragoza
F03   a history of (open) conversation alfresco at university of zaragozaF03   a history of (open) conversation alfresco at university of zaragoza
F03 a history of (open) conversation alfresco at university of zaragozaAngel Borroy López
 
Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28Sadique Puthen
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2Fernando Lopez Aguilar
 
Ansible-for-openstack
Ansible-for-openstackAnsible-for-openstack
Ansible-for-openstackUdayendu Kar
 
No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleJeff Potts
 
Deep drive into Nova
Deep drive into NovaDeep drive into Nova
Deep drive into NovaUdayendu Kar
 
Ef09 installing-alfresco-components-1-by-1
Ef09 installing-alfresco-components-1-by-1Ef09 installing-alfresco-components-1-by-1
Ef09 installing-alfresco-components-1-by-1Angel Borroy López
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesSreenivas Makam
 
Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?GDX Wu
 
Discovering the 2 in Alfresco Search Services 2.0
Discovering the 2 in Alfresco Search Services 2.0Discovering the 2 in Alfresco Search Services 2.0
Discovering the 2 in Alfresco Search Services 2.0Angel Borroy López
 
Automate or die! Rootedcon 2017
Automate or die! Rootedcon 2017Automate or die! Rootedcon 2017
Automate or die! Rootedcon 2017Toni de la Fuente
 
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and KubernetesJava Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and KubernetesAntons Kranga
 
Using the Terraform Enterprise GUI is perfect to start working with Terraform...
Using the Terraform Enterprise GUI is perfect to start working with Terraform...Using the Terraform Enterprise GUI is perfect to start working with Terraform...
Using the Terraform Enterprise GUI is perfect to start working with Terraform...Mitchell Pronschinske
 
Data manipulation for configuration management using Ansible
Data manipulation for configuration management using AnsibleData manipulation for configuration management using Ansible
Data manipulation for configuration management using AnsibleJoel W. King
 

Mais procurados (20)

Quick and Solid - Baremetal on OpenStack | Rico Lin
Quick and Solid - Baremetal on OpenStack | Rico LinQuick and Solid - Baremetal on OpenStack | Rico Lin
Quick and Solid - Baremetal on OpenStack | Rico Lin
 
Alfresco Tech Talk Live 106
Alfresco Tech Talk Live 106Alfresco Tech Talk Live 106
Alfresco Tech Talk Live 106
 
F03 a history of (open) conversation alfresco at university of zaragoza
F03   a history of (open) conversation alfresco at university of zaragozaF03   a history of (open) conversation alfresco at university of zaragoza
F03 a history of (open) conversation alfresco at university of zaragoza
 
Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28Introduction openstack-meetup-nov-28
Introduction openstack-meetup-nov-28
 
How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2How to deploy spark instance using ansible 2.0 in fiware lab v2
How to deploy spark instance using ansible 2.0 in fiware lab v2
 
Ansible-for-openstack
Ansible-for-openstackAnsible-for-openstack
Ansible-for-openstack
 
No Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with AnsibleNo Docker? No Problem: Automating installation and config with Ansible
No Docker? No Problem: Automating installation and config with Ansible
 
Deep drive into Nova
Deep drive into NovaDeep drive into Nova
Deep drive into Nova
 
Ef09 installing-alfresco-components-1-by-1
Ef09 installing-alfresco-components-1-by-1Ef09 installing-alfresco-components-1-by-1
Ef09 installing-alfresco-components-1-by-1
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
 
Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?
 
Discovering the 2 in Alfresco Search Services 2.0
Discovering the 2 in Alfresco Search Services 2.0Discovering the 2 in Alfresco Search Services 2.0
Discovering the 2 in Alfresco Search Services 2.0
 
The elements of kubernetes
The elements of kubernetesThe elements of kubernetes
The elements of kubernetes
 
Automate or die! Rootedcon 2017
Automate or die! Rootedcon 2017Automate or die! Rootedcon 2017
Automate or die! Rootedcon 2017
 
Ansible day 4
Ansible day 4Ansible day 4
Ansible day 4
 
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and KubernetesJava Day Kharkiv - Next-gen engineering with Docker and Kubernetes
Java Day Kharkiv - Next-gen engineering with Docker and Kubernetes
 
Using the Terraform Enterprise GUI is perfect to start working with Terraform...
Using the Terraform Enterprise GUI is perfect to start working with Terraform...Using the Terraform Enterprise GUI is perfect to start working with Terraform...
Using the Terraform Enterprise GUI is perfect to start working with Terraform...
 
Alfresco Certificates
Alfresco Certificates Alfresco Certificates
Alfresco Certificates
 
Data manipulation for configuration management using Ansible
Data manipulation for configuration management using AnsibleData manipulation for configuration management using Ansible
Data manipulation for configuration management using Ansible
 
ruxc0n 2012
ruxc0n 2012ruxc0n 2012
ruxc0n 2012
 

Semelhante a Docker for Ruby Developers

Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windowsDocker, Inc.
 
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
 
Amazon Web Services and Docker: from developing to production
Amazon Web Services and Docker: from developing to productionAmazon Web Services and Docker: from developing to production
Amazon Web Services and Docker: from developing to productionPaolo latella
 
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 workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Pini Reznik
 
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 Peekmsyukor
 
Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsBen Hall
 
Docker module 1
Docker module 1Docker module 1
Docker module 1Liang Bo
 
Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Patrick Chanezon
 
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, OrchestrationErica Windisch
 
How Reconnix Is Using Docker
How Reconnix Is Using DockerHow Reconnix Is Using Docker
How Reconnix Is Using DockerRuss Mckendrick
 
Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)충섭 김
 
Dockerfiles building docker images automatically v (workdir, env, add, and ...
Dockerfiles   building docker images automatically v (workdir, env, add, and ...Dockerfiles   building docker images automatically v (workdir, env, add, and ...
Dockerfiles building docker images automatically v (workdir, env, add, and ...ansonjonel
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierCarlos Sanchez
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with DockerNaoki AINOYA
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environmentSumedt Jitpukdebodin
 
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클Oracle Korea
 
Docker & FieldAware
Docker & FieldAwareDocker & FieldAware
Docker & FieldAwareJakub Jarosz
 

Semelhante a Docker for Ruby Developers (20)

Docker for developers on mac and windows
Docker for developers on mac and windowsDocker for developers on mac and windows
Docker for developers on mac and windows
 
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)
 
Amazon Web Services and Docker: from developing to production
Amazon Web Services and Docker: from developing to productionAmazon Web Services and Docker: from developing to production
Amazon Web Services and Docker: from developing to production
 
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 workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014Docker workshop DevOpsDays Amsterdam 2014
Docker workshop DevOpsDays Amsterdam 2014
 
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
DockerDocker
Docker
 
Architecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based DeploymentsArchitecting .NET Applications for Docker and Container Based Deployments
Architecting .NET Applications for Docker and Container Based Deployments
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016
 
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
 
Docker
DockerDocker
Docker
 
How Reconnix Is Using Docker
How Reconnix Is Using DockerHow Reconnix Is Using Docker
How Reconnix Is Using Docker
 
Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)
 
Dockerfiles building docker images automatically v (workdir, env, add, and ...
Dockerfiles   building docker images automatically v (workdir, env, add, and ...Dockerfiles   building docker images automatically v (workdir, env, add, and ...
Dockerfiles building docker images automatically v (workdir, env, add, and ...
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
 
How to create your own hack environment
How to create your own hack environmentHow to create your own hack environment
How to create your own hack environment
 
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클
 
Docker & FieldAware
Docker & FieldAwareDocker & FieldAware
Docker & FieldAware
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Último (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Docker for Ruby Developers