giriiş
Docker, yazılım uygulamalarına çalışmak için ihtiyaç duydukları her şeyi içeren bir dosya sistemi sağlamak için kullanılan popüler bir konteynerleştirme aracıdır. Docker konteynerleri kullanmak, yazılımın nerede dağıtılırsa dağıtılsın aynı şekilde davranmasını sağlar, çünkü çalışma ortamı son derece tutarlıdır. Bu eğitimde, Docker imajları ve Docker konteynerleri arasındaki ilişkiye kısa bir genel bakış sunacağız. Ardından, konteynerlerin nasıl çalıştırılacağını, başlatılacağını, durdurulacağını ve kaldırılacağını daha yakından inceleyeceğiz.
Genel Bakış
Docker imajını, Docker kapsayıcıları oluşturmak için kullanılan yalın bir şablon olarak düşünebiliriz. İmaj dosyaları genellikle bir kök dosya sistemiyle başlar ve dosya sistemi değişikliklerini ve bunlara karşılık gelen yürütme parametrelerini düzenli, salt okunur katmanlara ekler. Tipik bir Linux dağıtımının aksine, bir Docker imaj dosyası genellikle yalnızca uygulamayı çalıştırmak için gereken yalın donanımı içerir. İmaj dosyaları durumsuzdur ve değişmez. Bunun yerine, Docker kapsayıcıları için başlangıç noktasını oluştururlar. İmaj dosyaları, üzerine bir okuma-yazma katmanı eklenerek bir kapsayıcı oluşturan "docker run" komutuyla hayata geçirilir. Bu okuma-yazma katmanının üzerine yerleştirilen salt okunur katmanların birleşimine birleşik dosya sistemi denir. Çalışan bir kapsayıcıdaki bir dosyada değişiklik yapıldığında, dosya salt okunur alandan değişikliklerin uygulandığı okuma-yazma katmanına kopyalanır. Okuma-yazma katmanındaki sürüm, orijinal dosyayı gizler ancak silmez. Okuma-yazma katmanındaki değişiklikler yalnızca ayrı bir kapsayıcı örneğinde bulunur. Bir kapsayıcı silindiğinde, bunları korumak için herhangi bir adım atılmadığı sürece tüm değişiklikler kaybolur.
Docker kapsayıcılarıyla nasıl çalışılır
- İki Docker konteyneri oluşturun
- İlk konteyneri yeniden başlatın.
- Her iki konteyneri de silin.
Konteynerlerle çalışma
Her komutu kullandığınızda docker çalıştırma Kullandığınızda, belirttiğiniz görüntüden yeni bir kapsayıcı oluşturur. Bu durum kafa karışıklığına yol açabilir, bu yüzden birkaç örneğe bakalım:
Adım 1: İki kapsayıcı oluşturun
Yürütme komutu liman işçisi Aşağıdaki, temel Ubuntu imajını kullanarak yeni bir kapsayıcı oluşturur. -T Bize bir terminal veriyor ve -Ben Bizim onunla etkileşim kurmamızı sağlar. Ubuntu temel görüntüsünün Docker dosyasındaki varsayılan komutu takip ederiz: bashOnun bizi bir kabuk içinde bırakmasına güveniyoruz.
docker run -ti ubuntuKomut satırı, kök kullanıcı olarak konteynerin içinde olduğumuzu ve ardından 12 karakterlik konteyner kimliğini gösterecek şekilde değişecektir.
root@11cc47339ee1:/#Klasörde metin yansımasıyla bir değişiklik yaptık /geçici Bir konteyner oluşturuyoruz, sonra kullanıyoruz kedi Başarıyla kaydedildiğini teyit etmek için kullanırız.
echo "Example1" > /tmp/Example1.txt
cat /tmp/Example1.txtOutput
Example1
Şimdi konteynerden çıkalım.
exitDocker kapsayıcıları, verdikleri komut tamamlanır tamamlanmaz çalışmaz, bu nedenle kapsayıcımız bash kabuğundan çıktığımızda durduruldu. Eğer komut not: Çalışan container'ları gösterme komutunu çalıştırdığımızda komutumuzu göremeyiz.
docker psOutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESEğer bayrak -A Tüm konteynerları, durmuş veya çalışıyor olarak gösteren komutu ekleyin ve konteynerımız listede görünecektir:
docker ps -aOutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11cc47339ee1 ubuntu "/bin/bash" 6 minutes ago Exited (127) 8 seconds ago small_sinoussiKonteyner oluşturulduğunda, kendisine bir konteyner kimliği ve rastgele oluşturulmuş bir ad verildi. Bu durumda, 11cc47339ee1 Konteyner Kimliği ve küçük_sinüsler Rastgele oluşturulmuş bir isimdir. ps -a Bu değerler, konteynerin oluşturulduğu imaj (Ubuntu), konteynerin oluşturulduğu tarih (altı dakika önce) ve çalıştırıldığı komut (/bin/bash) ile birlikte gelir. Çıktıda ayrıca konteynerin durumu (Çıkış) ve konteynerin bu durumda bulunduğu süre (6 saniye önce) de verilir. Konteyner hala çalışıyor olsaydı, "çalışıyor" durumunu ve ardından çalıştığı süreyi görürdük.
Aynı komutu tekrar çalıştırdığımızda tamamen yeni bir kapsayıcı oluşturulacaktır:
docker run -ti ubuntuBunun yeni bir kapsayıcı olduğunu, komut satırındaki tanımlayıcının farklı olmasından anlayabiliriz; ancak Example1 dosyamızı aradığımızda onu bulamıyoruz:
cat /tmp/Example1Output
cat: /tmp/Example1: No such file or directoryVeriler kaybolmuş gibi görünebilir, ancak kaybolmadı. Şimdi ikinci konteynerden çıkıp, oluşturduğumuz dosyanın bulunduğu ilk konteynerin ve ikinci konteynerin hâlâ sistemde olduğunu göreceğiz.
exitKonteynerleri tekrar listelediğimizde ikisi de karşımıza çıkıyor:
docker ps -aOutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6e4341887b69 ubuntu "/bin/bash" About a minute ago Exited (1) 6 seconds ago kickass_borg
11cc47339ee1 ubuntu "/bin/bash" 13 minutes ago Exited (127) 6 minutes ago small_sinoussiAdım 2: İlk konteyneri yeniden başlatın
Mevcut bir konteyneri yeniden başlatmak için, ona bağlanmak için -a bayrağını, etkileşimli hale getirmek için -i bayrağını ve ardından konteyner kimliğini veya adını kullanarak başlat komutunu kullanırız. Aşağıdaki komutta konteyner kimliğinizi değiştirdiğinizden emin olun:
docker start -ai 11cc47339ee1Kendimizi bir kez daha container bash isteminde buluyoruz ve daha önce oluşturduğumuz dosyayı cat ettiğimizde hala orada olduğunu görüyoruz.
cat /tmp/Example1.txtOutput
Example1Artık konteynerden çıkabiliriz:
exitBu çıktı, konteyner içinde yapılan değişikliklerin, konteyneri durdurup başlattığınızda da devam ettiğini gösterir. İçerik yalnızca konteyner kaldırıldığında silinir. Bu örnek ayrıca, değişikliklerin yalnızca ilgili konteynerle sınırlı olduğunu da gösterir. İkinci konteyneri başlattığımızda, görüntünün orijinal durumunu yansıtıyordu.
Adım 3: Her iki kapsayıcıyı da silin
İki konteyner oluşturduk ve kısa eğitimimizi bunları kaldırarak bitireceğiz. Yalnızca durdurulmuş konteynerlerde çalışan docker rm komutu, bir veya daha fazla konteynerin adını veya kimliğini belirtmenize olanak tanır, böylece her ikisini de aşağıdaki şekilde kaldırabiliriz:
docker rm 11cc47339ee1 kickass_borgOutput
11cc47339ee1
kickass_borgHem konteynerlar hem de içlerinde yaptığımız tüm değişiklikler artık yok.
Sonuç
Tarife yakından bakalım. docker çalıştırma Her çalıştırıldığında otomatik olarak yeni bir konteyner oluşturduğunu gördük. Durdurulmuş bir konteyneri nasıl bulacağımızı, başlatacağımızı ve ona nasıl bağlanacağımızı da gördük. Konteyner yönetimi hakkında daha fazla bilgi edinmek isterseniz, Docker Konteyner Adlandırma Kılavuzu: Yeni Başlayanlar İçin 3 İpucu ilginizi çekebilir.









