Jdi na navigaci

Vytváření images

Pomocí GitLab CI je možné automatizovaně vytvářet kontejnerové (docker) images a ty nahrávat do lokálního GitLab Container Registry.

Pro vytváření image doporučujeme použít nástroj buildah pomocí image ict/images/buildah viz Doporučený postup.

Připravili jsme pro vás image ict/images/buildah, který obsahuje nástroj buildah a některé kroky provede za vás (nastavení prostředí, přihlášení do GitLab Registry a dependency proxy).

Ukázka 1. Ukázka použití
build:
  image: $CI_REGISTRY/ict/images/buildah/alpine:latest 1
  variables:
    IMAGE_TAG: my-image:latest  2
  script:
    - buildah build --squash --from $CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX/alpine:latest --tag $IMAGE_TAG -f Dockerfile 3
    - buildah push $IMAGE_TAG $CI_REGISTRY_IMAGE/$IMAGE_TAG 4
  1. Alpine Linux s předkonfigurovaným nástrojem buildah
  2. Název image
  3. Příkaz, který sestaví image z alpine:latest, konfiguruje jej pomocí souboru Dockerfile, sloučí všechny vrstvy do jedné a označí ho tagem $IMAGE_TAG (obdoba příkazu docker build). [1]
  4. Příkaz, který pushne image do "Container Registry" aktuálního projektu.

Obecný postup

Obecný postup (bez použití buildah image výše) je následující:

  1. Nainstalovat balíček buildah.

    Důležité:

    U Alpine v3.18 je nutné doinstalovat balíček fuse-overlayfs, jelikož již není závislost buildah.
    Důrazně nedoporučujeme používat ovladač vfs, místo toho použijte prosím ovladač overlay!

  2. Nastavit proměnnou prostředí BUILDAH_ISOLATION=chroot.[2]
  3. Přihlásit se do GitLab registry: buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY.
    1. Pokud má být image stavěn pomocí image z Docker Hubu, přihlásit se také k GitLab dependency proxy:
      buildah login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_DEPENDENCY_PROXY_SERVER.
  4. Sestavit image, např.: buildah build --squash --tag pkg:stable.
  5. Nahrát image do Registry: buildah push pkg:stable $CI_REGISTRY_IMAGE/pkg:stable.

Tipy

Spuštění příkazu v image

Pokud potřebujete image v rámci pipeline „spustit“ (tj. vytvořit z něj kontejner a v něm spustit příkaz), např. pro ověření funkčnosti, provedete to následovně:

ctr=$(buildah from $IMAGE_TAG)
buildah run $ctr -- command arg1 arg2 argn

  1. Výchozí formát metadat image je OCI. Pokud z nějakého důvodu potřebujete zastaralý docker formát, použijte --format docker. Více viz dokumentace buildah.
  2. Tento krok je prozatím potřeba pouze u Alpine linuxu.