lecture2...•containers in practice: docker •summary 4.9.2019 ssss 2 general courserelatedmatters...

41
Lecture 2 virtualization 4.9.2019 ssss 1

Upload: others

Post on 20-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Lecture 2virtualization

4.9.2019 ssss 1

Page 2: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Content

• General course related matters• Recap of DevOps• Virtualization – what and why?• Virtualizations techniques• Full/hypervisor virtualization• Containers• Containers in practice: Docker• Summary

4.9.2019 ssss 2

Page 3: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

General course related matters

4.9.2019 ssss 3

Page 4: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Numbers

• Sign-ups in ROCK: 96• Sign-ups in plus: 71• With UTA ID: 13 !

• Responses to initial questionary: 53• Final number <50?

6.9.2019 ssss 4

Page 5: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

DevOps

4.9.2019 ssss 5

Page 6: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Virtualization – what and why?

4.9.2019 ssss 6

Page 7: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Use case 1: run ”foreign” software

4.9.2019 ssss 7

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application VM tech

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application

Page 8: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Use case 2: isolate

4.9.2019 ssss 8

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application

VM technology

Page 9: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Use case 3: scale

4.9.2019 ssss 9

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application

VM technology

Customer 1 Customer 2

Page 10: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Levels of virtualization

• Hardware virtualization• Operating system virtualization• Desktop virtualization• Application virtualization• Network virtualization

4.9.2019 ssss 10

Page 11: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Network virtualization

• Network, its HW and protocols, is simulated with software so that it looks like a different network to applications• Different from OSI layer models

• Is VPN a virtual network?

4.9.2019 ssss 11

Page 12: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Application virtualization

• Applications are compiled to machine-independent ”machine ” code• Applications are run with a virtual machine• Benefits• Same code can be run on different CPUs• Increased safety. Why?

• Problems• Performance

4.9.2019 ssss 12

Page 13: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Example: java

09.11.2015 TIE-02300/K.Systä 13

Virtual machine

Hardware

Bytecode

Compiler

class

Programminglanguage

X = Integer.parseInt("1234");

Libraries (APIt)

Program

IDE

Page 14: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Java security

09.11.2015 TIE-02300/K.Systä 14

Virtual machine

Hardware

Bytecode

Compiler

class

Programminglanguage

X = Integer.parseInt("1234");

Libraries (APIt)

Program

IDE

Page 15: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

$ javap -c testCompiled from "test.java"class test {int X;

test();Code:

0: aload_0 // this1: invokespecial #1 // Method java/lang/Object."<init>":()V4: return

void foo();Code:

0: aload_01: ldc #2 // String 12343: invokestatic #3 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I6: putfield #4 // Field X:I9: return

}4.9.2019 ssss 15

Page 16: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Desktop virtualization

• When you run the ”linux-desktop” (linux-desktop.cc.tut.fi) on your windows machine

• Piirretään kuva luennolla (eri mahdollisia tapoja)

4.9.2019 ssss 16

Page 17: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Hardware virtualization

• Hypervisor• HW or SW based

4.9.2019 ssss 17

VM tech

Machine instructions

Operating system

Run-time / libraries

Application

Machine instructions

Operating system

Run-time / libraries

Application

Page 18: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

5.9.2019 ssss 18

Mika Kaaretkoski,Master thesis, 2018

F. Rodrguez-Haro et al., “A summary of virtualization techniques,” Pro-cedia Technology, vol. 3, pp. 267 { 272, 2012, the 2012 IberoamericanConference on Electronics Engineering and Computer Science. [Online]. Accessed:4.8.2018 Available: http://www:sciencedirect:com/science/article/pii/S2212017312002587

Guest

Host

Virtual Machine Mngr(Hypervisor)

Page 19: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Type-1, native or bare-metal hypervisors

• Examples of virtualization that uses hardware assisted are Kernel-based Virtual Machine (KVM), VirtualBox, Xen, Hyper-V, and VMware products• Hardware-assisted = • Pros & cons

+ efficient+ provides service to all the guests in equivalent way- requires cleaning of the existing system clean- I/O device drivers must be available for installation in the VMM

5.9.2019 ssss 19

Page 20: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Different approached(source of pictures: VMWARE)

5.9.2019 ssss 20

Page 21: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Type-2 or hosted hypervisors

• A guest operating system runs as a process on the host.

• VMware Workstation, VMware Player, VirtualBox, Parallels Desktop for Mac and QEMU

• Emulation or binary translation

• Pros & cons+ Virtualizing SW use device drivers and other lower-level services of host- Loss of efficiency because more layers of SW involved

5.9.2019 ssss 21

Page 22: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Containers

4.9.2019 ssss 22

Page 23: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Basic of containers• Lightweight virtualization Guests share OS kernel with host

• In Linux (LXC) basically Separate namespaces

• IPC – inter-process communication

• Network

• Mount – Filesystem

• PID – Processes

• User

• UTS – hostname and domains

• Cgroup –

• Nice tutorial (with commercial at the end)

https://www.youtube.com/watch?time_continue=2&v=n-JwAM6XF88

5.9.2019 ssss 23

Page 24: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

The dominant way to manage container: DockerSo dominant that we go details of one technology

4.9.2019 ssss 24

Page 25: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

From docker.com

5.9.2019 ssss 25

Page 26: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Use case example• Your application needs• Certain version of nodejs• Set of libraries (certain versions)• Mongo database

5.9.2019 ssss 26

• Your system has• Wrong version of nodejs• Mongo serving another application

• Solution• Create a docker image (container)• Install the image• Run the image

Page 27: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

https://www.katacoda.com/courses/container-runtimes(thanks to your fellow student)

5.9.2019 ssss 27

Page 28: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Let investigate a bit

5.9.2019 ssss 28

Page 29: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

I could not resist

5.9.2019 ssss 29

Page 30: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Typical set-up

5.9.2019 ssss 30

Host

Repository

Image

Image

Image

Download

Containe

r

Containe

r

Containe

r

Containe

r

Page 31: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Typical set-up

5.9.2019 ssss 31

Host

Cont

aine

r

Cont

aine

r

Cont

aine

r

Cont

aine

r

Volume Volume

Volumes are for- Persistent data- Data sharing

Page 32: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Docker commands (subset of)

5.9.2019 ssss 32

docker build Build an image from a Dockerfile

docker container Manage containers

docker commit Create a new image from a container’s changes

docker exec Run a command in a running container

docker image Manage images

docker inspect Return low-level information on Docker objects

docker ps List containers

docker run Run a command in a new container

docker stop Stop one or more running containers

docker swarm Manage Swarm

docker volume Manage volumes

Page 33: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Dockerfile

#This is a sample ImageFROM ubuntuMAINTAINER [email protected] apt-get updateRUN apt-get install –y nginxCMD [“echo”,”Image created”]

5.9.2019 ssss 33

Page 34: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

AnotherFROM node:6.10.0-alpine

# Never run processes as root!USER root

# Copy application itself:COPY . /homeWORKDIR /home# Set port on which to run the node process:ENV PORT=8893# Expose port 8893:EXPOSE 8893

CMD node pinger.js

5.9.2019 ssss 34

Page 35: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

If I want to pre-install?

#This is a sample ImageFROM ubuntuMAINTAINER [email protected] apt-get updateRUN apt-get install –y nginxCMD [“echo”,”Image created”]

5.9.2019 ssss 35

?

Page 36: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Vagrant

4.9.2019 ssss 36

Page 37: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Vagrant intro

• A way to create and distribute development environments as virtual machine (full VMs – not containers)• If time lets look: https://www.vagrantup.com/intro/index.html

5.9.2019 ssss 37

Page 38: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Vagrant vs Docker(https://www.vagrantup.com/intro/vs/docker.html)

• Vagrant is a tool focused on providing a consistent development environment workflow across multiple operating systems. Docker is a container management that can consistently run software as long as a containerization system exists.

• Containers are generally more lightweight than virtual machines, so starting and stopping containers is extremely fast. Docker uses the native containerization functionality on macOS, Linux, and Windows.

• Currently, Docker lacks support for certain operating systems (such as BSD). If your target deployment is one of these operating systems, Docker will not provide the same production parity as a tool like Vagrant. Vagrant will allow you to run a Windows development environment on Mac or Linux, as well.

• For microservice heavy environments, Docker can be attractive because you can easily start a single Docker VM and start many containers above that very quickly. This is a good use case for Docker. Vagrant can do this as well with the Docker provider. A primary benefit for Vagrant is a consistent workflow but there are many cases where a pure-Docker workflow does make sense.

• Both Vagrant and Docker have a vast library of community-contributed "images" or "boxes" to choose from.

5.9.2019 ssss 38

Page 39: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Next plus exercise – will be published today

• Run though this tutorial: <https://docs.docker.com/get-started/>Requires that you have a Linux. VM strongly recommended• Then, after all steps, return output of• docker image ls• docker container ls

• And answer to additional questions.• Deadline is “by next weekend”.

6.9.2019 ssss 39

Page 40: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Material

• Mika Kaaretkoski, Master thesis, 2018

• F. Rodrguez-Haro et al., “A summary of virtualization techniques,” Pro-cediaTechnology, vol. 3, pp. 267 { 272, 2012, the 2012 Iberoamerican Conference on Electronics Engineering and Computer Science. [Online]. • VMWare Inc., Understanding Full Virtualization, Paravirtualization, and

Hardware Assist, 2008. <https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf>• Nice tutorial about docker; <https://docs.docker.com/get-started/>

6.9.2019 ssss 40

Page 41: Lecture2...•Containers in practice: Docker •Summary 4.9.2019 ssss 2 General courserelatedmatters 4.9.2019 ssss 3 Numbers •Sign-ups in ROCK: 96 •Sign-ups in plus: 71 •With

Rought plan – subject to change

• 30.08: Intro to the course and DevOps

• 06.09: Recap (from earlier courses) on virtualization technologies;

• 13.09: Cloud and scalability

• 20.09: Continuous Deployment –what & why

• 27.09: Continuous Deployment –tools and techniques

• 04.10: Security issues; recap on internet networking (from earlier courses)

• 11.10: Guest lecture on AWS

• 23.10: Issues on cloud-SW: isolation, dependency management etc,

• 30.10: Cloud-native architectures: microservices

• 06.11: Cloud-native architectures: FaaS/serverless

• 13.11: About automation: testing and beyond

• 20.11: Hosting and deployment issues

• 27.11: Guest lecture on Kubernetes

• 04.12: Recap

5.9.2019 ssss 41