Docker / Teil 1

Docker Moby

Christian Münch / @cmuench / muench.dev

Was ist Docker?

Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications.

docker.com

Christian Münch / @cmuench / muench.dev

Was ist ein Container?

Bare-Metal Server

inline

Christian Münch / @cmuench / muench.dev

Virtuelle Maschine

inline

Container

inline

Christian Münch / @cmuench / muench.dev

Container sind abgeschottete Prozesse

  • Linux Namespaces (Linux Kernel Feature)
    • mount
    • process
    • network
    • ipc (Interprocess Communication)
    • cgroups (verstecken von Prozesssen)

https://en.wikipedia.org/wiki/Linux_namespaces

Was ist im Container?

Christian Münch / @cmuench / muench.dev

Docker

  • Verbindet bestehende Technologien
  • Ökosystem (Hub, Community)
  • Diverse Tools (docker-compose, docker-machine, Swarm, Toolbox)
  • Bereitstellung auf verschiedenen Host-Betriebssystemen (Windows, Mac, Linux)
  • Format für Container Vorlagen (Images)
Christian Münch / @cmuench / muench.dev

Docker Image

  • Fertiges Abbild eines Containers
  • Aufbau in Schichten (Image kann Basis-Image haben)
  • Kann schnell aktualisiert und getauscht werden
  • Build -> Ship -> Run
Christian Münch / @cmuench / muench.dev

Beispiel NodeJS Anwendung

const express = require('express')
const app = express()

app.get('/', (req, res) => res.send('Hallo Linux Stammtisch Worms!'))

app.listen(3000, () => console.log('Server ready'))
Christian Münch / @cmuench / muench.dev
FROM node:14

WORKDIR /app

COPY package*.json app.js ./

RUN npm install

EXPOSE 3000

CMD ["node", "app.js"]
Christian Münch / @cmuench / muench.dev

Resourcen

Christian Münch / @cmuench / muench.dev

Einfach aufzusetzen

Nur etwas overhead

Security Issues

Mehr als eine Anwendung?

Vorteil: Einfacheres verschieben im Netzwerk

Overhead !!!