Skip to content

Latest commit

 

History

History
135 lines (89 loc) · 3.36 KB

docker.md

File metadata and controls

135 lines (89 loc) · 3.36 KB

Docker

Docker Logo


Wat is Docker?

Docker is een toolset waarmee gebruikers applicaties in containers kunnen draaien.

  • Een runtime waarmee images als container gedraaid kunnen worden
  • Een taal om het bouwen van images te beschrijven
  • Een image format om gebouwde images op te slaan
  • Een protocol om images op te halen bij een "registry"

--

Container?

Container 101

--

Hoe werkt het?

Elk proces op Linux heeft namespaces

  • PID
  • Network
  • Mounts
  • UTS (hostname/nisdomainname)
  • IPC
  • cgroups (cpu/memory/io)

--

Windows container

Windows container

--

Containers zijn onveranderlijk

  • Containers draaien altijd op een copy-on-write filesystem (overlayfs)
  • Als een container stopt gaan wijzigingen verloren

Dockerfile

Een dockerfile bevat de stap-voor-stap instructies om een container image te maken. Deze dockerfile draait deze presentatie in een Docker container.

FROM centos:7
RUN yum -y install httpd && yum clean all
ADD . /var/www/html/

EXPOSE 80/tcp
CMD ["-D","FOREGROUND"]
ENTRYPOINT ["/usr/sbin/httpd"] 

--

Step by step

  • FROM centos/7 #Basis image
  • RUN yum -y install httpd && yum clean all # Installeer software
  • ADD . /var/www/html/ # Voeg files toe
  • EXPOSE 80/tcp # Geef aan dat we op port 80 verkeer ontvangen
  • CMD ["-D","FOREGROUND"] # Command arguments
  • ENTRYPOINT ["/usr/bin/httpd"] # Primary commmand

--

Overige directives

  • ENV
  • VOLUME
  • ONBUILD
  • LABEL
  • ARG
  • WORKDIR

Docker gebruiken

  • docker build -t slides .
    • Bouw de dockerfile in de huidige directory
  • docker run -ti busybox
    • Draai een busybox shell in docker
  • docker run -d -p 8080:80 slides -n slides
    • Docker run de slides container en bind host port 8080 aan container port 80
  • docker exec -ti slides bash
    • Draai een shell in een draaiende container

OCI Images

Docker images zijn gestandaardiseerd in de OCI Image specificatie Elke layer wordt targzipt en voorzien van metadata in json format

https://github.com/opencontainers/image-spec


Registries

Docker registry is in feite een http dienst waar de layers van images en metadata kan worden gezocht en gedownload

docker pull docker.io/php

  • Docker Hub (docker.io)
  • Redhat Container Registry (registry.access.redhat.com)
  • CentOS Container Registry (registry.centos.org)
  • Quay (quay.io)

Docker advanced topics

  • docker run -d mysql -v /var/tmp/mysql:/var/lib/mysql:Z
  • docker run -d -l mysql app
  • docker run --volumes-from app web

Alternate runtimes

  • rkt (Tectonic/Container Linux)
  • containerd
  • cri-o (Openshift)