Merhabalar sevgili üstadlar. Docker tam olarak nedir? (Araştır, bir dünya kaynak var diyebilirsiniz ve haklısınızda.) Ben bir kaç kaynağa baktım ama tam olarak anlamadım. Yani resmen saflığım tuttu bu konuda…
Allah rızası için, birisi bu docker’i özet olarak bana, bilal’e anlatır gibi anlatabilir mi? Rica ediyorum
Neden kullanılıyor? Yani şunu yaşamamak için Dockeri kullanırsın gibi bir örnek… Adamlar evet anlatıyor bazı sayfalarda ama o teknik terimler yok mu Allahın cezası terimler yüzünden her şey alt üst oluyor
Ne yazık ki ben de tam bilmiyorum. Şu ana kadar hiç ihtiyaç duymadım. #REZ
Ama biz data structures dersi için kullanıyoruz bu docker’ı (windows kullanan arkadaşlarım kullanıyor, ben PC ye kurulu olan linuxdan devamkee)
Şimdi sana şöyle açıklayabilirim.
Hoca ödev atıyor, ödev süresi bittikten sonra bizim kodlarınızı test ediyor olmuş mu olmamış mı diye. Ama ortada bir sorun var.
Ben red hat kullanıyor, bir başkası Windows, kimisi fedora, hoca ise Ubuntu kullanıyorsa nolacak? Kodlar eşit şartlarda değerlendirilemiyor.
Hah işte burada docker devreye giriyor. Hoca diyor ki(ifadeler parodidir, ürün yerleştirme yapılmıştır ):
Şimdi siz bu docker i kuracaksınız ve benim gönderdiğim dosyadan containeri çalıştıracaksiniz. Ondan sonra da kendi kodlarınızı orada test edebilirsiniz. İster kodunu windowsda test et, ister fedorada, bana ne, ama ben ödevleri bu containerde test edeceğim. Eğer senin fedoranda kod doğru çalışıp benim container imde hata veriyorsa napimmm banane, kodunu gönderdiğim container’de test edeydin.
Şimdi buradaki olay şu:
Container, burada şunu sağlıyor: Eğer öğrenci sayısı 28 ise özdeş 28 tane container(Hoca da dahil 29). Şimdi elimizde 29 tane özdeş sistem var.(özdeş kelimesine dikkat çekiyorum. eşit değil, özdeş, birbirinin klonu yani)
Daha da anlaşılır olması için bir docker kurup bir container çalıştırmanı tavsiye ediyorum.
Aşağıda anlatıyorum.
dockerfile adlı bir dosya oluşturup aşağıdakileri içine kopyala.
dockerfile
FROM ubuntu:latest
RUN apt update
RUN apt install openssh-server sudo -y
RUN useradd -rm -d /home/ubuntu -s /bin/bash -g root -G sudo -u 1000 test
RUN usermod -aG sudo test
RUN service ssh start
RUN echo 'test:test' | chpasswd
RUN apt update
RUN apt install build-essential -y
RUN apt install gdb -y
RUN apt update
RUN apt install git -y
RUN apt update
RUN apt install python3 -y
RUN apt install python3-pip -y
RUN pip install calico
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
Dizini, (kullanıcının mac kullandığı varsayılıyor) senin bilgisayarındaki maç dizini
/home/ubuntu/homeworks
dizini ise birazdan kullanacağımız conatinerde oluşturacağımız dizin. Birinci dizini kendi PC ne göre değiştirirsin. Ama ikinci dizine dokunma.
şimdi ssh ile containerimize bağlanacağız.
ssh test@localhost -p 2222
Şifre test
şimdi Ubuntudasin. Hayırlı olsun.
Şimdi bulunduğun terminale
ls /home/ubuntu/homeworks
Yaz. Göreceğin şey,
/Users/cihat/Source/blg223esummer/assignment8/
deki dosyalar olacak.
ubuntuyla işin bittiyse
ssh dan exit yazarak çık ve ardından
docker ps --all
Yazarak kendi containerin container id sini bul. Ondan sonra da
docker stop 3bd24dfeac
ve ardından
docker rm 3bd24dfeac
komutlarını çalıştır.
Şimdi biz ne yaptık, ssh ile ubuntunun shell’ini kullandık. Buradan istersen kendi cpp kodlarını falan test edebilirsin.
Basit olarak kendi deneyimimi anlattım. Bilenler varsa bizi aydınlatırsa çok güzel olur. Ama ayriyeten bir iki şey eklemek istiyorum.
Şimdi atıyorum ben bir site yaptım diyelim. Bu site bende çalışıyor ama ekip arkadaşımın PC sinde çalışmadı diyelim. Eğer sen bu siteyi containerde test edersen kurulum için gerekli işlemleri docker halleder. Hem ekip arkadaşın, hem de sen tabiri caizse aynı PC yi kullanmış kadar olursun.
UYARI: yanlış anlatmış olabilirim, ben de kullananların deneyimlerini çok merak ediyorum. Lütfen bu insanoğlunu mazur görün
Evet, tam olarak aradığım yanıt =) Bu biraz daha açıklık getirdi bazı şeylere. Çok teşekkürler Şimdi sıra artık verdiğiniz örnekleri test etmekte. Hakkınızı helal edin hayırlı günler
Tamamdır öyleyse Çözümü kaldırıyorum, evet ayrıca denemelerle artık çok daha iyi anladım nerede kullanmam gerektiğini Siz bilirsiniz ama bence çözüm olarak kalabilir
@Cihat_Altiparmak 'in anlatimi gayet yeterli. Tek bir noktaya dikkat cekmek istiyorum; burada konusulan konu containerization. Sorulan sorular ve verilen cevaplarin cogu tum container teknolojileri icin gecerli. Docker bu teknolojiyi kullanmamizi saglayan programlardan bir tanesi. Hatta bir takim gerizekaliliklarina ve sittin senedir acik temel bug’larina bakarsak bu teknolojinin MySQL’i.
Teknolojinin gercek dunyada getirdigi en buyuk kolaylik, programlari gereksinimleri (e.g. sistem kutuphaneleri) ve cevreleri (e.g. data dizini, config dosyalari) ile beraber paketlemesi. Programlari birbirinden farkli birer sanal makine gibi dusunurseniz, guvenlik ve kullanim kolayligi yonundeki getirileri acik olur.
Daha buraya yakin bir ornek vermek gerekirse de: “python kutuphanesini kurdum ama kodda kullanirken hata veriyor” diyen bir insana “ver bakiim su bilgisayarini” diyemiyoruz. Container olsa diyebilirdik.
Farklı konularda @aib’in birkaç gönderisini buldum ve MySQL yerine PostgreSQL’i önermiş ama özellikle bu konunun tartışıldığı bir konu bulamadım. Konu başlığını hatırlıyor musunuz? O konuyu/konuları okumak isterim.
Yazılarınızdan anladığım kadarıyla 10-11 yılda epey bir değişmişsiniz (zaten “Değişmeyen tek şey değişimin ta kendisidir.”), MySQL de değişmiştir diye düşünüyorum, tabii geliştiricilerinin Microsoft gibi sorunun kaynağına inmek yerine üstüne yama yapmak gibi bir huyları yoksa. Gerçi henüz hepsini okuyamamış olsam da 30 ayrı madde olaması da… neyse, bundan sonra PostgreSQL’le daha çok önem vereceğim. Teşekkür ederim.
Ve konu sahibinden de özür dilerim, konunun bu kadar uzamasına sebep olabileceğimi tahmin edemedim