Build service with_docker_in_90mins
Embed Size (px)
description
Transcript of Build service with_docker_in_90mins

Larry cai <[email protected]>

Precondition You need finish/understand the basic docker
knowledge in http://www.slideshare.net/larrycai/learn-docker-in-90-minutes What is docker Command : pull/run/images/ps .. Interactive and daemon mode Build with Dockerfile
Build Service with Docker in 90 minutes2 04/07/23

Agenda Docker Revisit Exercise 1: Manage data in
container (-v) Exercise 2: Manage data in
container from another Exercise 3: Link containers (--
name/--link) Exercise 4: Remote API Exercise 5: Docker in Docker Exercise 6: Build service together
(haproxy+2 tomcat)Build Service with Docker in 90
minutes3 04/07/23
Docker Host
HAProxy (Load Balancer)
Tomcat(web1)
808080
8080
Web Service
Tomcat(web2)
8080
Client

Environment Preparation Boot2docker Installer (27M)
Contains latest docker already, fast Container persistence via disk automount on /var/lib/docker Add proxy /var/lib/boot2docker/profile if needed
$ sudo vi /var/lib/boot2docker/profile export http_proxy=<your proxy> $ sudo /etc/init.d/docker restart
$ docker -v User/Passwd: docker/tcuser
Build Service with Docker in 90 minutes4 04/07/23
http://boot2docker.io/

Docker Revisit 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.
Build Service with Docker in 90 minutes5 04/07/23
Based on LXC (Linux Container), easy to use.
Similar to VM as end-user with different features

Manage Data in Container Container as a Service and Data needs
persistency Load balancer, App, Database, Data storage
Share data from host by mount a Host Directory as a Data Volume VOLUME [ “/var/data” ] # in Dockerfile -v host:guest # in docker run
Share data from another Data-only container --volumes-from data-container
Backup/Restore Data-only container
Build Service with Docker in 90 minutes6 04/07/23
http://docs.docker.com/userguide/dockervolumes/ Img source from: http://centricconsulting.com/it-shops-will-leverage-their-knowledge-of-legos-to-build-enterprise-systems/

Exercise 1: Manage data in tomcat run larrycai/tomcat without volume
$ docker run –P –d larrycai/tomcat$ docker logs <id>
Share the local directory into it$ docker run –v /tmp/webapps:/var/lib/tomcat7/webapps/ –P –d larrycai/tomcat
Download sample.warhttp://192.168.59.103:xxx/sample
Build Service with Docker in 90 minutes7 04/07/23
code https://github.com/larrycai/docker-tomcatsample.war https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war

Exercise 2: Data container for tomcat 1. Create data container (Tips: use –e
https_proxy:<proxy>)$ docker run –v /tmp/webapps:/var/lib/tomcat7/webapps –-name webfarm jamtur01/fetcher https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
2. Share data from another container$ docker run –-volumes-from webfarm –P –d larrycai/tomcat
3. Try to download new one Calendar.war to put into /tmp/wepapps
Build Service with Docker in 90 minutes8 04/07/23
Code https://github.com/jamtur01/dockerbook-code/blob/master/code/6/tomcat/fetcher/Dockerfile Calendar.war https://gwt-examples.googlecode.com/files/Calendar.war

Link the containers in docker Docker container has the same private
network Name the container and Link them to provide
the service outside and hide internal port/network !
Name the containerdocker run --name postgresql92 postgresql
Link container to the another container--link name:aliasdocker --link postgresql92:db app
Build Service with Docker in 90 minutes9 04/07/23
http://docs.docker.com/userguide/dockerlinks/ Img source from http://lethain.com/introduction-to-architecting-systems-for-scale/

Exercise 3: Link tomcat with haproxy Start tomcat with name web
$ docker run –-name tomcat –d larrycai/tomcat
Start another node with link alias$ docker run -it --link tomcat:web busybox
Check environment and access it# env # check environment# cat /etc/hosts # check host # wget web:8080
Create another tomcat and Add HAProxy container$ docker run –-name tomcat –d larrycai/tomcat$ docker run –-name tomcat2 –d larrycai/tomcat$ docker run –-link tomcat:back1 –-link tomcat2:back2 –it –P larrycai/haproxy bash# export CONFIG=/etc/haproxy/haproxy.cfg# echo " server back1 ${BACK1_PORT_8080_TCP_ADDR}:8080 maxconn 32" >> $CONFIG # echo " server back2 ${BACK2_PORT_8080_TCP_ADDR}:8080 maxconn 32" >> $CONFIG# haproxy -f /etc/haproxy/haproxy.cfg# ^P^Q
Access 80/8080 port
Build Service with Docker in 90 minutes10 04/07/23

Docker API Docker client/server is communicated via
Remote API Official docker port is 2375 (since 1.0)
API tends to be REST
Build Service with Docker in 90 minutes11 04/07/23
https://docs.docker.com/reference/api/docker_remote_api/
Img source from http://blog.arungupta.me/2014/07/getting-started-
with-docker/

Exercise 4: Remote API Top of the container
API: GET /containers/(id)/top Docker command: $ docker <container id> top
List all images API: GET /images/json Docker command: $ docker images
Try to find your favorite language for the docker remote API to play with.https://docs.docker.com/reference/api/
remote_api_client_libraries/ Build Service with Docker in 90
minutes12 04/07/23

Docker in Docker Docker is client/Daemon via REMOTE API Docker in Docker can make environment
much clean Docker Host only environment All applications are in docker container Easy to deployment
Docker in Docker means install Docker Client into Containerhttps://get.docker.io/builds/Linux/x86_64/docker-latest
Build Service with Docker in 90 minutes13 04/07/23

Exercise 5: Docker in Docker Install docker client in docker container
Run docker command inside !!$ docker run –it -v /var/run/docker.sock:/docker.sock larrycai/docker bash# docker images
Point to Docker Host & Pass data inside # docker –H unix:///docker.sock images
or# export DOCKER_HOST=unix:///docker.sock# docker images
Build Service with Docker in 90 minutes14 04/07/23

Exercise 6: Build Service Together Do it all
Show the help Run the 2 tomcat container & Run the one haproxy
container over it. Show the generated port
$ docker run larrycai/craft
Build Service with Docker in 90 minutes15 04/07/23
Docker Host
HAProxy (Load Balancer)
Tomcat(web1)
808080
8080
Web Service
Tomcat(web2)
8080
Client
Craft(controll)
https://github.com/larrycai/docker-images/tree/master/craft /demo.sh/demo.sh

Recommend reading The Docker Book
http://dockerbook.com Docker Docs
https://docs.docker.com/
Build Service with Docker in 90 minutes16 04/07/23