Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Docker - BP Devops Meetup

No description
by

Jose Roca

on 10 November 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Docker - BP Devops Meetup

Your app as a Container
Build it, test it, deploy it.
Runs the same in local, test, and production environment
"an open source project to pack, ship and run any application as a lightweight container"
Container versioning and tagging!
Isolated dependencies of libraries, tools, user configs, etc.
Local Development
Testing Environment - CI
Runs image and performs tests
Tags image for production
Pushes to production image
Production Environment
Run production tagged image
The Docker Way...
Import/Run Docker image
Hacks on code
Runs local tests
Push new image
Linux Kernel 3.8 (or above)
LXC - LinuX Containers
AUFS - Union filesystem
Wait, images? or containers?
Image are packaged containers with an initial state.
Breaking Isolation
Networking
Docker allows to expose any internal network port to any external port.

$ docker run -privileged -d -p 80:80 -p 443:443 apache2
Breaking Isolation
Persistent Data
Docker allows you to mount volumes from the host or other running containers.

$ docker run -privileged -d -p 80:80 -v /www:/www apache2
2 fast... 2 furious...
Jul
Oct
Mar
Jan
> 50,000 pulls
> 4,000 github stars
> 100 significant contributors
> 150 projects built on top of Docker
> 1000's of Dockerized applications
> Integration in Jenkins, Travis, Chef, Puppet, Vagrant, Openstack
Version 0.6.4 released
Partnership with RedHat
Official support in OpenStack
Huge community, growing really fast!
Docker started as an internal project inside of DotCloud.
21/03 - Solomon Hykes (Founder of DotCloud) gives Docker lightning talk at PyCon US.

27/03 - Docker 0.1 released to public.
Not production ready!
A shipping story...
VMs
Images
Config mgmt.
Tarballs
System Packages
Jars
Virtualenv, rvm, hsenv
Creating/running/modifying an image
Dockerfile
FROM ubuntu
RUN apt-get update
RUN apt-get install mysql-server
RUN ...
RUN chef-solo -c /chef/chef-solo.rb -j ....
ADD myapp /myapp
$ docker build -t myapp .
Base Image
myapp
The test...
$ docker run myapp /myapp/scripts/test.sh
$ docker tag fdc myapp production
$ docker push myapp:production
$ docker run myapp /myapp/scripts/test.sh
$ docker tag myapp myapp 1.0
$ docker push roca/myapp:1.0
Testing and pushing your app
$ docker run -d -p 80:80 myapp:production /myapp/scripts/run_app.sh
git for your code... docker for your container...
AUFS in Action
Use Cases
PaaS (obviously..)
Easy, automated application deployment
Quick experiments in local environments
Testing
dokku, flynn.io, deis, cocaine
StriderCD, Wercker
Quickly setup mysql, dynamodb, memcachedb, redis, etc. from community images
Cool tools
Docker-Registry - Privately host your docker containers
Docker UI - A web interface for Docker
Maestro - Container orchestration

Image id
Email: jose.roca@prezi.com
Glue code
January 2013
March 2013
July 2013
October 2013
CMD / ENTRYPOINT / EXPOSE
root@fdc:/# scp ... myapp /myapp
root@fdc:/# exit
root@fdc:/# chef-solo -c /chef/...
root@fdc:/# apt-get update
root@fdc:/# apt-get install mysql-server
root@fdc:/# ...
$ docker run -t -i ubuntu /bin/bash
Interactive
$ docker commit fdc myapp
Containers are referenced when the image is running, (not in initial state).
You don't need:
Setting up / tearing down environments.
Need to resolve dependencies in test env.
}
Docker
}
Full transcript