RedHat tarafından geliştirilen Podman, popüler Docker çalışma zamanı motorunun yerini alacak şekilde tasarlanmış ücretsiz ve açık kaynaklı bir daemonless konteyner motorudur. Tıpkı Docker gibi, kapsayıcı görüntüleri ve OCI kapsayıcıları (Open Container Initiative) kullanarak uygulamaları oluşturmayı, çalıştırmayı, dağıtmayı ve paylaşmayı kolaylaştırır. Podman, kullanıcı ve ağ ad alanlarını kullanır ve Docker ile karşılaştırıldığında, Podman daha yalıtılmış ve güvenli olarak kabul edilir. Docker’daki çoğu komut Podman’da çalışır. Docker komutlarını çalıştırmaya aşinaysanız, podman kullanmak çok kolay olacaktır.
Podman’i Debian 11’e yükleyin
Podman paketleri, kitaplıkları ve bağımlılıkları zaten resmi Debian depolarında barındırılmaktadır. Bu nedenle, APT paket yöneticisini kullanarak podman’i kolayca kurabilirsiniz.
İlk olarak, paket listelerini güncelleyin:
$ sudo apt update
Ardından, podman konteyner motorunu aşağıdaki gibi kurun:
$ sudo apt install podman
Devam etmeniz istendiğinde, ‘Y’ yazın ve ENTER’a basın.
Yüklü Podman sürümünü doğrulamak için şunu çalıştırın:
$ podman --version
Podman kapsayıcı motoru hakkında daha fazla ayrıntı toplamak için şu komutu çalıştırın:
$ sudo podman info
Podman kayıtlarını yapılandırın
Registry.conf kayıt dosyası, bir görüntüyü göndermek veya çekmek istediğinizde kullanılacak kapsayıcı kayıtlarını belirten bir yapılandırma dosyasıdır. Dosyanın tam yolu /etc/containers/registries.conf şeklindedir. Docker hub, Quay.io, RedHat ve çok daha fazlası dahil olmak üzere çeşitli kapsayıcı kayıtları vardır.
# sudo /etc/containers/registries.conf
Docker’da tek kapsayıcı kayıt defteri Docker Hub’dır. Podman, kullanıcılara herhangi bir kayıt defterinden görüntü arama ve çekme konusunda daha fazla özgürlük sunar. Aşağıdaki satırı ekleyerek kapsayıcı kayıtlarının listesini tanımlayabilirsiniz.
unqualified-search-registries = [ 'registry.access.redhat.com', 'registry.redhat.io', 'docker.io']
podman search veya podman pull komutunu çalıştırırken, podman bu kayıtlarla bu sırayla ilk olandan başlayarak iletişime geçecektir. Değişiklikleri kaydedin ve dosyadan çıkın.
İmaj arama
Kapsayıcı görüntülerini çekmeden önce, çeşitli kayıtlarda kullanılabilirliklerini araştırmak akıllıca olur.
Örneğin
$ sudo podman search nginx
Bir kayıt defterinde oturum açma
Görüntüleri çekmeye veya göndermeye başlamadan önce bir kayıt defterinde oturum açmanız gerekir. Aşağıdaki örnekte, aslında bana kayıt defterine erişim sağlayan Redhat hesabıma giriş yapıyorum.
$ sudo podman login registry.access.redhat.com
Kayıt defterinden çıkmak için şu komutu çalıştırın:
$ sudo podman logout registry.access.redhat.com
İmaj gönderme
Bir görüntüyü indirmek için sözdizimini kullanın:
$ sudo podman pull image_name
Örneğin, Nginx’in Resmi derleme görüntülerini indirmek için şu komutu çalıştırın:
$ sudo podman pull docker.io/library/nginx
Başka bir şey deneyelim. Resmi MongoDB imajını aşağıdaki gibi indirelim.
$ sudo podman pull docker.io/library/mongo
İmajları listeleme
Tüm görüntüleri listelemek için aşağıdaki komutu verin.
$ sudo podman images
Bir imajdan kapsayıcı oluşturma
Artık Debian sisteminde bulunan görüntülerimiz olduğuna göre, gösterilen sözdizimini kullanarak bir kapsayıcı başlatabiliriz. -d seçeneği kapsayıcıyı arka planda çalıştırır ve –name seçeneği kapsayıcı için özel bir ad belirtir.
$ sudo podman run -d --name container_name image
Örneğin, Nginx görüntüsünden webserv1 adlı arka planda bir kapsayıcı başlatmak için şu komutu çalıştırın:
$ sudo podman run -d --name webserv1 docker.io/library/nginx
Aynı görüntüden birden fazla kapsayıcı başlatabilirsiniz. Aynı Nginx görüntüsünden webserv2 adlı başka bir kapsayıcı başlatalım.
$ sudo podman run -d --name webserv2 docker.io/library/nginx
Kapsayıcıları listeleme
Bu bölümde, kapsayıcılarla kullanabileceğiniz çeşitli komutlara bakacağız.
Şu anda çalışmakta olan kapsayıcıları kontrol etmek için şu komutu verin:
$ sudo podman ps
Çıktı, Kapsayıcı Kimliği, GÖRÜNTÜ adı, kapsayıcıyı çalıştıran komut, oluşturma tarihi ve durum gibi bilgileri sağlayan sütunlarda sunulur.
Çalıştırılanlar da dahil olmak üzere tüm kapsayıcıları listelemek için:
$ sudo podman ps -a
Bir kapsayıcıyı durdurma
Bir kapsayıcıyı durdurmak için sözdizimini kullanın
$ sudo podman stop CONTAINER_ID
VEYA
$ sudo podman stop container_name
Aşağıdaki örnekte, kapsayıcı kimliğini kullanarak listelenen ilk kapsayıcıyı durdurdum
$ sudo podman stop 9daeaabdfdfc
podman ps komutunu kullanarak kapsayıcının durdurulduğunu doğrulayabilirsiniz. Görüntüyü durdurduktan sonra, yalnızca 1 görüntünün çalıştığını açıkça görebiliyoruz.
podman ps -a komutu, az önce durdurulan kapsayıcıyı oluşturan her iki kapsayıcıyı da listeler.
$ sudo podman ps -a
Bir kapsayıcı başlatma
Bir kapsayıcı başlatmak için sözdizimini kullanın:
$ sudo podman start CONTAINER_ID
VEYA
$ sudo podman start container_name
Örneğin, webserv1’i başlatmak için şunu çalıştırın:
$ sudo podman start webserv1
Bir kapsayıcının kabuğuna erişin
Bir kapsayıcının kabuğuna erişim, en iyi şekilde bir İşletim sisteminin kapsayıcısıyla gösterilir.
Burada bir Ubuntu görüntüsü indireceğiz veya çekeceğiz:
$ sudo podman pull docker.io/library/ubuntu
Görüntüden bir kap oluşturacağız veya başlatacağız ve -it seçeneğini kullanarak kabuğa erişim sağlayacağız.
$ sudo podman run --name ubuntu -it docker.io/library/ubuntu /bin/bash
-i, –interactive Bağlı olmasa bile STDIN’i açık tutun
-t, –tty Bir sözde-TTY tahsis edin. Varsayılan false
Bir kapsayıcının günlüklerini kontrol edin
Bir kapsayıcının günlüklerini kontrol etmek için sözdizimini kullanın:
$ sudo podman logs container_name
Örneğin:
$ sudo podman logs webserv2
Kapsayıcı istatistiklerini göster
Çalışan tüm kapsayıcıların istatistiklerini görüntülemek için şunu çalıştırın:
$ sudo podman stats
Bir kapsayıcıyı inceleyin
Bir kapsayıcıyla ilgili karmaşık ayrıntıları yazdırmak için inceleme seçeneğini kullanın:
$ sudo podman inspect webserv2
Bu, JSON biçiminde uzun bir çıktı yazdırır.
Çıktıyı filtrelemek için –format seçeneğini kullanın. Örneğin, webserv2 kapsayıcı çalışmasının IP adresini yazdırmak için
$ sudo podman inspect webserv2 --format '{{.NetworkSettings.IPAddress}}'
Daha sonra, örneğin HTTP başlıklarını almak için curl kullanarak IP için ek bilgiler gerçekleştirebilirsiniz.
$ curl -I ip-address
Bir kapsayıcıyı silme
Bir kapsayıcıyı tamamen kaldırmak veya silmek için, önce kapsayıcıyı çalışıyorsa durdurun ve son olarak kaldırın. Bu örnekte websev1 kapsayıcısını durdurduk ve kaldırdık.
$ sudo podman stop webserv1
Ardından durdurulan kabı çıkarın.
$ sudo podman rm webserv1
Bir imajı kaldırma
Bir görüntüyü kaldırmak için önce, görüntüden başlatılan tüm kapsayıcıları durdurduğunuzdan ve kaldırdığınızdan emin olun. Ardından, gösterildiği gibi rmi seçeneğini kullanın.
$ sudo podman rmi image_name
Örneğin, ubuntu Görüntüsünü kaldırmak için şu komutu çalıştırın:
$ sudo podman rmi docker.io/library/ubuntu
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.