Merhabalar ,
Bu yazımda docker image dosyasını kendimize göre oluşturmayı ve bu düzenlenmiş image’ı localde kayıt altına almayı göstereceğim.Ubuntunun official sürümü üzerinden gideceğim. Çok detaya girmeden ubuntu içerisinde sadece bir dosya oluşturacağız daha sonra bu dosyanın bulunduğu şekilde image’ımızı kendi vereceğimiz isimlendirme lokal bilgisayarımıza ile kaydedeceğiz.Daha sonra localdeki official ubuntu image’ımızı silip kendi yarattığımız image ı çalıştıracağız ve dosyanın bu image da olduğunu göreceğiz.Burada official ubuntu dan kastım aslında GUI arayüzü olmayan sade bir OS(İşletim sistemi) …
docker pull ubuntu
bu kod ile ubuntu official image’ını Docker Registry den local bilgisayarımıza indiriyoruz.İşlem bittikten sonra ;
docker images
kodu ile ubuntu official image ‘ımızın local de olduğunu görebilirsiniz.
şimdi sıra geldi çalıştırma komutuna ;
docker run -i -d --name myubuntu ubuntu
bu kodda interaktif ve deattach mod da yani arka planda sürekli çalışacak “myubuntu” adını atadığımız official image ‘ımız çalışmaya başlayacak.
docker container ls
komutu ile arka planda hali hazırda çalışmakta olduğunu görebilirsiniz.Şimdi bu image ın terminal ekranında çalışalım bunun için aşağıdaki kodu uygulayalım ;
docker exec -it myubuntu bash
şu anda ubuntu image’ımızın içerisindeyiz.linuxtaki ls komutu ile ana dizinimizde ki dosyaları görüntüleyelim …
//Ana dizin listeleme işlemi ls
şimdi ise burada bir klasör oluşturup bunun içerisine bir txt dosyası oluşturalım ve içerisine herhangi birşey yazalım.İsimlendirme serbest …
mkdir dockertest ls //bu komuttan sonra klasörümüzün oluştuğunu göreceksiniz.cd komutu ile klasörün içerisine girelim cd dockertest/ //şimdi docker.txt isimli bir dosya oluşturalım. touch docker.txt
Şu ana kadar dosylarımızı oluşturduk ancak ubuntu paketimizde dosyayı düzenlemek için nano paketi yüklü değil.Şimdi bu paketi sırası yüklemeye başlayalım.
apt-get update apt-get install nano
Yukarıdaki kodlar ile image ‘ımızı nano paketini de yükledik.Şu anda hala olmak istediğimiz “dockertest” klasöründeyiz.Şimdi dosyamızı düzenleyebiliriz.
nano dockertest.txt
Şimdi docker.txt dosyamızın içerisindeyiz.İçerisine bir Not yazalım ben “Ilk Docker Image’imiz” yazıyorum.CRTL+O ve Enter tuşlarına basarak dosyamızı kaydettik.CTRL+X ile düzenleyiciden çıkıyoruz.Şu anda hala image’ımızı içerisindeyiz.Şimdi exit komutu ile çalıştığımız ubuntu image’indan çıkalım.
exit
Şimdi ise arka planda çalışmakta olan değişikliklerini yaptığımız image’ımızı container’ımızı durdurmadan önce Image oluşturma işlemini yapalım ve bu image’a image’ın kimin tarafından oluşturulduğu ve eposta bilgisini yazalım.
docker commit -a "Serkan Kaya <admin@serkankaya.net>" myubuntu serkankaya/myubuntu:1.0
Yukarıdaki kod ile “1.0” versiyonunda “serkankaya/myubuntu” adında image’ın kimin tarafından oluşturulduğunu verdiğimiz image’ımızı yaratmış olduk.Şimdi image’ımıza bakalım oluşmuş mu ?
docker image ls
Kod sonrası aşağıdakine benzer bir ekran görmelisiniz.
REPOSITORY TAG IMAGE ID CREATED SIZE serkankaya/myubuntu 1.0 713e011c5a92 4 seconds ago 154MB ubuntu latest f975c5035748 8 days ago 112MB
şimdi official ubuntu image’ımızı silelim ve oluşturduğumuz image’da daha önce oluşturduğumuz dosyalarımız ve nano paketimiz duruyormu bunu kontrol edelim.
//ilk önce myubuntu image'ımızı stop edelim docker container stop myubuntu //şimdi ubuntu official image ımızı silelim docker image rmi ubuntu //şimdi kendi oluşturduğumuz image'ı arka planda direk terminale düşecek şekilde çalıştıralım. docker run -it serkankaya/myubuntu:1.0 //ls komutu ile ana dizindeki klasörleri görüntüleyelim. ls //dockertest klasörümüzün burada olduğunu göreceksiniz.Klasöre girip nano ile docker.txt dosyamızı açalım. cd dockertest/ nano dockertest.txt //düzenlemek istediğimiz dosya nano ile açıldı ve ilk docker image imiz yazısını gördük
Böylece docker image’ımızı oluşturmuş ve oluşturduğumuz image’ı doğrulamış olduk , artık official ubuntu image’ını değil de kendi oluşturup düzenlediğimiz “serkankaya/myubuntu” image’ını kullanabiliriz …Burada basit olması açısından sadece bir dosya oluşturduk düzenledik ve image aldık tabi burada amaç daha komplex bir yazılım “web server gibi” koşturmak olabilirdi …
Image oluşturma anlatımım bu kadar 🙂
Umarım faydalı olmuştur ?
Serkan Kaya
Full Stack Java Developer