起動時に Quadlet コンテナが起動しません。 network-online.targetに問題がありますか?

起動時に Quadlet コンテナが起動しません。 network-online.targetに問題がありますか?

私はOpenuse環境(具体的にはmicroOS)で2つの異なるコンテナを実行するためにクワッドを作成しました。 4つの双子は、/etc/containers/systemd自動化されたインストール中に移植されました。次回のブート時に(そしてそれ以降のすべてのブート時に)実行したいと思います。

初めて起動するとコンテナが起動しようとしていることがわかりますが、すべて同じエラーで失敗します(「エラー:ソースの初期化中」)。network-online.target尊重されていないようでした。手動で実行すると、systemctl start両方のコンテナが正常に起動します。

最初はこの行がWantedBy含まれていましたが、このコンテナをデプロイするためにシステムを完全に起動したいので、後者は不要です。サービスは明らかに構築されて起動しようとしていますが、エラーが原因で画像を取得できないようです。利用可能なガイドラインを見てみると正しいようです。multi-user.targetdefault.targetAfternetwork-online.target

  • /etc/containers/systemd/wireguard.service:

    [Unit]
    Description=Wireguard container
    After=network-online.target
    
    [Container]
    Image=docker.io/procustodibus/wireguard
    AddCapability=NET_ADMIN NET_RAW
    ContainerName=wireguard
    PublishPort=51822:51822/udp
    Volume=/etc/wireguard/conf:/etc/wireguard:Z
    PodmanArgs=--sysctl "net.ipv4.conf.all.forwarding=1"
    
    [Install]
    # Start by default on boot
    WantedBy=multi-user.target
    
  • systemctl status wireguard.service初めて起動した後の出力:

    × wireguard.service - Wireguard container
         Loaded: loaded (/etc/containers/systemd/wireguard.container; generated)
         Active: failed (Result: exit-code) since Wed 2023-11-22 21:10:23 UTC; 5min ago
        Process: 1395 ExecStart=/usr/bin/podman run --name=wireguard --cidfile=/run/wireguard.cid --replace --rm --cgroups=split --sdnotify=conmon -d --cap-add=net_admin --cap-add=net_raw -v /etc/wireguard/conf:/etc/wireguard:Z --publish 51822:51822/udp --sysctl net.ipv4.co>
        Process: 1520 ExecStopPost=/usr/bin/podman rm -f -i --cidfile=/run/wireguard.cid (code=exited, status=0/SUCCESS)
       Main PID: 1395 (code=exited, status=125)
            CPU: 392ms
    
    Nov 22 21:10:20 proscale-micro-01.abc.abctechnology.com systemd[1]: Starting Wireguard container...
    Nov 22 21:10:23 proscale-micro-01.abc.abctechnology.com wireguard[1395]: Trying to pull docker.io/procustodibus/wireguard:latest...
    Nov 22 21:10:23 proscale-micro-01.abc.abctechnology.com wireguard[1395]: Pulling image docker.io/procustodibus/wireguard:latest inside systemd: setting pull timeout to 5m0s
    Nov 22 21:10:23 proscale-micro-01.abc.abctechnology.com wireguard[1395]: Error: initializing source docker://procustodibus/wireguard:latest: pinging container registry registry-1.docker.io: Get "https://registry-1.docker.io/v2/": dial tcp: lookup registry-1.docker.io on 192>
    Nov 22 21:10:23 proscale-micro-01.abc.abctechnology.com systemd[1]: wireguard.service: Main process exited, code=exited, status=125/n/a
    Nov 22 21:10:23 proscale-micro-01.abc.abctechnology.com systemd[1]: wireguard.service: Failed with result 'exit-code'.
    

答え1

私自身の質問に答えました。 [Unit]に「Requires = network-online.target」を追加して問題を解決しました。 「After=」の機能を誤解しました。

関連情報