Systemd ile Konteyner Yönetimi
Red Hat, konteynerleri systemd ile entegre etmede bir lider haline geldi. Böylece Podman, Docker tarafından oluşturulan konteynerler, bir Linux sisteminde diğer hizmetler ve özellikler yönetiliyormuş gibi yönetilebilir.
Konteynerleri systemd ile başlatma : Ana bilgisayarınızda bir systemd birim dosyası ayarlayarak, ana bilgisayarın otomatik olarak başlatmasını, durdurmasını, durumunu kontrol etmesini ve bir kapsayıcıyı bir sistemd hizmeti olarak yönetmesini sağlayabilirsiniz.
Container'ları systemd ile başlatma
Bir kapsayıcıyı sistemd hizmeti olarak başlayacak şekilde ayarladığınızda, kapsayıcılı hizmetin çalışma sırasını tanımlayabilir, bağımlılıkları kontrol edebilir. Bu bölümde, bir systemd hizmeti olarak doğrudan bir RHEL veya RHEL Atomic Host sisteminde çalışacak şekilde yapılandırılmış bir kapsayıcı örneği sağlanmaktadır.
Sisteminizde çalıştırmak istediğiniz görüntüyü alın. Örneğin, docker.io'dan nginx hizmetini kullanmak için aşağıdaki komutu çalıştırın.
sudo docker pull nginx

Görüntüyü, systemd hizmet dosyasında kullanmak istediğiniz bir ad vererek bir kapsayıcı olarak çalıştırın. Örneğin, çalışan nginx kapsayıcısını nginx_server olarak adlandırmak için aşağıdakini yazın.
sudo docker run -d --name nginx_server -p 6379:80 nginx

/etc/systemd/system/ dizinde birim yapılandırma dosyasını oluşturarak kapsayıcıyı bir systemd hizmeti olarak yapılandırın.
sudo vim /etc/systemd/system/nginx-container.service
Örneğin, /etc/systemd/system/nginx-container.service içeriği aşağıdaki gibi görünebilir.
[Unit]
Description=nginx container
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a nginx_server
ExecStop=/usr/bin/docker stop -t 2 nginx_server
[Install]
WantedBy=local.target

Systemd'nin yeni servisi tanıması daemon'u yeniden başlatalım.
sudo systemctl daemon-reload

Birim dosyasını oluşturduktan sonra, container önyükleme sırasında otomatik olarak başlatmak için aşağıdakileri yazın.
sudo systemctl enable nginx-container.service

Hizmet etkinleştirildikten sonra, önyükleme sırasında başlayacaktır. Hemen başlatmak ve hizmetin durumunu kontrol etmek için aşağıdakileri yazın.
sudo systemctl start nginx-container.service
sudo systemctl status nginx-container.service

Artık servisiniz hazır hale gelmiştir. İster yeniden başlatabilir veya loglarını inceleyebilirsiniz.

Şimdi farklı bir örnek yapalım. Sürekli açıp sildiğiniz bir container olduğunu varsayalım. Testleriniz için bir takım değişiklikler yapıyorsunuz, portlarını değiştirmeniz gerekiyor veya başka işlemler. Bunun için container'ı silmeniz gerekmektedir. Şimdi bunu benzer şekilde systemd ile yönetelim.
/etc/systemd/system/ dizinde birim yapılandırma dosyasını oluşturarak kapsayıcıyı bir systemd hizmeti olarak tekrar yapılandıralım.
sudo vim /etc/systemd/system/httpd-container.service
Örneğin, /etc/systemd/system/httpd-container.service içeriği aşağıdaki gibi görünebilir.
[Unit]
Description=httpd container
[Service]
Restart=always
ExecStart=/usr/bin/docker run --rm --name=%n -p 80:80 httpd
ExecStop=/usr/bin/docker rm -f %n
[Install]
WantedBy=local.target
Systemd'nin yeni servisi tanıması daemon'u yeniden başlatalım.
sudo systemctl daemon-reload
Kısa bir süre sonra imaj'ı indirip container ayağa kalkacaktır.

Servisi her restart ettiğinizde container silinip baştan oluşacaktır. Eğer dosyaların kalıcı hale gelmesini isterseniz volume oluşturabilirsiniz.
