Successfully reported this slideshow.
Your SlideShare is downloading. ×

Docker 101 for RigaDevDay 2016

Docker 101 for RigaDevDay 2016

Download to read offline

Containers is a technology that will take over infrastructure management in next few years and its absolutely important to anyone involved in software delivery automation and maintance to understand the principles behind it and know how to use it. This workshop gives introduction into Linux containers with the help of Docker.

Containers is a technology that will take over infrastructure management in next few years and its absolutely important to anyone involved in software delivery automation and maintance to understand the principles behind it and know how to use it. This workshop gives introduction into Linux containers with the help of Docker.

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Docker 101 for RigaDevDay 2016

  1. 1. 01
  2. 2. About me Bio: Developer, coach, speaker, author Company: Aestas/IT (http://aestasit.com) E­mail: andrey@aestasit.com Linkedin: http://www.linkedin.com/in/andreyadamovich Lanyrd: http://lanyrd.com/profile/andrey­adamovich GitHub: https://github.com/aadamovich SO: http://stackoverflow.com/users/162792/andrey­adamovich Twitter: @codingandrey, @aestasit • • • • • • • • 02
  3. 3. Let's start! 03
  4. 4. What's in this workshop Starting up Docker Machine Docker history, components, commands Excercises More excercises • • • • 04
  5. 5. Practical! 05
  6. 6. Preparation Task 01a: works with surprises Task 01b: works always, but is more geeky • • 06
  7. 7. Task 01a: Start Docker VM (toolbox) Download Docker Toolbox from:  https://www.docker.com/products/docker­toolbox. Run full installation of all tools. • • 07
  8. 8. Start Docker VM (toolbox) 08
  9. 9. Start Docker VM (toolbox) 09
  10. 10. Start Docker VM (toolbox) 10
  11. 11. Task 01b: Start Docker VM (custom Vagrantfile) Install VirtualBox 5+ Install Vagrant 1.8+ Create new directory for your project e.g.  docker‐machine Put  Vagrantfile  from Gist inside that directory (Optional) Copy  trusty.box  from provided USB stick (Optional) Run  vagrant box add ubuntu/trusty64 trusty.box Run  vagrant up 1. 2. 3. 4. 5. 6. 7. 11
  12. 12. Docker facts 3 years old already 29K+ stars on GitHub 100K+ dockerized applications on Docker Hub 425M+ Docker Engine downloads 180+ Docker meetup groups in 50+ countries 950+ community contributors 50K projects on GitHub using Docker • • • • • • • 12
  13. 13. What is Docker? Virtualization tool like VirtualBox? Virtual machine manager like Vagrant? Configuration management tool like Chef or Puppet? cgroups, libvirt, LXC? • • • • 13
  14. 14. Docker Open source engine to commoditize LXC (containers) Container virtualization Build, pack, ship and run applications as containers Build once, run in many places Isolated and content agnostic • • • • • 14
  15. 15. Linux containers Available in modern kernels since 2008 Generically isolates resource usage (CPU, memory, disk, network) Guarantee resources to application(s) Can be adjusted on the fly • • • • 15
  16. 16. Kernel namespaces isolating views of the system can make a process think it's the only process built­in way to "virtualize" processes • • • 16
  17. 17. Kernel namespaces mnt (mount points, filesystem) pid (processes) net (network stack) ipc (inter­process communication) uts (hostname) user (UIDs) • • • • • • 17
  18. 18. Inside the container (application) my code my libraries my package manager my app my data • • • • • 18
  19. 19. Outside the container (operations) logging remote access network configuration monitoring • • • • 19
  20. 20. Container performance Proccesses are isolated, but run directly on the host CPU ­ native performance Memory ­ small footprint required Netowork ­ small overhead • • • • 20
  21. 21. Containers vs. VMs 21
  22. 22. Containers vs. VMs 22
  23. 23. Docker concepts 23
  24. 24. Docker engine Docker is a simple client/server application A Docker Client talks to Docker daemon, which executes the work Docker Daemon also exposes RESTFul API, that can be used remotely • • • 24
  25. 25. Docker images Read­only templates from which containers are launched Each image consists of series of layers using union file system When image gets modified a new layer is created Docker can also use additional file systems • • • • 25
  26. 26. Docker images 26
  27. 27. Docker images Docker images can be shared Standard templates for starting containers Reproducible way to easily build trusted images • • • 27
  28. 28. Docker container Single process running within environment created from Docker Image “ 28
  29. 29. Docker registry A repository of Docker images Registry can be private or public Docker Hub is a public Docker registry • • • 29
  30. 30. Dockerfile 30
  31. 31. Docker commands 31
  32. 32. docker pull Pull image from remote registry (or Docker Hub) into local cache of Docker images on current Docker Host: docker pull busybox01. 32
  33. 33. docker images List images cached on current Docker Host: docker images01. 33
  34. 34. docker build Build Docker Image from Dockerfile located in current directory: docker build ‐t=myimage:1.0 .01. 34
  35. 35. docker rmi Remove image from local cache: docker rmi <image_id>01. 35
  36. 36. docker run Start container from Docker image: docker run busybox echo "hello world"01. 36
  37. 37. docker ps List currently running container: docker ps01. 37
  38. 38. docker stop|kill (Forcedly) Stop running container: docker kill <container_id>01. 38
  39. 39. docker rm Remove stopped container: docker rm <container_id>01. 39
  40. 40. Task 02 (start your first Docker container from existing image) Get image from Docker Registry e.g.  docker pull jenkins List available images with  docker images Start your first container  docker run jenkins Press Ctrl+C to kill container and check that it's not running with docker ps Run container in detached mode by passing  ‐d  option. Expose port to access container from your host using  ‐p  option. • • • • • • 40
  41. 41. Task 03 (build an image from existing Dockerfile) Get  aaconvert  project from GitHub with  git clone https://github.com/mafr/docker‐aaconvert.git From project's directory run:  docker build ‐t aaconvert . Start throw­away container to convert an image into ASCII art:  docker run ‐‐rm aaconvert https://docs.docker.com/images/favicon.png > docker.txt • • • 41
  42. 42. Task 04 (build your own Docker image) Create  Dockerfile  to install and run PetClinic application. Application code is here: https://github.com/spring­projects/spring­ petclinic. Build Docker image with the help of  docker build ‐‐ tag=petclinic:1.0 . Verify image is listed with  docker images . • • • • 42
  43. 43. Task 05 (start Docker container from your image) Start container(s) with  docker run petclinic:1.0  command. Access container's process through its port(s). Kill container(s) with  docker kill . Remove container(s) with  docker rm . Remove image(s) with  docker rmi . • • • • • 43
  44. 44. Task 06 (use remote Docker Engine) Configure  DOCKER_HOST  environment variable to use NNN.NNN.NNN.NNN:2375  (real IP is written on white board). Build images with unique  ‐‐tag  option to not conflict with other students. Start containers on the remote host by exposing unique ports with  ‐p (available range is 8081­8099) and naming containers with  ‐‐name . Play with  docker ps  and  ‐‐filter  to identify and kill only your containers. • • • • 44
  45. 45. Conclusion 45
  46. 46. Links https://www.docker.com/products/docker­toolbox https://github.com/wsargent/docker­cheat­sheet https://www.mindmeister.com/389671722/open­container­ecosystem­ formerly­docker­ecosystem • • • 46
  47. 47. Book: Docker up and running 47
  48. 48. Upcoming Events 48
  49. 49. Meetup: Latcraft 49
  50. 50. Conference: Baltic DevOps 50
  51. 51. Conference: DevOps Pro 51
  52. 52. Conference: DevTernity 52
  53. 53. More Trainings 53
  54. 54. Training: DevOps MasterClass / Extreme Automation This 2­day workshop focuses on solving challenges that organisations face when implementing DevOps initiatives. It introduces principles of DevOps and tools that help reach full automation of infrastructure provisioning and software delivery. Theoretical background as well as practical hands­on examples of tools like Vagrant, Docker, AWS and others are given during this workshop. “ 54
  55. 55. Training: JVM Internals & Tuning This 2­day training dives deep into the JVM internals and tool set offered by JVM's eco­system. It also describes possible scenarios that may arise during production system support. Understanding of JVM internal architecture may help developers to write code that is more efficient; performance analysis and tuning of JVM parameters may help operations team to quicker find and report problems. “ 55
  56. 56. Thank you! 56

×