Docker

Da GolemWiki.

Golem-template-note-attention.png Se stai usando Docker per realizzare un servizio al GOLEM, allora dovresti considerare di scambiare quattro chiacchiere col sistemista e di entrare a far parte del gruppo del sistema automatico argilla su git.


Flusso di lavoro

Ho un programma e voglio farne un container docker per usarlo nell'infrastruttura GOLEM. Che fare?

Sono il programmatore:

  1. Scrivere il Dockerfile per il proprio programma
  2. Creare l'immagine per il proprio programma

Sono il sistemista:

  1. Scrivere il docker-compose.yml per il servizio
  2. Avviare il servizio

Segue un esempio di flusso di lavoro per thttpd.

Dockerfile

Dockerfile
 FROM alpine:latest
 RUN apk add thttpd
 ENTRYPOINT ["thttpd", "-D", "-d", "/html"]

Creare l'immagine e taggarla

docker build --tag hub.docker.golem.linux.it/thttpd:latest .

Creare il servizio

Il servizio si chiamerà webserver.

docker-compose.yml
 version: "3.3"
 services:
   webserver:
     image: hub.docker.golem.linux.it/thttpd:latest
     restart: unless-stopped
     ports:
       - "8000:80"
     volumes:
       - /srv/webserver:/html

dove:

  • webserver è il nome del servizio, usato da docker-compose per nominare i container automaticamente
  • image immagine docker, con tanto di dominio del repository
  • ports sono espresse nella forma host:container
  • volumes: usare sempre una cartella nella forma /srv/$nome_servizio, per coerenza

Avvio

docker-compose up

(eventualmente usare anche -d per mandarlo in background)

Pushare immagine

Sul repository privato:

docker push hub.docker.golem.linux.it/thttpd:latest

Ma se non l'hai mai fatto, la prima volta il repository richiede l'autenticazione:

docker login hub.docker.golem.linux.it