Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Docker presentatie voor TFE

Henk
March 12, 2015

Docker presentatie voor TFE

Voor de bier- & pizza-avond / kennis-sessie van maandag 16 maart 2015.

Henk

March 12, 2015
Tweet

More Decks by Henk

Other Decks in Technology

Transcript

  1. Wie? • Henk • Linux is zeg maar echt mijn

    ding • systeembeheerder bij theFactor.e sinds januari 2009 • Dockert sinds voorjaar 2013
  2. Docker? Docker is an open-source engine that automates the deployment

    of applications into containers. ! James Turnbull, The Docker Book, 2014
  3. En verder..? • applicatie virtualisatie: Build, Ship and Run Any

    App, Anywhere • nu nog alleen op Linux, maar… straks ook op Windows Server vNext • ’n laag om LXC (LinuX Containers) • portabiliteit door standaardisatie Het concept an sich is niet uniek, maar Docker als tool wel!
  4. Onder de motorkap • libcontainer / LXC - container format

    • namespaces - isolation • cgroups - sharing • unionfs - layering
  5. Images & containers Een container is een instance van een

    image. ! Een image is een set layers zoals men ze heeft beschreven (in een Dockerfile). ! Een image is read-only en veranderd NIET. ! Als je een image (op)start, heb je een draaiende container van dat image. ! Men kan vele draaiende containers van hetzelfde image hebben.
  6. ο Omdat Docker gebruik maakt van een Union File System,

    denken de processen dat het hele bestandssysteem read-write is gemount. Maar alle wijzigingen gaan naar de top-most writable layer. Daaronder is het originele bestand in het read-only image ongewijzigd. Aangezien images niet veranderen, hebben images geen state.
  7. Images ophalen / maken $ wget http://cdimage.ubuntu.com/ubuntu-core/trusty/daily/current/trusty-core-amd64.tar.gz ! $ cat

    trusty-core-amd64.tar.gz | docker import - ubuntucore ! $ docker tag ubuntucore hbokh/ubuntucore ! $ docker push hbokh/ubuntucore Een image ophalen (pull): $ docker pull ubuntu:trusty ! Download het officiële Ubuntu base image - versie 14.04 (Trusty) - van de Docker-registry. Zie ook https://registry.hub.docker.com/_/ubuntu/ Zelf een OS-image maken, van een OS-tarball:
  8. Dockerfile FROM dockerfile/nodejs ! MAINTAINER Henk Bokhoven <[email protected]> ! #

    Change this when a newer version is released: ENV BUCKETS_VERSION 0.0.7 ! ADD https://github.com/asm-products/buckets/archive/v${BUCKETS_VERSION}.tar.gz /tmp/buckets.tar.gz ! RUN cd /opt && tar zxf /tmp/buckets.tar.gz && rm /tmp/buckets.tar.gz && \ cd /opt/buckets-${BUCKETS_VERSION} && \ sed -i 's/localhost/mongo/g' server/config.coffee && \ npm install -g grunt-cli && \ npm install && \ grunt ! EXPOSE 3000 ! WORKDIR /opt/buckets-${BUCKETS_VERSION} ! CMD ["npm", "start"] Bron: https://github.com/hbokh/docker-buckets-cms
  9. In den beginne // 1 Project ”TYPO3 CMS” clonen vanaf

    een GitHub-repository: ! $ git clone https://github.com/hbokh/docker-typo3-cms.git . ! Image builden van de Dockerfile: ! $ docker build --rm=true -t hbokh/docker-typo3-cms .
  10. In den beginne // 2 Is er inmiddels een container?

    $ docker ps Nee ———> ! Is er dan wel een image? $ docker images Ja, meerdere ———>
  11. In den beginne // 3 Container starten van image: !

    $ docker run -td -p 80:80 --link mariadb:db hbokh/docker-typo3-cms ! Huh..?!
  12. In den beginne // 4 Dat ging fout … …

    omdat er geen link kan worden gemaakt met de database-container “mariadb”. Die is er nog niet, dus laten we die opstarten: ! $ docker run -td --name mariadb -e USER=mariadb -e PASS=p4ssw0rd paintedfox/mariadb ! Dat image is lokaal nog niet te vinden, dus wordt middels een pull opgehaald: Controle met docker ps:
  13. In den beginne // 5 ! ! De volgende poging

    om de TYPO3-container te starten werkt dan wel: Verbinden naar $DOCKER_HOST (in dit geval het IP-adres van boot2docker): http://192.168.59.103/ geeft het TYPO3 CMS installatie-setupscherm.
  14. In den beginne // 6 - Containers stoppen: 
 $

    docker stop mariadb typo3-cms ! - Containers verwijderen:
 $ docker rm mariadb ! - Image verwijderen:
 $ docker rmi hbokh/docker-typo3-cms
  15. In den beginne // 6b Ja maar… kan dat niet

    makkelijker?! Zeker, bijvoorbeeld met de tools “crane” of “fig” (recentelijk omgedoopt in “docker-compose”): ! Bestandsnaam fig.yml: ! mariadb: image: paintedfox/mariadb:latest environment: - USER=mariadb - PASS=p4ssw0rd typo3cms: image: hbokh/docker-typo3-cms:latest links: - mariadb:db ports: - "80:80" ! ! En dan (commands): ! fig up of fig up -d fig up —no-recreate / fig up -d —no-recreate
  16. Do the Docker Doel Command ! ! Build een image

    docker build --rm=true . Install een image docker pull ${IMAGE} Lijst van installed images docker images Lijst van installed images (detail) docker images —no-trunc Verwijder een image docker rmi ${IMAGE_ID} Verwijder alle untagged images docker rmi $(docker images -q -f dangling=true) ! ! ! Run een container docker run ${IMAGE} Lijst van containers docker ps / docker ps -a Stop een container docker stop ${CID} Vind IP adres van een container docker inspect -f '{{ .NetworkSettings.IPAddress }}' ${CID} Start shell in een container docker exec -ti ${NAME} bash Verwijder een container docker rm ${CID} Verwijder alle containers docker rm $(docker ps -aq)
  17. Vragen? - 10-Minute tutorial (emulator): https://www.docker.com/tryit/ - Docker documentatie: https://docs.docker.com/

    - Docker Weekly: https://blog.docker.com/docker-weekly-archives/ - Docker Grunn - Meetup: http://www.meetup.com/DockerGrunn/ - Presentatie: https://speakerdeck.com/hbokh/docker-grunn-basic-tooling-voor-docker - Linkdump: http://www.nkode.io/2014/08/24/valuable-docker-links.html Dank voor jullie aandacht! Nuttige links: