31 Ağustos 2019 Cumartesi

Docker Giris

Bir docker file olusturup icine komutlar yazalim ve daha sonra calistiralim. Dockerfile isimleri su sekilde ve harflerde ayni duzende olmalidir : Dockerfile

Her bir komut yeni bir layer olusturur.

nano Dockerfile diyerek bir docker file olsuturduk. Icine yazacagimiz komutlar asagidaki gibi olsun.


from ubuntu:16.04

cmd apt-get -y update

cmd echo Hello World

simdi ise kaydedip cikalim. Once dockerfile i build edelim asagidaki komutla

docker build -t img_example .

Sending build context to Docker daemon  2.048kB
Step 1/3 : from ubuntu:16.04
 ---> 5e13f8dd4c1a
Step 2/3 : cmd apt-get -y update
 ---> Running in 8b7283465728
Removing intermediate container 8b7283465728
 ---> 4a2d9530a53f
Step 3/3 : cmd echo Hello World
 ---> Running in b9cd40bf569c
Removing intermediate container b9cd40bf569c
 ---> 78036c5dc14e
Successfully built 78036c5dc14e
Successfully tagged img_example:latest

Seklinde cikti verir. simdi ise dockerfile i run edebiliriz asagidaki komutla .


docker run img_example

Hello World

ciktiisni verir. Gordugumuz gibi once bir docker file olusturup icine komutlar yazdik ve build ederek img_example adinda bir image olusturduk. Daha sonra ise bu image i run ederek container olusturduk.

Konsola 

docker images

yazdigimizda calisan image lari goruruz. Demin olsuturdugumuz img_example ise listede yer aliyor.

DockerHub dan image cekmek icin pull komutu kullanilir. Ornegin hello-world isimli image i cekmek icin

docker pull hello-world

komutunu kullaniriz.

Calisan container lari gormek icin

docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES


komutunu yazariz. Eger container imiz sadece isini yapip bittiyse (yukaridaki img_example da oldugu gibi sadece hello world yazdiysa) o zaman burada bir sonuc alamayiz. Bu zamana kadar calismis olan tum container lari gormek icinse

docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
5c13beabc37d        img_example         "/bin/sh -c 'echo He…"   40 minutes ago      Exited (0) 39 minutes ago                          nostalgic_mestorf
0a8eedfe8db8        img_expose2         "/bin/sh -c 'echo He…"   About an hour ago   Exited (0) About an hour ago                       gifted_curran
24ec81246355        hello-world         "/hello"                 About an hour ago   Exited (0) About an hour ago                       upbeat_knuth
ced196ddfa65        5bd8ab9d6558        "nginx -g 'daemon of…"   26 hours ago        Exited (0) 23 hours ago                            cont_nginx-A
25af563802d9        busybox:latest      "sh"                     26 hours ago        Exited (137) 23 hours ago                          mybusybox
6ff3b01be5d0        img_apache          "/usr/sbin/apache2 -…"   6 days ago          Created                                            cont_apache
df6749d93413        img_run-env         "bash"                   6 days ago          Exited (0) 6 days ago                              cont_run-env
a19f93320a4f        nginx:latest        "nginx -g 'daemon of…"   7 days ago          Exited (0) 6 days ago                              web-server-nginx
a623a065a0a3        hello-world         "/hello"                 7 days ago          Exited (0) 7 days ago                              relaxed_maxwell

yazariz. Burada calismiyor olsa da bir ara calismis olan container lari gorebiliriz.

Sonlanmis olan bir container i tekrar baslatmak icinse docker ps -a komutundan id sini kopyalayip

docker start -a 5c13beabc37d

yazarak yeniden baslatabiliriz.

Container i silmek icinse

docker rm 5c13beabc37d

ile container_id sini yazarak silebiliriz. Eger container calisir halde ise once stop edip daha sonra silebiliriz. Stop etmek icinse

docker stop 5c13beabc37d

yazariz.


Docker CLI - Cheat Sheet (Kopya Kağıdı)

KomutAçıklaması
docker imagesLokal registry’de mevcut bulunan Image’ları listeler
docker psHalihazırda çalışmakta olan Container’ları listeler
docker ps -aDocker Daemon üzerindeki bütün Container’ları listeler
docker ps -aqDocker Daemon üzerindeki bütün Container’ların ID’lerini listeler
docker pull <repository_name>/<image_name>:<image_tag>Belirtilen Image’ı lokal registry’ye indirir. Örnek: docker pull gsengun/jmeter3.0:1.7
docker top <container_id>İlgili Container’da top komutunu çalıştırarak çıktısını gösterir
docker run -it <image_id|image_name> CMDVerilen Image’dan terminal’i attach ederek bir Container oluşturur
docker pause <container_id>İlgili Container’ı duraklatır
docker unpause <container_id>İlgili Container pause ile duraklatılmış ise çalışmasına devam ettirilir
docker stop <container_id>İlgili Container’ı durdurur
docker start <container_id>İlgili Container’ı durdurulmuşsa tekrar başlatır
docker rm <container_id>İlgili Container’ı kaldırır fakat ilişkili Volume’lara dokunmaz
docker rm -v <container_id>İlgili Container’ı ilişkili Volume’lar ile birlikte kaldırır
docker rm -f <container_id>İlgili Container’ı zorlayarak kaldırır. Çalışan bir Container ancak -f ile kaldırılabilir
docker rmi <image_id|image_name>İlgili Image’ı siler
docker rmi -f <image_id|image_name>İlgili Image’ı zorlayarak kaldırır, başka isimlerle Tag’lenmiş Image’lar -f ile kaldırılabilir
docker infoDocker Daemon’la ilgili özet bilgiler verir
docker inspect <container_id>İlgili Container’la ilgili detaylı bilgiler verir
docker inspect <image_id|image_name>İlgili Image’la ilgili detaylı bilgiler verir
docker rm $(docker ps -aq)Bütün Container’ları kaldırır
docker stop $(docker ps -aq)Çalışan bütün Container’ları durdurur
docker rmi $(docker images -aq)Bütün Image’ları kaldırır
docker images -q -f dangling=trueDangling (taglenmemiş ve bir Container ile ilişkilendirilmemiş) Image’ları listeler
docker rmi $(docker images -q -f dangling=true)Dangling Image’ları kaldırır
docker volume ls -f dangling=trueDangling Volume’ları listeler
docker volume rm $(docker volume ls -f dangling=true -q)Danling Volume’ları kaldırır
docker logs <container_id>İlgili Container’ın terminalinde o ana kadar oluşan çıktıyı gösterir
docker logs -f <container_id>İlgili Container’ın terminalinde o ana kadar oluşan çıktıyı gösterir ve -f follow parametresi ile o andan sonra oluşan logları da göstermeye devam eder
docker exec <container_id> <command>Çalışan bir Container içinde bir komut koşturmak için kullanılır
docker exec -it <container_id> /bin/bashÇalışan bir Container içinde terminal açmak için kullanılır. İlgili Image’da /bin/bash bulunduğu varsayımı ile
docker attach <container_id>Önceden detached modda -d başlatılan bir Container’a attach olmak için kullanılır
Kaynak : http://gokhansengun.com/docker-nedir-nasil-calisir-nerede-kullanilir/



Guzell bir paylasim icin : http://devnot.com/2016/container-dunyasi-ve-docker/



Bir java dosyasini docker ile calistirmak icin oncelikle HelloWorld.java adinda bir mesaj yazan class hazirladim. Daha sonra bu class ile ayni yerde Dockerfile i olusturdum. Dockerfile icerigi ise asagidaki gibi:

FROM java:8

COPY . /var/www/java

WORKDIR /var/www/java

RUN javac HelloWorld.java

CMD ["java", "HelloWorld"]


Daha sonra bu file i build etmek icin 

>> docker build -t java_image .

komutunu yazdim ve result su sekilde islendi, layerlar olustu.

Sending build context to Docker daemon  3.072kB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
 ---> d23bdf5b1b1b
Step 2/5 : COPY . /var/www/java
 ---> f487f57babf0
Step 3/5 : WORKDIR /var/www/java
 ---> Running in d5f829de0e7a
Removing intermediate container d5f829de0e7a
 ---> 4daf9cf6c419
Step 4/5 : RUN javac HelloWorld.java
 ---> Running in 4d60b3d49da8
Removing intermediate container 4d60b3d49da8
 ---> 7dea627b45be
Step 5/5 : CMD ["java", "HelloWorld"]
 ---> Running in 7877c5a6db47
Removing intermediate container 7877c5a6db47
 ---> 4bc0d25a7db7
Successfully built 4bc0d25a7db7
Successfully tagged java_image:latest

Daha sonra ise olusan image i asagidaki komutla run ettim:

>> docker run java_image

Hello Docker World!

Ciktisini aldim. 

Hiç yorum yok:

Yorum Gönder