![systemd와 함께 사용할 수 있도록 kata 컨테이너를 구성하는 방법](https://linux55.com/image/226581/systemd%EC%99%80%20%ED%95%A8%EA%BB%98%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8F%84%EB%A1%9D%20kata%20%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%EB%A5%BC%20%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
우분투 22.04 시스템에서 systemd를 사용하여 kata 컨테이너를 실행하려고 하는데 작동하지 않습니다. 내 기대는 systemd가 관리하는 컨테이너 내부의 모든 프로세스를 실행할 수 있는 것입니다. 내가 아는 한, 간단한 도커 이미지(선택적으로 우분투를 기본으로 사용)와 진입점으로 시스템을 사용하여 kata 컨테이너를 사용하면 쉽게 달성할 수 있습니다.
내가 시도한 것은 다음과 같습니다.
- apt를 사용하여 Containerd 설치
- 웹사이트에서 찾은 가이드에 따라 kata 컨테이너를 설치했습니다.깃허브
- kata 컨테이너를 런타임으로 사용하도록 Containerd를 구성합니다.그들의 가이드:
- 다음 이미지를 실행해 보세요.
FROM ubuntu:22.04
LABEL maintainer="Enio Carboni"
ARG DEBIAN_FRONTEND=noninteractive
# Install: dependencies, clean: apt cache, remove dir: cache, man, doc, change mod time of cache dir.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
software-properties-common \
rsyslog systemd systemd-cron sudo \
&& apt-get clean \
&& rm -Rf /usr/share/doc && rm -Rf /usr/share/man \
&& rm -rf /var/lib/apt/lists/* \
&& touch -d "2 hours ago" /var/lib/apt/lists
RUN sed -i 's/^\($ModLoad imklog\)/#\1/' /etc/rsyslog.conf
RUN rm -f /lib/systemd/system/systemd*udev* \
&& rm -f /lib/systemd/system/getty.target
VOLUME ["/sys/fs/cgroup", "/tmp", "/run"]
CMD ["/lib/systemd/systemd"]
다음 명령을 사용하십시오.sudo ctr run --runtime io.containerd.run.kata.v2 -t docker.io/eniocarboni/docker-ubuntu-systemd:20.04 ubuntu-systemd
컨테이너 내부에서
/lib/systemd/systemd
pid 1을 볼 수 있지만 systemctl을 실행하려고 하면 다음과 같은 메시지가 표시됩니다.System has not been booted with systemd as init system (PID 1). Can't operate.
컨테이너 내부의 cgroup을 확인했는데 샌드박스 VM에서 마운트되지 않는 것 같습니다.
이것은 내 kata-env 출력입니다.
[Kernel]
Path = "/opt/kata/share/kata-containers/vmlinux-6.1.38-114"
Parameters = "systemd.unit=kata-containers.target systemd.mask=systemd-networkd.service systemd.mask=systemd-networkd.socket scsi_mod.scan=none"
[Meta]
Version = "1.0.26"
[Image]
Path = "/opt/kata/share/kata-containers/kata-ubuntu-latest.image"
[Initrd]
Path = ""
[Hypervisor]
MachineType = "q35"
Version = "QEMU emulator version 7.2.0 (kata-static)\nCopyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers"
Path = "/opt/kata/bin/qemu-system-x86_64"
BlockDeviceDriver = "virtio-scsi"
EntropySource = "/dev/urandom"
SharedFS = "virtio-fs"
VirtioFSDaemon = "/opt/kata/libexec/virtiofsd"
SocketPath = "<<unknown>>"
Msize9p = 8192
MemorySlots = 10
HotPlugVFIO = "no-port"
ColdPlugVFIO = "no-port"
Debug = false
[Runtime]
Path = "/opt/kata/bin/kata-runtime"
GuestSeLinuxLabel = ""
Debug = false
Trace = false
DisableGuestSeccomp = true
DisableNewNetNs = false
SandboxCgroupOnly = false
[Runtime.Config]
Path = "/opt/kata/share/defaults/kata-containers/configuration-qemu.toml"
[Runtime.Version]
OCI = "1.0.2-dev"
[Runtime.Version.Version]
Semver = "3.2.0"
Commit = "45687e3251604ccc71b595d37f14253c4584cd5f"
Major = 3
Minor = 2
Patch = 0
[Host]
Kernel = "6.2.0-1016-azure"
Architecture = "amd64"
VMContainerCapable = false
SupportVSocks = true
[Host.Distro]
Name = "Ubuntu"
Version = "22.04"
[Host.CPU]
Vendor = "AuthenticAMD"
Model = "AMD Ryzen 7 5800X 8-Core Processor"
CPUs = 8
[Host.Memory]
Total = 12013392
Free = 1600656
Available = 9015476
[Agent]
Debug = false
Trace = false