컨테이너가 systemd를 실행합니다. systemd를 사용하여 스크립트를 실행하는 가장 쉬운 방법은 무엇입니까?

컨테이너가 systemd를 실행합니다. systemd를 사용하여 스크립트를 실행하는 가장 쉬운 방법은 무엇입니까?

systemd를 실행하는 컨테이너가 있고 다음 설정 지침은 다음에서 찾을 수 있습니다.

install.sh이제 빌드 단계에서 위에서 생성된 기본 이미지에서 실행해야 하는 스크립트가 생겼습니다 . 문제는 그것이 install.sh시스템화되어 있다는 것입니다.

그렇다면 systemd의 init를 실행하는 가장 쉬운 방법은 무엇 install.sh입니까?

buildah run $ctr -- sh /tmp/install.sh

하지만 이것은아니요내 요구 사항에 따라 systemd 에서 실행하십시오 install.sh.

답변1

나는 buildah를 사용하여 동일한 시스템 이미지를 구축하고 간단한 스크립트를 실행해 보았지만 제대로 작동했습니다. 어쩌면 뭔가를 놓쳤을 수도 있습니다.

 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

출력: 하하

마지막 댓글 이후: 여기에서 docker를 사용하세요.

비다건축용이다OCI이미지이므로 병렬로 사용하면팟캐스트또는도커이미지를 푸시하여 사용하세요.로컬 레지스트리사용건축업자공사 후시스템 이미지Dockerfile에서 /sys/fs/cgroup을 /sys/fs/cgroup으로 마운트합니다.읽기 전용옵션을 사용하면 systemd cgroup을 덮어쓰지 않습니다.

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'

관련 정보