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

Docker bij TFE

Avatar for Henk Henk
March 02, 2016

Docker bij TFE

Docker presentation in Dutch

Avatar for Henk

Henk

March 02, 2016
Tweet

More Decks by Henk

Other Decks in Technology

Transcript

  1. whoami • Henk, Twitter: @BOK • ops @ TFE •

    Met Joshua & Tijmen in Docker Grunn-board • Dockert sinds voorjaar 2013
  2. In den beginne • Testcase Q4 2014: GitLab in Docker

    • Van start in Q2 2015, met 1 dev en 1 ops
  3. In den beginne • Testcase Q4 2014: GitLab in Docker

    • Van start in Q2 2015, met 1 dev en 1 ops • Ansible voor automation & deployment
  4. In den beginne • Testcase Q4 2014: GitLab in Docker

    • Van start in Q2 2015, met 1 dev en 1 ops • Ansible voor automation & deployment • Docker host-OS: CoreOS Ubuntu
  5. In den beginne • Testcase Q4 2014: GitLab in Docker

    • Van start in Q2 2015, met 1 dev en 1 ops • Ansible voor automation & deployment • Docker host-OS: CoreOS Ubuntu • Focus op PHP-applicaties
  6. In den beginne • Testcase Q4 2014: GitLab in Docker

    • Van start in Q2 2015, met 1 dev en 1 ops • Ansible voor automation & deployment • Docker host-OS: CoreOS Ubuntu • Focus op PHP-applicaties • Q4 2015: eerste Docker env in PRD
  7. De PRD-case • CentOS 6 • Apache 2.2.15 Een nieuwe

    klant met een maatwerk-applicatie op: - Erg veel cronjobs / batches - Niet veel speeltijd en -ruimte om code om te gooien • MySQL 5.1 • mod_php 5.4
  8. Hoe? VIER images voor DRIE containers: - Ubuntu 14.04 LTS

    (base) - nginx 1.9 - PHP-FPM 5.5 - MySQL 5.5 Foto-credits: https://flic.kr/p/5iF3Pn
  9. Hoe? Een eigen base image o.b.v. Ubuntu 14.04 LTS, geïnspireerd

    op phusion/baseimage (cron / syslog / etc.)
  10. Hoe? Geen “docker push” van de images naar (public) registry,

    maar “docker save” naar interne NFS-server
  11. Hoe? De NFS-share lokaal gemount op onze eigen Linux /

    OS X systemen sudo mount -t nfs dikkeNAS01:/docker /mnt/docker
  12. Hoe? Deze Linux / OS X systemen hebben een clone

    van Ansible-playbooks & -roles uit onze git-repo
  13. Hoe? Deploy op Rackspace Cloud Servers, met PrivateNet tussen de

    Docker-hosts en hostname mappings docker-compose.yml: phpfpm: image: thefactore/phpfpm-php5.5:1.1.3 container_name: phpfpm extra_hosts: - "dbhost:192.168.1.2"
  14. Hoe? Eigen Ansible-role “TFE.DockerDeploy” in playbooks: -{ role: TFE.DockerDeploy, dockerdeploy_container_name:

    'nginx', dockerdeploy_image_name: 'thefactore/nginx', dockerdeploy_image_version: '1.1.2', docker_image_source_location_folder: '/mnt/docker/images/Webserver/Nginx/1.1.2/', override_docker_compose_file_with: '../Files/WebserverPHP5.5/opt/docker/Nginx/docker-compose.yml', }
  15. Hoe? ACC
 1 Docker-host
 3 containers - web & db

    PRD
 2 Docker-hosts
 2 containers - web 1 container - db Foto-credits: https://flic.kr/p/kzLw9n Don’t put all your containers on one ship
  16. Hoe? (Web-)data is buiten containers geplaatst op Docker-host, dus geen

    data volume-containers: # ls -altrF /opt/www/www.foo.nl/builds/bar.1.2.1/ drwxrwxr-x 5 www-data www-data 4096 Dec 22 10:36 . drwxrwxr-- 4 www-data www-data 4096 Jan 18 15:06 .. drwxrwxr-x 5 www-data www-data 4096 Jan 6 09:58 Application drwxrwxr-x 4 www-data www-data 4096 Dec 21 16:51 Configuration drwxrwxr-x 3 www-data www-data 4096 Dec 21 16:51 Documentation Mount deze host-directories als data volumes: nginx: image: thefactore/nginx:1.1.0 container_name: nginx volumes: - /mnt/data/:/mnt/data - /opt/www/:/opt/www - /opt/var/www/:/var/www . . .
  17. Kon minder - Versnelde invoering van git en GitLab -

    Dev en Ops groeien naar elkaar toe - PRD / ACC / TST zijn eindelijk gelijk
  18. Kon beter - Tijd verloren aan CoreOS & NFS-server IN

    Docker-container - MySQL in container:
 my.cnf niet 1-op-1 bruikbaar van server naar container O_DIRECT is NOT supported by rootfs file system of Docker container on Ubuntu 14.04 - Speeltijd van de baas (R&D)