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'