Container esegue systemd, qual è il modo più semplice per eseguire uno script che utilizza systemd?
Ho un contenitore che esegue systemd, le istruzioni di installazione seguite possono essere trovate su
Ora ho uno script install.shche devo eseguire nella fase di compilazione sull'immagine di base creata sopra. Il problema è che install.shè a conoscenza del sistema.
Quindi qual è il modo più semplice per far eseguire l'init di systemd install.sh, quello che voglio è qualcosa di simile
buildah run $ctr -- sh /tmp/install.sh
Ma questo non funzionerà install.shcon systemd, come richiesto.
Risposte
Ero solito costruire la stessa immagine di systemd con buildah e ho provato a eseguire uno script semplice e funziona bene; forse mi manca qualcosa:
buildah run -t -v /sys/fs/cgroup:/sys/fs/cgroup:ro onbuild-image-working-container-2 sh -c 'cat /tmp/install.sh'
--> #!/bin/bash
--> echo lol
buildah run -t -v /sys/fs/cgroup:/sys/fs/cgroup:ro onbuild-image-working-container-2 sh -c 'chmod 777 /tmp/install.sh && /tmp/install.sh'
--> lol
USCITA: lol
DAL tuo ultimo commento: utilizzo qui docker
BUILDAH è destinato per la costruzione di OCI immagini, quindi se si sta utilizzando in parallelo podman o finestra mobile semplicemente usare spingere l'immagine su un registro locale utilizzando buildah dopo la costruzione systemd-immagine da Dockerfile e montare / sys / fs / cgroup su / sys / fs / cgroup con opzioni di sola lettura in modo da non sovrascrivere i cgroup di systemd:
buildah bud --format=docker -f Dockerfile -t onbuild-image <path_to_DockerFile>
docker run -d -p 5000:5000 --restart=always --name registry registry:2
buildah push --tls-verify=false onbuild-image docker://localhost:5000/systemd-centos:latest
docker pull localhost:5000/systemd-centos:latest
ctr1="$(docker run -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 8000:80 localhost:5000/systemd-centos)"
docker exec -it $ctr1 'systemctl'