コンテナは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'

おすすめ記事