📖 1 dakika ↪ Yazılar

Systemctl in Docker

--privileged argümanı tercih edilmediği durumlarda gereken mountlar aşağıdaki şekildedir.

Systemd ile docker çalıştırmak için gereken mountlar aşağıdaki gibi ayarlanabilir. Ayrıca imajdan önce mount edilen noktalarda DISPLAY environment değişkeni ayarlanarak konteynır içerisinde çalıştırılan gui araçları görülebilir. Aynı zamanda ana dizinde bulunan Share dizini de konteynır içerisinden erişilebilir.

docker run \
      --entrypoint=/usr/lib/systemd/systemd \
      --env container=docker \
      --mount type=bind,source=/sys/fs/cgroup,target=/sys/fs/cgroup \
      --mount type=bind,source=/sys/fs/fuse,target=/sys/fs/fuse \
      --mount type=tmpfs,destination=/tmp \
      --mount type=tmpfs,destination=/run \
      --mount type=tmpfs,destination=/run/lock \
      --net=host --name=Arch --workdir /root -ti \
      --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v="$HOME/Share:/root/Share" \
      archlinux:latest --log-level=info --unit=sysinit.target

Daha sonrasında terminali kapatıp istenilen komut docker exec -ti Arch bash ile interaktif shell alınabilir. Sonrasında systemctl status ile systemd interaksiyonlarına girilebildiği görülecektir.

Containeri kapatmak için docker stop Arch yapmak yerine container içerisinde shutdown now yapmayı unutmamalı :)