Docker Tam Olarak Nedir?

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 :slight_smile:

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

1 Beğeni

Merhaba,

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 :see_no_evil:):

Ş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.

  1. 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"]
docker build -t ovatman/blg223 .
docker run -p 2222:22 -v /Users/cihat/Source/blg223esummer/assignment8/:/home/ubuntu/homeworks --name blg223e --hostname blg223e -d ovatman/blg223

Şimdi buradaki

/Users/cihat/Source/blg223esummer/assignment8/

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.

  1. şimdi ssh ile containerimize bağlanacağız.
ssh test@localhost -p 2222

Şifre test

  1. ş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.

  1. 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

EDIT: Yaklaşık 614 mb falan indiriyor ona göre

4 Beğeni

Evet, tam olarak aradığım yanıt =) Bu biraz daha açıklık getirdi bazı şeylere. Çok teşekkürler :slight_smile: Şimdi sıra artık verdiğiniz örnekleri test etmekte. Hakkınızı helal edin hayırlı günler

Aman deyim…

Yanarizzzzs, çözüm olarak işaretleme. Dediğim gibi ben de cevap bekliyorum.

1 Beğeni

Tamamdır öyleyse Çözümü kaldırıyorum, evet ayrıca denemelerle artık çok daha iyi anladım nerede kullanmam gerektiğini :slight_smile: 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.

https://opencontainers.org/about/overview/

4 Beğeni

:face_with_raised_eyebrow: MySQL o kadar kötü mü? Peki alternatif olarak ne önerirsiniz?

Onceleri bu konu forumda baya konusulmustu diye hatirliyorum.

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. :slight_smile:

Bakmistim ama bulamadim, uzgunum :frowning:

1 Beğeni

Daha da kotu :slight_smile:

Edit: Neden MySQL kullanmamaliyim? Yerine ne kullanabilirim? [PostgreSQL]
“Bas agrilari” listesini oraya tasiyorum…

3 Beğeni

:grinning_face_with_smiling_eyes: 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. :slight_smile:

Ve konu sahibinden de özür dilerim, konunun bu kadar uzamasına sebep olabileceğimi tahmin edemedim :slight_smile: