docker & diego - good friends or not?
TRANSCRIPT
Diego & Docker - Good friends or not ?
• DevOps Engineer @anynines • Used to work with Java (monoliths)• Got to know Node.js and
Microservices • Learned about CloudFoundry • Can I push my Container to CF ?
Why even use Docker ?
Code
Dockerfile
Docker Imagedocker build
Docker container
Codedocker run
Docker hub
Docker hub
Docker ImageDocker ImageDocker Image
Developer machine
Docker container
Code
node 0.12
Docker Image
Docker hub
Docker ImageDocker Image
new Developer machine test/staging/production machine
Docker container
Code
Docker container
Code
node 6.3.0 node 5.0.0
node 5.0.0 node 5.0.0 node 5.0.0
Docker Image
Why even use Cloud Foundry ?
Developer machine
Code
Cloud Foundry
Instancecf push
Developer machine
Code
Cloud Foundry
Instancecf scale APP -i 4
Instance
Instance
Instance
Diego supports Docker
Docker Image
Filesystem
Commands
Garden Container
Filesystem
Droplet
Garden Linux
creates
Garden Container
Garden Linux
creates
Docker Image
Filesystem
Commands
Why even use Docker & CloudFoundry
Importer
Docker Container
MongoDB(Movies)
DBWrapper
Recommender
Docker Container
MongoDB(Subscriber)
Spin it up$ docker run -d -p 27017:27017 mongo
$ cd ../importer$ PORT=… MOVIE_DB_HOST=… MOVIE_DB_PORT=… npm start
$ cd ../recommender$ PORT=… MOVIE_DB_HOST=… MOVIE_DB_PORT=… npm start
$ cd db$ PORT=… MOVIE_MONGO_URI=mongodb://192… npm start
$ docker pull mongo
Docker Container
Docker ContainerDocker Container
Importer
Docker Container
MongoDB(Movies)
DBWrapper
Recommender
Docker Container
MongoDB(Subscriber)
Spin it up with Docker$ docker-compose up
Importer
Docker Container
MongoDB(Movies)
DBWrapper
Recommender
Docker Container
MongoDB(Subscriber) $ MONGO_URI=… npm
start
local
$ MOVIE_DB_HOST=… npm start $ MOVIE_DB_HOST=… npm start
MongoDB(Movies)
DBWrapper
cloud
manifest.yml
Importer
DBWrapper
manifest.yml
cloud
DBWrapper
Recommender
cloud
manifest.yml
Recommender
MongoDB(Subscriber)
manifest.ymlcloud
Deploy it on Cloud Foundry$ docker build -t mebnoah/moviez_db .$ docker push mebnoah/moviez_db
$ cf push --docker-image mebnoah/moviez_db
$ cd db
$ cd ../importer$ docker build -t mebnoah/moviez_importer .$ docker push mebnoah/moviez_importer
$ cf push --docker-image mebnoah/moviez_importer $ cd ../recommender
$ docker build -t mebnoah/moviez_recommender .$ docker push mebnoah/moviez_recommender
$ cf push --docker-image mebnoah/moviez_recommender
State of the onion
Spin it up with just 1 command
• Build each Docker image explicitly• Register on Docker Hub and push
each image • Push each app separately to CF
You decide wether to push a micro service with or without
docker !
I would push it without docker
Spin it up with just 1 command
Push it to CF with just 1 command
Support Continuous Integration/Deployment
There is a friendship but it’s not a good one
Questions ?
• github.com/mebnoah• twitter.com/mebnoah
Follow me