부팅 시 Quadlet 컨테이너가 시작되지 않습니다. network-online.target에 문제가 있습니까?

부팅 시 Quadlet 컨테이너가 시작되지 않습니다. network-online.target에 문제가 있습니까?

저는 Openuse 환경(구체적으로는 microOS)에서 두 개의 서로 다른 컨테이너를 실행하기 위해 쿼드를 만들었습니다. 네 쌍둥이는 /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="의 기능을 오해했습니다.

관련 정보