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 ):
Ş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"]
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.
- ş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 danexit
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