Docker – eine Einführung

Docker ist ein Virtualisierungs-Tool, mit dem sich Betriebsystemumgebungen und dort lauffähige Software in Container verpackt werden kann und auch auf betriebsystemfremden Umgebungen ausgeführt werden kann.

Die Vorteile von Docker:

- mit Docker können sehr einfach Container ausgetauscht werden, dies hilft bei der Arbeit an gemeinsamen Projekten weiter, wenn Infrastruktur angeapsst werden muss, erst auf der dev Umgebung, dann auf der Test Umgebung usw. So können Test mit der passenden Umgebung ausgeführt werden, man hat somit eine dynamische Testumgebung, anstelle einer statischen

- performance Vorteile gegenüber virtuellen Maschinen

- die Container machen es einfacher, die Entwicklungsumgebung bei Softwareprojekten allen Teilnehmern schnell und einfach zur Verfügung zu stellen. Dadurch wird das Onboarding einfacher und Abhängigkeiten werden vermieden, wie z.B. ein Development Server, auf dem alle arbeiten, der aber nicht verändert werden darf

- auch verteilte Systeme könnne so endlich im Development und Testing Umgebung simuliert und getestet werden. Dadurch könnne Fehler früher gefunden und vermieden werden. Wer kennt das nicht, das Produktivsystem besteht aus mehreren Nodes hinter einem Loadbalancer mit Master/Slave Datenbank, aber das Dev/Test/Staging System hat nur eine Node ohne Slave.

- Plattformunabhängikeit: Man kann auf seinem MAC Windows Applikationen laufen lassen im Container ohne Probleme

Docker besteht aus mehreren Komponenten: weiterlesen…

Projekt: baby-taschenrechner.de

Das gerade fertiggestellt Projekt baby-taschenrechner.de beschäftigt sich mit den Fragestellungen rund um die Entwicklung des eigenen Kindes:

  • Wie groß wird mein Kind werden in x-Jahren
  • Wie schwer wird mein Kind in x-Jahren
  • Ist mein Kind zu schwer/zu dünn
  • Welche Kleidergröße wird es wann tragen?

Die Webseite soll Eltern dabei helfen herauszufinden, wann sie welche Kleidergröße kaufen müssen, um im nahenden Winter/Sommer das passende zu Hause zu haben.

Eltern können so einschätzne, ob das Kind zu dünn oder zu dick ist  für ihr Alter/Größe/Gewicht-Verhältnis.

Für die Realiserung wurden folgende Technologien verwendet:

Symfony 3, Docker, MySQL, PHP, GIT, Google Material Design, Amazon AWS

Elasticsearch 5 Cluster mit Docker Beispiel

Mit der docker-compose.yml kann man sich schnell eine Container-basierte Umgebung mit Docker bauen. Anpassbar sind die Memory-Werte für die Java-VM (512MB) und für das Docker Image (1GB).

Um einen Cluster mit 2 Nodes zu betreiben, kann man die elasticsearch2 auskommentieren.

version: '2'
services:
  elasticsearch1:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.1
    container_name: elasticsearch1
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 1g
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
#  elasticsearch2:
#    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.1
#    environment:
#      - cluster.name=docker-cluster
#      - bootstrap.memory_lock=true
#      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
#      - "discovery.zen.ping.unicast.hosts=elasticsearch1"
#    ulimits:
#      memlock:
#        soft: -1
#        hard: -1
#    mem_limit: 1g
#    volumes:
#      - esdata2:/usr/share/elasticsearch/data
#    networks:
#      - esnet

volumes:
  esdata1:
    driver: local
#  esdata2:
#    driver: local

networks:
  esnet:

Docker 1.9: error validating certificates

Fehlermeldung:

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout You can attempt to regenerate them using 'docker-machine regenerate-certs name'. Be advised that this will trigger a Docker daemon restart which will stop running containers.

Bei der Fehlermledung, die TLS Zertifikate neu regenerieren zu lassen, hat bei mir ncht geholfen, wie empfohlen von anderen, Virtual Box zu updaten auf die aktuelle Version, sondern nur, das default -Image, welches Docker selbst erzegt mit den Zertifikaten zusammen neu generieren zu lassen.

  1. Dafür öffnet man Virtual Box und stopt die laufenden virtuellen Maschine (default) per schließen -> ausschalten
  2. Dann löscht man das Image in Virtual Box.
  3. Anschließend lässt man das Image neu generieren mit Docker über das Ausführen des Docker Terminals