SlideShare a Scribd company logo
1 of 38
Download to read offline
docker.io
Secure And Portable
Containers Made Easy
Jürgen Brunk
München, 30.04.2014
docker.io 2
1.Was ist Docker ?
2.Was sind Container ?
3.Warum Docker ?
4.Architektur
5.Praxis
6.Docker unter Ubuntu installieren
7.Ein einfaches „Hello World“ Beispiel
8.Grundlegende Docker Befehle
9.Dockerfile
10.Container & Images transferieren
Agenda
Was ist Docker ?
docker.io 4
Was ist Docker ?
Das Docker*
Framework erlaubt
es (Web-)
Applikationen in
schlanke, autarke
und portable
Umgebungen, sog.
Container, zu
verpacken
*) engl. Hafenarbeiter
Was sind
Container ?
docker.io 6
Was sind Container ?
Operating system–level virtualization:
z.B. jails, openvz, lxc, ...
Abgeschottete Teilmenge des Hostsystems
(getrennter Process-, Netzwerk-, I/O-Raum)
Quasi „chroot on Steroids“
docker.io 7
Container vs. VMs
Warum Docker ?
docker.io 9
Warum Docker? (The Matrix from Hell)
docker.io 10
Vorteile für DEV
Einmal gebaut – läuft überall !
Saubere, sichere, portable Laufzeitumgebung
für die Application
Kein Problem mit Dependencies, Paketen
etc. während des Deployments
Jede Application ist ein isolierter Container
mit ggf. unterschiedlichen SW-Versionen
docker.io 11
Vorteile für OPS
Einmal konfiguriert – läuft überall !
Keine Inkonsistenzen mehr zwischen Dev-,
QA-, Stage-, Prod-Umgebung
Schnelleres Deployment (continuous
deployment / continuous integration)
Schlanke Container – bessere Performance
als VM's
docker.io 12
Warum es funktioniert (Trennung der Zuständigkeiten)
Entwickler:
Kümmert sich um das was
innerhalb des Containers
ist:
●
sein Code / Daten
●
seine Libs / Frameworks
●
sein Package Manager
Alle Linux Server sehen
gleich aus
Admin:
Kümmert sich um das was
ausserhalb des Containers
ist:
●
Logging / Backup
●
Remote Access
●
Network Config
Alle Container starten und
stoppen gleich
ArchitekturArchitektur
docker.io 14
Architektur
docker.io 15
schlank
Docker* basiert auf Linux Containern LXC*
Minimaler Overhead (cpu/io/network)
Verwendet layered Filesystem
*) Due to a bug in LXC,
Docker works best on
the 3.8 kernel
docker.io 16
portabel
Läuft auf jedem System das LXC unterstützt
Ubuntu, Debian*, RHEL, Gentoo, Google
Cloud, Rackspace Cloud, Amazon EC2, IBM
Softlayer, Arch Linux, FrugalWare, Fedora,
openSUSE, CRUX Linux
Microsoft Windows*, Apple OSX*,
Raspberry PI*
docker.io 17
autark
Ein Docker Container enthält alles nötige:
● Minimal Base OS (kein Kernel)
● Libraries / Frameworks
● Application Code + Data
Ein Container kann überall da laufen wo auch
Docker installiert werden kann
docker.io 18
Docker Basics
Fragen soweit ?
Praxis
docker.io 21
Praxis
Wir
bauen
uns
Docker
Container
Docker unter
Ubuntu installieren
docker.io 23
Docker unter Ubuntu installieren
# Docker unter Ubuntu 13.xx / 14.04 LTS installieren
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 
--recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo sh -c "echo deb http://get.docker.io/ubuntu docker main 
> /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install -y lxc-docker
# Docker Installation prüfen
$ sudo docker info
$ sudo docker version
# Docker Verzeichnis – hier liegt alles
$ sudo ls -l /var/lib/docker/
# Docker Usage anzeigen lassen
$ sudo docker
Ein einfaches „Hello
World“ Beispiel
docker.io 25
Ein einfaches „Hello World“ Beispiel
# ein fertiges Image aus dem Docker Index ziehen
$ sudo docker pull ubuntu
# alle lokalen Images auflisten
$ sudo docker images
# einen Container erzeugen, Applikation
# „/bin/echo“ laufen lassen und am Ende den
# Container wieder entfernen
$ sudo docker run --rm ubuntu 
/bin/echo „Hello World“
Grundlegende
Docker Befehle
docker.io 27
Grundlegende Docker Befehle
docker search <TERM>
docker start | stop | kill | restart <CID>
docker ps [-a]
docker images
docker pull <IMAGE>[:TAG]
docker run [-i] <IMAGE> [<CMD>]
docker build <PATH> | <URL> | -
docker rm <CID>
docker rmi <IMAGE>
docker save <IMAGE>
docker load
Dockerfile
docker.io 29
Dockerfile
# sshd
#
# VERSION 0.0.1
FROM ubuntu
MAINTAINER Thatcher R. Peskens "thatcher@dotcloud.com"
# make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe"
> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:screencast' |chpasswd
EXPOSE 22
CMD /usr/sbin/sshd -D
docker.io 30
Container aus dem Dockerfile bauen
# Dockerfile erzeugen (Inhalt siehe letzte Folie)
$ vi Dockerfile
# Docker Image bauen, temporäre Zwischenbuilds am Ende verwerfen
$ sudo docker build --rm -t img_sshd .
# lokale Docker Images auflisten
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED
VIRTUAL SIZE
img_sshd latest 9b8cbe62ff21 2 minutes ago
313.6 MB
# neuen Container aus Image erzeugen und als Daemon starten
$ sudo docker run -d -P --name ct_sshd img_sshd
d25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c2
28f8
docker.io 31
SSH Connect in den Container
# Container auflisten
$ sudo docker ps --no-trunc=true
CONTAINER ID IMAGE
COMMAND CREATED STATUS PORTS
NAMES
d25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c2
28f8 img_sshd:latest /bin/sh -c '/usr/sbin/sshd -D' 4 minutes ago
Up 3 minutes 0.0.0.0:49153->22/tcp ct_sshd
# Container → Host Port Mapping finden
$ sudo docker port ct_sshd 22
0.0.0.0:49153
# SSH Connect via local Port forwarding (passwd = „screencast“)
$ ssh -lroot -p49153 localhost
# SSH Connect via Container IP
$ sudo docker inspect ct_sshd | grep IPAddress
Container & Images
transferieren
docker.io 33
Container & Images transferieren
Docker Images:
$ sudo docker save img_sshd > save.tar
$ scp save.tar Dockerfile newhost:
newhost:$ sudo docker load < save.tar
newhost:$ sudo docker run -d -P --name ct_sshd img_sshd
Docker Containers:
$ sudo docker export ct_sshd > export.tar
$ scp export.tar Dockerfile newhost:
newhost:$ cat export.tar | sudo docker import - 
img_newsshd
newhost:$ sudo docker run -d -P --name ct_newsshd 
img_newsshd
Noch Fragen ?
Quellennachweise
und Links
docker.io 36
Quellennachweise
Quellennachweise:
www.docker.io
Images:
www.docker.io
www.jundiai.com.br
ruhrnachrichten.de
gist.github.com/simota/9043141
slides.com/stevenborrelli/docker
docker.io 37
Links
Links:
Docker Website:
http://www.docker.io/
Docker Dokumentation:
http://docs.docker.io/
Docker Command Line Reference:
http://docs.docker.io/reference/commandline/cli/
Lightweight Linux for Docker:
http://boot2docker.io/
38
Vielen Dank für Ihre Aufmerksamkeit
Kontakt
Jürgen Brunk
Systems Engineer
inovex GmbH
Office München
Valentin-Linhof Str. 2
D-81829 München
Mobil: 0173 3181 003
Mail: juergen.brunk@inovex.de

More Related Content

What's hot

Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen B1 Systems GmbH
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumNicholas Dille
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenNicholas Dille
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Dockergedoplan
 
Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Govinda Fichtner
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayTobias Schneck
 
Vagrant - Einführung & Verwendung
Vagrant - Einführung & VerwendungVagrant - Einführung & Verwendung
Vagrant - Einführung & VerwendungTilo Baller
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Gitpaultcochrane
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17remigius-stalder
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Tobias Schneck
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!Tobias Schneck
 
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, PuppetEntwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, Puppetinovex GmbH
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungMario Müller
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...B1 Systems GmbH
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerB1 Systems GmbH
 

What's hot (20)

Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?Docker and Raspberry Pi. A dream team?
Docker and Raspberry Pi. A dream team?
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Containerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony DayContainerized End-2-End Testing - JUG Saxony Day
Containerized End-2-End Testing - JUG Saxony Day
 
Vagrant - Einführung & Verwendung
Vagrant - Einführung & VerwendungVagrant - Einführung & Verwendung
Vagrant - Einführung & Verwendung
 
Versionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und GitVersionskontrolle mit Subversion und Git
Versionskontrolle mit Subversion und Git
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
Containerized End-2-End-Testing - Software-QS-Tag (deutsch)
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
Entwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, PuppetEntwicklungsumgebungen - Packer, Vagrant, Puppet
Entwicklungsumgebungen - Packer, Vagrant, Puppet
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
 
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 

Similar to docker.io - Secure And Portable Containers Made Easy

Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfSyahri Ramadhan
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows ContainerThomas Wilhelm Wiefel
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker ContainerAndreas Koop
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python DevelopmentMartin Christen
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020Stephan Kaps
 
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebugDocker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebugAlexander Bohndorf
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...inovex GmbH
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...gedoplan
 
The pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersThe pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersFDeitelhoff
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungFrank Schmittlein
 

Similar to docker.io - Secure And Portable Containers Made Easy (19)

Was ist Docker?
Was ist Docker?Was ist Docker?
Was ist Docker?
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Oracle und Docker
Oracle und DockerOracle und Docker
Oracle und Docker
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
 
Docker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebugDocker Entwicklungsumgebung für TYPO3 mit xdebug
Docker Entwicklungsumgebung für TYPO3 mit xdebug
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
Wordpress im docker
Wordpress im dockerWordpress im docker
Wordpress im docker
 
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagra...
 
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
Das Runde muss in das Eckige - Java-Anwendungen für Kubernetes entwickeln und...
 
The pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developersThe pain of choice - Important libs for C# developers
The pain of choice - Important libs for C# developers
 
DDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale EntwicklungsumgebungDDEV - Eine lokale Entwicklungsumgebung
DDEV - Eine lokale Entwicklungsumgebung
 

More from inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

More from inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

docker.io - Secure And Portable Containers Made Easy

  • 1. docker.io Secure And Portable Containers Made Easy Jürgen Brunk München, 30.04.2014
  • 2. docker.io 2 1.Was ist Docker ? 2.Was sind Container ? 3.Warum Docker ? 4.Architektur 5.Praxis 6.Docker unter Ubuntu installieren 7.Ein einfaches „Hello World“ Beispiel 8.Grundlegende Docker Befehle 9.Dockerfile 10.Container & Images transferieren Agenda
  • 4. docker.io 4 Was ist Docker ? Das Docker* Framework erlaubt es (Web-) Applikationen in schlanke, autarke und portable Umgebungen, sog. Container, zu verpacken *) engl. Hafenarbeiter
  • 6. docker.io 6 Was sind Container ? Operating system–level virtualization: z.B. jails, openvz, lxc, ... Abgeschottete Teilmenge des Hostsystems (getrennter Process-, Netzwerk-, I/O-Raum) Quasi „chroot on Steroids“
  • 9. docker.io 9 Warum Docker? (The Matrix from Hell)
  • 10. docker.io 10 Vorteile für DEV Einmal gebaut – läuft überall ! Saubere, sichere, portable Laufzeitumgebung für die Application Kein Problem mit Dependencies, Paketen etc. während des Deployments Jede Application ist ein isolierter Container mit ggf. unterschiedlichen SW-Versionen
  • 11. docker.io 11 Vorteile für OPS Einmal konfiguriert – läuft überall ! Keine Inkonsistenzen mehr zwischen Dev-, QA-, Stage-, Prod-Umgebung Schnelleres Deployment (continuous deployment / continuous integration) Schlanke Container – bessere Performance als VM's
  • 12. docker.io 12 Warum es funktioniert (Trennung der Zuständigkeiten) Entwickler: Kümmert sich um das was innerhalb des Containers ist: ● sein Code / Daten ● seine Libs / Frameworks ● sein Package Manager Alle Linux Server sehen gleich aus Admin: Kümmert sich um das was ausserhalb des Containers ist: ● Logging / Backup ● Remote Access ● Network Config Alle Container starten und stoppen gleich
  • 15. docker.io 15 schlank Docker* basiert auf Linux Containern LXC* Minimaler Overhead (cpu/io/network) Verwendet layered Filesystem *) Due to a bug in LXC, Docker works best on the 3.8 kernel
  • 16. docker.io 16 portabel Läuft auf jedem System das LXC unterstützt Ubuntu, Debian*, RHEL, Gentoo, Google Cloud, Rackspace Cloud, Amazon EC2, IBM Softlayer, Arch Linux, FrugalWare, Fedora, openSUSE, CRUX Linux Microsoft Windows*, Apple OSX*, Raspberry PI*
  • 17. docker.io 17 autark Ein Docker Container enthält alles nötige: ● Minimal Base OS (kein Kernel) ● Libraries / Frameworks ● Application Code + Data Ein Container kann überall da laufen wo auch Docker installiert werden kann
  • 23. docker.io 23 Docker unter Ubuntu installieren # Docker unter Ubuntu 13.xx / 14.04 LTS installieren $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install -y lxc-docker # Docker Installation prüfen $ sudo docker info $ sudo docker version # Docker Verzeichnis – hier liegt alles $ sudo ls -l /var/lib/docker/ # Docker Usage anzeigen lassen $ sudo docker
  • 25. docker.io 25 Ein einfaches „Hello World“ Beispiel # ein fertiges Image aus dem Docker Index ziehen $ sudo docker pull ubuntu # alle lokalen Images auflisten $ sudo docker images # einen Container erzeugen, Applikation # „/bin/echo“ laufen lassen und am Ende den # Container wieder entfernen $ sudo docker run --rm ubuntu /bin/echo „Hello World“
  • 27. docker.io 27 Grundlegende Docker Befehle docker search <TERM> docker start | stop | kill | restart <CID> docker ps [-a] docker images docker pull <IMAGE>[:TAG] docker run [-i] <IMAGE> [<CMD>] docker build <PATH> | <URL> | - docker rm <CID> docker rmi <IMAGE> docker save <IMAGE> docker load
  • 29. docker.io 29 Dockerfile # sshd # # VERSION 0.0.1 FROM ubuntu MAINTAINER Thatcher R. Peskens "thatcher@dotcloud.com" # make sure the package repository is up to date RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:screencast' |chpasswd EXPOSE 22 CMD /usr/sbin/sshd -D
  • 30. docker.io 30 Container aus dem Dockerfile bauen # Dockerfile erzeugen (Inhalt siehe letzte Folie) $ vi Dockerfile # Docker Image bauen, temporäre Zwischenbuilds am Ende verwerfen $ sudo docker build --rm -t img_sshd . # lokale Docker Images auflisten $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE img_sshd latest 9b8cbe62ff21 2 minutes ago 313.6 MB # neuen Container aus Image erzeugen und als Daemon starten $ sudo docker run -d -P --name ct_sshd img_sshd d25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c2 28f8
  • 31. docker.io 31 SSH Connect in den Container # Container auflisten $ sudo docker ps --no-trunc=true CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d25a3b457f1164abc0ab29c30581be3ac7b5594290ceece772bf0f4309c2 28f8 img_sshd:latest /bin/sh -c '/usr/sbin/sshd -D' 4 minutes ago Up 3 minutes 0.0.0.0:49153->22/tcp ct_sshd # Container → Host Port Mapping finden $ sudo docker port ct_sshd 22 0.0.0.0:49153 # SSH Connect via local Port forwarding (passwd = „screencast“) $ ssh -lroot -p49153 localhost # SSH Connect via Container IP $ sudo docker inspect ct_sshd | grep IPAddress
  • 33. docker.io 33 Container & Images transferieren Docker Images: $ sudo docker save img_sshd > save.tar $ scp save.tar Dockerfile newhost: newhost:$ sudo docker load < save.tar newhost:$ sudo docker run -d -P --name ct_sshd img_sshd Docker Containers: $ sudo docker export ct_sshd > export.tar $ scp export.tar Dockerfile newhost: newhost:$ cat export.tar | sudo docker import - img_newsshd newhost:$ sudo docker run -d -P --name ct_newsshd img_newsshd
  • 37. docker.io 37 Links Links: Docker Website: http://www.docker.io/ Docker Dokumentation: http://docs.docker.io/ Docker Command Line Reference: http://docs.docker.io/reference/commandline/cli/ Lightweight Linux for Docker: http://boot2docker.io/
  • 38. 38 Vielen Dank für Ihre Aufmerksamkeit Kontakt Jürgen Brunk Systems Engineer inovex GmbH Office München Valentin-Linhof Str. 2 D-81829 München Mobil: 0173 3181 003 Mail: juergen.brunk@inovex.de