Larry cai
Charlie Zha zysimplelife AT gmail.com
Precondition
 You need finish/understand the basic docker knowledge
in
http://www.slideshare.net/larrycai/learn-docker-in...
Agenda
 Docker Revisit
 Exercise 1: Revisit Dockerfile
 Exercise 2: Manage data in container (-v)
 Exercise 3: Manage ...
Environment Preparation
 Boot2docker Installer (27M)
 Contains latest docker already, fast
 Container persistence via d...
Environment use online service
 Create dockerVM using CoreOS image, and assign public
IP to access
 http://ustack.com or...
Docker Revisit
 Docker is an open-source engine that automates the
deployment of any application as a lightweight, portab...
Manage Data in Container
 Container as a Service and Data needs persistency
 Load balancer,App, Database, Data storage
...
Exercise 1: Revisit Dockerfile
 Download code
$ git clone https://github.com/larrycai/docker-tomcat
 Build Service
$ vi ...
Exercise 2: Manage data in tomcat
 run larrycai/tomcat without volume
$ docker run –P –d larrycai/tomcat
$ docker logs <i...
Exercise 3: Data container for tomcat
1. Create data container (Tips: use –e https_proxy:<proxy>)
$ docker run –v /tmp/web...
Link the containers in docker
 Docker container has the same private network
 Name the container and Link them to provid...
Exercise 4: Link tomcat with haproxy
 Start tomcat with name web
$ docker run –-name tomcat –d larrycai/tomcat
 Start an...
Docker in Docker
 Docker is client/Daemon via REMOTE API
 Docker in Docker can make environment much clean
 Docker Host...
Exercise 5: Docker in Docker
 Install docker client in docker container
 Run docker command inside !!
$ docker run –it -...
Exercise 6: Build Service Together
 Do it all
 Show the help
 Run the 2 tomcat container & Run the one haproxy containe...
Docker Compose
 Compose is a tool for defining and running complex
applications with Docker.
 With Compose, you define a...
Install in boot2docker
 Boot2docker can’t install compose locally, But we can
use docker in docker to access it
 Pull im...
Exercise 7(optional): Build Service With Docker
Compose
 Create the compose file
$vi docker-compose.yml
web1:
image: larr...
Recommend reading
 The Docker Book
 http://dockerbook.com
 Docker Docs
 https://docs.docker.com/
Build Service with Do...
Upcoming SlideShare
Loading in...5
×

Build service with_docker_in_90mins

2,665

Published on

Learn how to build web service using docker, it is intermediate knowledge of docker. CodingWithMe style for 90 minutes

Published in: Internet
0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,665
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
147
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Build service with_docker_in_90mins

  1. 1. Larry cai Charlie Zha zysimplelife AT gmail.com
  2. 2. 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/20/15
  3. 3. Agenda  Docker Revisit  Exercise 1: Revisit Dockerfile  Exercise 2: Manage data in container (-v)  Exercise 3: Manage data in container from another  Exercise 4: Link containers (--name/-- link)  Exercise 5: Docker in Docker  Exercise 6: Build service together (haproxy+2 tomcat)  Exercise 7: Docker Compose Build Service with Docker in 90 minutes3 04/20/15 Docker HostDocker Host HAProxy (Load Balancer) Tomcat (web1) Tomcat (web1) 808080 8080 Web Service Tomcat (web2) Tomcat (web2) 8080 ClientClient
  4. 4. 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/20/15 http://boot2docker.io/
  5. 5. Environment use online service  Create dockerVM using CoreOS image, and assign public IP to access  http://ustack.com or https://cloud.digitalocean.com  Clone code & Start them $ ssh –i id_rsa core@42.62.73.251 # replace public IP  Pull docker.cn/larry/tomcat if it is slow (http://docker.cn ) $ docker login docker.cn $ docker pull docker.cn/larry/tomcat $ docker tag docker.cn/larry/tomcat larrycai/tomcat $ docker pull docker.cn/larry/haproxy $ docker tag docker.cn/larry/haproxy larrycai/haproxy Learn Ansible in Docker in 90 minutes5 04/20/15
  6. 6. 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 minutes6 04/20/15  Based on LXC (Linux Container), easy to use.  Similar to VM as end- user with different features
  7. 7. 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 DataVolume  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 minutes7 04/20/15 http://docs.docker.com/userguide/dockervolumes/ Img source from: http://centricconsulting.com/it-shops-will-leverage-their-knowledge-
  8. 8. Exercise 1: Revisit Dockerfile  Download code $ git clone https://github.com/larrycai/docker-tomcat  Build Service $ vi Dockerfile  Add proxy for apt-get  apt-get -o Acquire::http::proxy="http://www-proxy.apac.mgmt.ericsson.se:8080 " .. $ docker build . Build Service with Docker in 90 minutes8 04/20/15 code https://github.com/larrycai/docker-tomcat
  9. 9. Exercise 2: 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 `pwd`:/var/lib/tomcat7/webapps/ -P -d larrycai/tomcat $ docker ps $ docker inspect <id>  Download sample.war $curl https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war > sample.war  Visit the service http://192.168.59.103:<port>/sample/ Build Service with Docker in 90 minutes9 04/20/15 code https://github.com/larrycai/docker-tomcat sample.war https://tomcat.apache.org/tomcat-7.0-doc/appdev/sample/sample.war
  10. 10. Exercise 3: 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 minutes10 04/20/15 Code https://github.com/jamtur01/dockerbook-code/blob/master/code/6/tomcat/fetcher/Dockerfile Calendar.war https://gwt-examples.googlecode.com/files/Calendar.war
  11. 11. 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 container docker run --name postgresql92 postgresql  Link container to the another container --link name:alias docker --link postgresql92:db app Build Service with Docker in 90 minutes11 04/20/15 http://docs.docker.com/userguide/dockerlinks/ Img source from http://lethain.com/introduction-to- architecting-systems-for-scale/
  12. 12. Exercise 4: 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 docker.cn/docker/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 tomcat1 –d larrycai/tomcat $ docker run –-name tomcat2 –d larrycai/tomcat $ docker run –-link tomcat1: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 mapped 80/8080 port Build Service with Docker in 90 minutes12 04/20/15
  13. 13. 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 Container https://get.docker.io/builds/Linux/x86_64/docker-latest Build Service with Docker in 90 minutes13 04/20/15
  14. 14. 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/20/15
  15. 15. 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/20/15 Docker HostDocker Host HAProxy (Load Balancer) Tomcat (web1) Tomcat (web1) 808080 8080 Web Service Tomcat (web2) Tomcat (web2) 8080 ClientClient Craft (controll) https://github.com/larrycai/docker-images/tree/master/craft /demo.sh/demo.sh
  16. 16. Docker Compose  Compose is a tool for defining and running complex applications with Docker.  With Compose, you define a multi-container application in a single file, then spin your application up in a single command which does everything that needs to be done to get it running.  https://docs.docker.com/compose/ Build Service with Docker in 90 minutes16 04/20/15
  17. 17. Install in boot2docker  Boot2docker can’t install compose locally, But we can use docker in docker to access it  Pull image  $ docker pull dduportal/docker-compose:latest  Set alias  alias compose='docker run --rm -ti -v "$(pwd)":/app -v /var/run/docker.sock:/var/run/docker.sock dduportal/docker-compose:latest‘ https://registry.hub.docker.com/u/dduportal/docker-compose/ Build Service with Docker in 90 minutes17 04/20/15
  18. 18. Exercise 7(optional): Build Service With Docker Compose  Create the compose file $vi docker-compose.yml web1: image: larrycai/tomcat:latest web2: image: larrycai/tomcat:latest proxy: image: larrycai/haproxy ports: - "80:8080" links: - web1:back1 - web2:back2 $compose up Build Service with Docker in 90 minutes18 04/20/15
  19. 19. Recommend reading  The Docker Book  http://dockerbook.com  Docker Docs  https://docs.docker.com/ Build Service with Docker in 90 minutes19 04/20/15
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×