GitLab Runner: Creazione di un'immagine Docker con Docker-in-Docker

Questa documentazione fa parte della guida Creazione di immagini Docker. Consulta la guida completa qui: Crea e pubblica immagini Docker in modo efficiente dalle tue pipeline GitLab CI/CD utilizzando i runner Stackhero e Docker-in-Docker.

👋 Benvenuto nella documentazione di Stackhero!

Stackhero ti offre una soluzione GitLab Runner cloud facile da usare, progettata per gestire in modo efficiente i tuoi job GitLab CI/CD. Ecco cosa puoi aspettarti:

  • Minuti CI/CD illimitati: nessuna fatturazione al minuto, le tue pipeline possono essere eseguite ogni volta che ne hai bisogno.
  • Job concorrenti multipli: esegui più job contemporaneamente per velocizzare l'intera pipeline.
  • Docker executor con supporto Docker-in-Docker: semplifica la creazione e il push delle tue immagini container.
  • Compatibile sia con GitLab.com che con qualsiasi istanza GitLab self-managed.
  • Una VM privata e dedicata alimentata da dischi NVMe/SSD veloci per build affidabili e costanti.
  • Disponibile sia nelle regioni 🇪🇺 Europa che 🇺🇸 USA.

Risparmia tempo: puoi collegare il tuo primo GitLab Runner e iniziare a eseguire pipeline in pochi minuti!

Puoi aggiungere il seguente esempio di .gitlab-ci.yml al tuo repository. Questa configurazione costruisce il Dockerfile presente nella root del progetto:

build-image:
  stage: build
  image: docker:29
  services:
    - docker:29-dind
  variables:
    DOCKER_TLS_CERTDIR: "/certs"
  before_script:
    - docker info
  script:
    # Sostituisci "my-image" con il nome desiderato:
    - docker build -t my-image .
    # Facoltativamente, esegui un test rapido sull'immagine appena creata:
    # - docker run --rm my-image /path/to/tests

In questo esempio viene utilizzata la versione 29 dell'immagine Docker. Puoi scegliere una versione più recente se disponibile. Trovi i tag più aggiornati sulla pagina ufficiale Docker image.

In questa configurazione, il servizio docker:29-dind avvia il demone Docker. Impostando DOCKER_TLS_CERTDIR: "/certs" abiliti una connessione TLS sicura tra il job e il demone Docker.