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'