Docker är en open source-produkt med ett bolag med samma namn bakom. Docker är från början för Linux men har kommit till fler plattformar tex Mac och Windows.
Börja här: www.docker.com/products/docker
Recept för att skapa en container. Alltså vilka ingående komponenter som ska vara med i min server (Java 1.6.5, Apache 2.0 osv) det som tidigare gjordes förhand en gång och sedan glömdes bort. Vilket gjorde det jobbigt att göra om och att återanvända.
Färdiga images, image bibliotek: hub.docker.com (går även att hämta från github eller egen hostad image library)
En container utgår alltid från en image och är det som körs
docker run -i -t ubuntu /bin/bash
(Finns många run kommandon dessa betyder: -t = Allocate a pseudo-tty, -i = Keep STDIN open even if not attached. Mer info finns här)
Köra en viss version:
docker run -i -t ubuntu:12.04 /bin/bash
Ett exempel är Postgis på Dockerhub
Ett litet exempel:
FROM mdillon/postgis:9.1
ADD sql/*.sql /docker-entrypoint-initdb.d/
Bygga docker build -t min-postgis-image:0.1 ./postgis_docker_exempel
Starta docker run -d -p 5432:5432 --name min-postgis-container -it min-postgis-image:0.1 postgres
-d = detached
Hur mår containern?
docker ps
docker logs min-postgis-container
Anslut till
docker exec -it min-postgis-container psql -Upostgres -c "select * from geodata;"
Stoppa
docker stop min-postgis-container
docker --help
eller docker command line reference
Jobbigt att hålla koll på ett docker build
/ docker run
kommando. Ännu jobbigare om det är flera...
docker-compose räddar oss.
Ett lager utanpå Docker för att förenklat hantering av docker containrar. Samt ger möjligheten att skapa recept för att hantera och länka ihop flera containrar i en så kallad docker-compose.yml-fil. (docker-compose finns med i kartongen i Docker for Mac och Docker for Windows)
docker-compose.yml
exempel:
min-postgis:
build: postgis_docker_exempel/.
ports:
- "5432:5432"
min-geoserver:
image: winsent/geoserver
links:
- min-postgis
ports:
- "8080:8080"
docker-compose up
bygg och starta
docker-compose referens finns här
Nu finns GeoServer tillgänglig på:
http://localhost:8080/geoserver/web
Främst för att förenkla överlämnande och uppsättning av utvecklingsmiljöer. Lättare att förvalta projekt över tid. Slippa hantering av stora virtuella maskiner.
##Exempel på projekt där vi gör det här idag