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

Docker bij TFE

Henk
March 02, 2016

Docker bij TFE

Docker presentation in Dutch

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)