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

Docker Grunn - Basic tooling voor Docker

Henk
January 08, 2015

Docker Grunn - Basic tooling voor Docker

Presentatie voor Docker Grunn Meetup, 8 januari 2015
Code en voorbeelden: https://github.com/dockergrunn/samples/tree/meetup-2015-01-08/Henk%20Bokhoven

Henk

January 08, 2015
Tweet

More Decks by Henk

Other Decks in Technology

Transcript

  1. Wie • Henk Bokhoven - Twitter: @BOK • ops bij

    theFactor.e (voorheen bij KPN / Atos Origin) • Linux sinds kernel 1.2.8 (1995); Docker sinds 2013 • Docker-logo contest: Moby Dock naam gegeven
  2. Wat weten jullie van Docker? • wel over Docker gehoord,

    maar (nog) niets mee gedaan • een beetje met Docker gespeeld op een enkele host • er een OTA-straat op draaien • een PRD-cluster op Docker draaien • 300 miljoen containers gestart de afgelopen maand Ik heb …
  3. Waar gaat dit over? • Hands-on “orchestration” met Fig en

    Crane • Een aantal web UI’s tonen Basic tooling voor Docker
  4. # Docker ############################################################## alias d='docker' alias dl='docker ps -l -q'

    # Kill all running containers. alias dockerkillall='docker kill $(docker ps -q)' # Delete all stopped containers. alias dockercleanc='printf "\n>>> Deleting stopped containers\n\n" && docker rm $(docker ps -aq)' # Delete all untagged images. alias dockercleani='printf "\n>>> Deleting untagged images\n\n" && docker rmi $(docker images -q -f dangling=true)' # Delete all stopped containers and untagged images. alias dockerclean='dockercleanc || true && dockercleani' # OSX / boot2docker ################################################### # Port 2375 will be used for HTTP and 2376 will be used for HTTPS traffic to the Docker API. #export DOCKER_HOST=tcp://boot2docker:2375 export DOCKER_HOST=tcp://boot2docker:2376 export DOCKER_CERT_PATH=/Users/hbokh/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1 export BOOT2DOCKER_DIR=/Users/hbokh/.boot2docker Environment • In mijn .profile-bestand:
  5. 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)
  6. Fig & Crane File: fig.yml mongo: image: dockerfile/mongodb buckets-cms: image:

    hbokh/docker-buckets-cms links: - mongo:mongo ports: - "3000:3000" $ fig up / fig up -d —no-recreate File: crane.yml --- containers: mongo: image: dockerfile/mongodb run: detach: true buckets-cms: image: hbokh/docker-buckets-cms run: publish: ["3000:3000"] link: ["mongo:mongo"] detach: true $ crane lift / crane run Fig http://fig.sh Crane https://github.com/michaelsauter/crane
  7. Fig vs. Crane • Crane ondersteunt underscores in container-names,
 Fig

    niet: Invalid service name "docker_typo3cms" - only [a-zA-Z0-9] are allowed • Fig maakt container-name met directory-name erin
 ($:~/dev/Docker/docker-typo3-cms)-> fig ps
 Name Command State Ports
 ---------------------------------------------------------------------------------------
 dockertypo3cms_mariadb_1 /sbin/my_init -- /scripts/ ... Up 3306/tcp
 dockertypo3cms_typo3cms_1 /bin/sh -c /start.sh Up 0.0.0.0:80->80/tcp • Crane: grouping • Fig is geschreven in Python, Crane in Go
  8. Fig - installatie Binary: curl -L https://github.com/docker/fig/releases/download/1.0.1/fig-`uname -s`-`uname -m` >

    /usr/local/bin/fig; chmod +x /usr/local/bin/fig Pip: sudo pip install -U fig
  9. Crane - installatie Binary: bash -c "`curl -sL https://raw.githubusercontent.com/michaelsauter/crane/master/download.sh`" &&

    sudo mv crane /usr/local/bin/crane Of: Zelf compileren met de Go toolchain (go get and go install).
  10. GitLab (Ruby on Rails) Redis PostgreSQL GitLab - 3 containers

    - user sessions - background task queue - object-relational
 database system
  11. Fig - in de praktijk Start 3 containers: 1. postgresql.docker

    docker run --name=postgresql -d -e 'DB_NAME=gitlabhq_test' -e 'DB_USER=gitlab' -e 'DB_PASS=p4ssw0rd' -v /opt/postgresql/data:/var/lib/postgresql sameersbn/postgresql:latest 2. redis.docker docker run --name=redis -d sameersbn/redis:latest 3. gitlab.docker docker run --name=gitlab -d --link postgresql:postgresql --link redis:redisio -e 'SMTP_ENABLED=true' -e 'SMTP_DOMAIN=example.nl' -e 'SMTP_HOST=smtp.example.nl' -e 'SMTP_OPENSSL_VERIFY_MODE=none' -e '[email protected]' -e 'GITLAB_HOST=gitlab.example.nl' -e 'GITLAB_SIGNUP=true' -e 'GITLAB_PORT=80' -e 'GITLAB_SSH_PORT=10022' -p 10022:22 -p 80:80 -v /opt/gitlab/data:/home/git/data sameersbn/ gitlab:latest
  12. postgresql: image: sameersbn/postgresql:latest environment: - DB_USER=gitlab - DB_PASS=p4ssw0rd - DB_NAME=gitlabhq_test

    volumes: - /opt/postgresql/data:/var/lib/postgresql redis: image: sameersbn/redis:latest gitlab: image: sameersbn/gitlab:latest environment: - SMTP_ENABLED=true - SMTP_DOMAIN=example.nl - SMTP_HOST=smtp.example.nl - SMTP_OPENSSL_VERIFY_MODE=none - [email protected] - GITLAB_SIGNUP=true - GITLAB_HOST=gitlab.example.nl - GITLAB_PORT=80 - GITLAB_SSH_PORT=10022 links: - redis:redisio - postgresql:postgresql volumes: - /opt/gitlab/data:/home/git/data ports: - "80:80" - "10022:22" Als ”fig.yml”:
  13. Controle: fig ps ($:~/dev/Docker/gitlabhq)-> fig ps Name Command State Ports

    -------------------------------------------------------------------------------------------------------- gitlabhq_gitlab_1 /app/init app:start Up 0.0.0.0:10022->22/tcp, 443/tcp, 0.0.0.0:80->80/tcp gitlabhq_postgresql_1 /start Up 5432/tcp gitlabhq_redis_1 /start Up 6379/tcp
  14. Doe het lekker zelf Getting Started with Docker Orchestration using

    Fig http://blog.docker.com/2014/08/getting-started-with- orchestration-using-fig/ • Beginner
  15. Crane - in de praktijk Start 3 containers: 1. postgresql.docker

    docker run --name=postgresql -d -e 'DB_NAME=gitlabhq_test' -e 'DB_USER=gitlab' -e 'DB_PASS=p4ssw0rd' -v /opt/postgresql/data:/var/lib/postgresql sameersbn/postgresql:latest 2. redis.docker docker run --name=redis -d sameersbn/redis:latest 3. gitlab.docker docker run --name=gitlab -d --link postgresql:postgresql --link redis:redisio -e 'SMTP_ENABLED=true' -e 'SMTP_DOMAIN=example.nl' -e 'SMTP_HOST=smtp.example.nl' -e 'SMTP_OPENSSL_VERIFY_MODE=none' -e '[email protected]' -e 'GITLAB_HOST=gitlab.example.nl' -e 'GITLAB_SIGNUP=true' -e 'GITLAB_PORT=80' -e 'GITLAB_SSH_PORT=10022' -p 10022:22 -p 80:80 -v /opt/gitlab/data:/home/git/data sameersbn/ gitlab:latest
  16. --- containers: postgresql_gitlab: image: sameersbn/postgresql:latest run: env: ["DB_USER=gitlab", "DB_PASS=p4ssw0rd", "DB_NAME=gitlabhq_test"]

    volume: ["/opt/postgresql/data:/var/lib/postgresql"] detach: true redis: image: sameersbn/redis:latest run: detach: true gitlab: image: sameersbn/gitlab:latest run: env: ["SMTP_ENABLED=true", "SMTP_DOMAIN=example.nl", \ "SMTP_HOST=smtp.example.nl", "SMTP_OPENSSL_VERIFY_MODE=none", \ "[email protected]", "GITLAB_SIGNUP=true", \ "GITLAB_HOST=gitlab.example.nl", "GITLAB_PORT=80", \ "GITLAB_SSH_PORT=10022"] publish: ["80:80", "10022:22"] link: ["redis:redisio", “postgresql_gitlab:postgresql"] volume: ["/opt/gitlab/data:/home/git/data"] detach: true Als ”crane.yml”:
  17. Controle: crane status ($:~/dev/Docker/gitlabhq)-> crane status NAME IMAGE ID UP

    TO DATE IP PORTS RUNNING postgresql_gitlab sameersbn/postgresql:latest dc0666e306e6 true 172.17.0.8 5432/tcp, true redis sameersbn/redis:latest 9a51c2270792 true 172.17.0.9 6379/tcp, true gitlab sameersbn/gitlab:latest cfcab6c243ba true 172.17.0.10 22/tcp,443/tcp,80/tcp, true
  18. Doe het lekker zelf Docker tutorial: Puppet and The Foreman

    http://www.ivoverberk.nl/docker-tutorial-puppet-and-the- foreman/ • Advanced
  19. Nog meer..? Fugu, a docker run wrapper (w/o orchestration) https://github.com/mattes/fugu

    # fugu.yml (maybe stored next to Dockerfile) image: mattes/hello-world-nginx # mandatory name: hello-world-nginx detach: true publish: - 8080:80
  20. DockerUI • docker pull crosbymichael/dockerui • docker run --name=dockerui -d

    -p 9000:9000 -v /var/run/docker.sock:/ docker.sock crosbymichael/dockerui -e / docker.sock A web interface for docker https://github.com/crosbymichael/dockerui
  21. Seagull • docker pull tobegit3hub/seagull • docker run --name=seagull -d

    -p 10086:10086 -v /var/run/docker.sock:/ var/run/docker.sock tobegit3hub/seagull Friendly Web UI to monitor docker daemon https://github.com/tobegit3hub/seagull
  22. Dockerboard • docker pull dockerboard/dockerboard • docker run --name dockerboard

    -d -p 8001:8001 -v /var/run/docker.sock:/var/ run/docker.sock dockerboard/dockerboard Simple dashboards, visualizations, managements for your dockers https://github.com/dockerboard/dockerboard
  23. Nog meer..? Vessel is a native application used to setup

    and manage development environments using Vagrant and Docker. App voor Mac. http://awvessel.github.io/
  24. Enkele nuttige links Docker 10 min. tutorial: https://www.docker.com/tryit/ Docker Cheat

    Sheet: https://github.com/wsargent/docker-cheat-sheet Valuable Docker Links: http://www.nkode.io/2014/08/24/valuable-docker-links.html
  25. Dank voor jullie aandacht. Henk Bokhoven ©, 2015 Fonts: „Sketchetik

    Light” (gratis) & Monaco. Was het OK? Laat @BOK het weten!