Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
01
Let's start!
02
What's in this workshop
Starting up Docker Machine
Docker history, components, commands
Excercises
More excercises
•
•
•
•...
Practical!
04
Preparation
We need a VM with Docker inside. Instructions are here:
http://bit.ly/LATCRAFT_DOCKER
Let's share the code in ...
Docker facts
3 years old already
32K+ stars on GitHub
100K+ dockerized applications on Docker Hub
425M+ Docker Engine down...
What is Docker?
Virtualization tool like VirtualBox?
Virtual machine manager like Vagrant?
Configuration management tool l...
Docker
Open source engine to commoditize LXC (containers)
Container virtualization
Build, pack, ship and run applications ...
Linux containers
Available in modern kernels since 2008
Generically isolates resource usage (CPU, memory, disk, network)
G...
Kernel namespaces
Isolating views of the system
Can make a process think it's the only process
Built­in way to "virtualize...
Kernel namespaces
mnt  (mount points, filesystem)
pid  (processes)
net  (network stack)
ipc  (inter­process communication)...
Inside the container (application)
my code
my libraries
my package manager
my app
my data
•
•
•
•
•
12
Outside the container (operations)
shared data
logging
remote access
network configuration
monitoring
•
•
•
•
•
13
Container performance
Proccesses are isolated, but run directly on the host
CPU ­ native performance
Memory ­ small footpr...
Containers vs. VMs
15
Containers vs. VMs
16
Docker
concepts
17
Docker engine
Docker is a simple client/server application
A Docker Client talks to Docker daemon, which executes the work...
Docker images
Read­only templates from which containers are launched
Each image consists of series of layers using union f...
Docker images
20
Docker images
Docker images can be shared
Standard templates for starting containers
Reproducible way to easily build trus...
Docker container
Single process running within environment created from Docker Image
“
22
Docker registry
A repository of Docker images
Registry can be private or public
Docker Hub is a public Docker registry
•
•...
Dockerfile
24
Docker
commands
25
docker pull
Pull image from remote registry (or Docker Hub) into local cache of
Docker images on current Docker Host:
dock...
docker images
List images cached on current Docker Host:
docker images01.
27
docker build
Build Docker Image from Dockerfile located in the current directory:
docker build ‐t=myimage:1.0 .01.
28
docker rmi
Remove image from local cache:
docker rmi <image_id>01.
29
docker run
Start container from Docker image:
docker run busybox echo "hello world"01.
30
docker ps
List currently running container:
docker ps01.
31
docker stop|kill
(Forcedly) Stop running container:
docker kill <container_id>01.
32
docker rm
Remove stopped container:
docker rm <container_id>01.
33
Task 01 (start Docker container from
existing image)
Get image from Docker Registry e.g.  docker pull jenkins
List availab...
Task 02 (build an image from existing
Dockerfile)
Get  aaconvert  project from GitHub: 
https://github.com/mafr/docker‐aac...
Task 03 (build your own Docker image)
Create  Dockerfile  to build PetClinic application.
Application code is here: 
https...
Task 03 (build your own Docker image)
Hint: command to build application is: 
mvnw ‐e clean install tomcat7:help ‐DskipTes...
Task 04 (start Docker container from
your image)
Start container(s) with  docker run petclinic:1.0  command.
Access contai...
Task 05 (start Docker environment with
multiple containers)
Start MySQL server inside container: 
docker run  
‐e MYSQL_RO...
Task 06 (use remote Docker Engine)
Configure  DOCKER_HOST  environment variable to use
NNN.NNN.NNN.NNN:2375 .
Build images...
Conclusion
41
Links
https://www.docker.com/products/docker­toolbox
https://github.com/wsargent/docker­cheat­sheet
https://www.mindmeiste...
Book: Docker up and running
43
Upcoming
Events
44
45
46
Training: DevOps MasterClass / Extreme
Automation
8­9 September, 2016
This 2­day workshop focuses on solving challenges th...
Training: Effective Coding Principles and
Patterns in Java 8
14­15 September, 2016
During this intensive, practical and en...
Thank you!
49
Upcoming SlideShare
Loading in …5
×

Workshop: Docker 101

729 views

Published on

This time we decided to organize a workshop around probably the most mentioned technology in last 3 years. Let's play with Docker in July! Fully Hands-on! Laptop is required! Limited places!

Published in: Technology
  • Be the first to comment

Workshop: Docker 101

  1. 1. 01
  2. 2. Let's start! 02
  3. 3. What's in this workshop Starting up Docker Machine Docker history, components, commands Excercises More excercises • • • • 03
  4. 4. Practical! 04
  5. 5. Preparation We need a VM with Docker inside. Instructions are here: http://bit.ly/LATCRAFT_DOCKER Let's share the code in the Gist as well! 05
  6. 6. Docker facts 3 years old already 32K+ stars on GitHub 100K+ dockerized applications on Docker Hub 425M+ Docker Engine downloads 180+ Docker meetup groups in 50+ countries 1400+ community contributors 50K projects on GitHub using Docker • • • • • • • 06
  7. 7. What is Docker? Virtualization tool like VirtualBox? Virtual machine manager like Vagrant? Configuration management tool like Chef or Puppet? cgroups ,  libvirt , LXC? • • • • 07
  8. 8. 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 • • • • • 08
  9. 9. Linux containers Available in modern kernels since 2008 Generically isolates resource usage (CPU, memory, disk, network) Guarantees resources to application(s) Can be adjusted on the fly • • • • 09
  10. 10. Kernel namespaces Isolating views of the system Can make a process think it's the only process Built­in way to "virtualize" processes • • • 10
  11. 11. Kernel namespaces mnt  (mount points, filesystem) pid  (processes) net  (network stack) ipc  (inter­process communication) uts  (hostname) user  (UIDs) • • • • • • 11
  12. 12. Inside the container (application) my code my libraries my package manager my app my data • • • • • 12
  13. 13. Outside the container (operations) shared data logging remote access network configuration monitoring • • • • • 13
  14. 14. Container performance Proccesses are isolated, but run directly on the host CPU ­ native performance Memory ­ small footprint required Network ­ small overhead • • • • 14
  15. 15. Containers vs. VMs 15
  16. 16. Containers vs. VMs 16
  17. 17. Docker concepts 17
  18. 18. 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 • • • 18
  19. 19. 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 • • • • 19
  20. 20. Docker images 20
  21. 21. Docker images Docker images can be shared Standard templates for starting containers Reproducible way to easily build trusted images • • • 21
  22. 22. Docker container Single process running within environment created from Docker Image “ 22
  23. 23. Docker registry A repository of Docker images Registry can be private or public Docker Hub is a public Docker registry • • • 23
  24. 24. Dockerfile 24
  25. 25. Docker commands 25
  26. 26. docker pull Pull image from remote registry (or Docker Hub) into local cache of Docker images on current Docker Host: docker pull busybox01. 26
  27. 27. docker images List images cached on current Docker Host: docker images01. 27
  28. 28. docker build Build Docker Image from Dockerfile located in the current directory: docker build ‐t=myimage:1.0 .01. 28
  29. 29. docker rmi Remove image from local cache: docker rmi <image_id>01. 29
  30. 30. docker run Start container from Docker image: docker run busybox echo "hello world"01. 30
  31. 31. docker ps List currently running container: docker ps01. 31
  32. 32. docker stop|kill (Forcedly) Stop running container: docker kill <container_id>01. 32
  33. 33. docker rm Remove stopped container: docker rm <container_id>01. 33
  34. 34. Task 01 (start Docker container from existing image) Get image from Docker Registry e.g.  docker pull jenkins List available images with  docker images  command. Start your first container  docker run jenkins  command. Press  Ctrl+C  to kill container. Check that it's not running with  docker ps  command. Run container in detached mode by passing  ‐d  option. Expose port to access container from your host using  ‐p  option. • • • • • • • 34
  35. 35. Task 02 (build an image from existing Dockerfile) Get  aaconvert  project from GitHub:  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://www.google.com/favicon.ico > docker.txt • • • 35
  36. 36. Task 03 (build your own Docker image) Create  Dockerfile  to build 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 . • • • • 36
  37. 37. Task 03 (build your own Docker image) Hint: command to build application is:  mvnw ‐e clean install tomcat7:help ‐DskipTests Hint: command to run application is:  mvnw ‐e tomcat7:run ‐DskipTests • • 37
  38. 38. Task 04 (start Docker container from your image) Start container(s) with  docker run petclinic:1.0  command. Access container's process through its port ( 9966 ). Kill container(s) with  docker kill . Remove container(s) with  docker rm . Remove image(s) with  docker rmi . • • • • • 38
  39. 39. Task 05 (start Docker environment with multiple containers) Start MySQL server inside container:  docker run   ‐e MYSQL_ROOT_PASSWORD=petclinic   ‐e MYSQL_DATABASE=petclinic   ‐p 3306:3306 mysql:5.7.8 Rebuild PetClinic image to use MySQL database (change  pom.xml ). Start PetClinic container using data from MySQL container. • • • 39
  40. 40. Task 06 (use remote Docker Engine) Configure  DOCKER_HOST  environment variable to use NNN.NNN.NNN.NNN:2375 . 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. • • • • 40
  41. 41. Conclusion 41
  42. 42. 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 • • • 42
  43. 43. Book: Docker up and running 43
  44. 44. Upcoming Events 44
  45. 45. 45
  46. 46. 46
  47. 47. Training: DevOps MasterClass / Extreme Automation 8­9 September, 2016 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. “ 47
  48. 48. Training: Effective Coding Principles and Patterns in Java 8 14­15 September, 2016 During this intensive, practical and entertaining 2­day course you will learn principles, practices and patterns for writing readable, maintainable and effective code. “ 48
  49. 49. Thank you! 49

×