Konteynerleri Yönetmek için 15 Docker Komutu [Liste, Durdur, Başlat, Kaldır ve Daha Fazlası]

Yayınlanan: 2021-08-17

Docker, kapsayıcılı uygulamalar oluşturmak ve çalıştırmak için popüler bir araçtır. Birden çok platform için kullanılabilir ve Kubernetes'te arka uç kapsayıcı teknolojilerinden biri olarak kullanılır.

Docker'da, uygulamanızı bir kapsayıcı olarak çalıştırmak için kendi görüntülerinizi oluşturursunuz veya Docker deposundan binlerce genel görüntüyü çekip kullanabilir ve bunları projenizde kullanabilirsiniz. Görüntünüz hazır olduğunda, bu görüntüleri kullanarak kapsayıcılarınızı başlatabilirsiniz. Kapsayıcı, Docker görüntüsünün çalışan bir örneğidir.

Docker kapsayıcılarını yönetmek, Docker ana bilgisayarlarını/kapsayıcılarını yöneten bir sistem yöneticisi olarak dikkat edilmesi gereken en önemli yönlerden biridir.

Bu yazıda, docker komutunu kullanarak kapsayıcıları yönetmeye odaklanacağız.

Komutu çalıştır

docker run komutu, Image ID veya Repository ve/veya Tag adını belirterek bir görüntüden bir kapsayıcı çalıştırmak için kullanılır.

 $ docker run {image}

Örnek:

 $ docker run nginx

Yukarıdaki komut , zaten varsa, bir docker ana bilgisayarında <span class="NormalTextRun SpellingErrorV2 SCXW251451022 BCX0">nginx</span> uygulamasının bir örneğini çalıştırır . Docker ana bilgisayarında yoksa, docker hub'ına gider (varsayılan olarak) ve görüntüyü aşağı çeker. Ancak bu sadece ilk kez yapılır. Sonraki zamanlarda aynı görüntü yeniden kullanılır.

Bir görüntünün belirli bir sürümünü çalıştırmak istiyorsanız, iki nokta üst üste ile ayırarak sürümünü belirtin. Bu, Tag olarak bilinir. Herhangi bir etiket belirtmemeniz durumunda, docker bunu varsayılan olarak en son olarak kabul edecektir.

Ayrıca, Docker kapsayıcıyı başlattıktan sonra komut istemine geri dönmek için kapsayıcıyı arka planda ayrılmış bir modda çalıştırmak istiyorsanız, -d bayrağını kullanın.

Örnek:

 $ docker run nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 33847f680f63: Pull complete dbb907d5159d: Pull complete 8a268f30c42a: Pull complete b10cf527a02d: Pull complete c90b090c213b: Pull complete 1f41b2f2bf94: Pull complete Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90 Status: Downloaded newer image for nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:13:23 [notice] 1#1: using the "epoll" event method 2021/08/15 12:13:23 [notice] 1#1: nginx/1.21.1 2021/08/15 12:13:23 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:13:23 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:13:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:13:23 [notice] 1#1: start worker processes 2021/08/15 12:13:23 [notice] 1#1: start worker process 33 2021/08/15 12:13:23 [notice] 1#1: start worker process 34

ps Komutu

docker ps komutu, çalışan tüm kapsayıcıları ve bunlarla ilgili bazı temel bilgileri listeler. Kapsayıcı kimliği, görüntünün adı, oluşturulduğu zaman kapsayıcı, geçerli durum ve kapsayıcının adı gibi. Her kapsayıcı rastgele bir ad (açıkça belirtilmemişse) ve kimlik alır.

Örnek:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 10 seconds ago Up 10 seconds 80/tcp jolly_elion

Çalışan ve çalışmayan/çıkmayan tüm kapsayıcıları bir kerede listelemek için şunları kullanabilirsiniz:

 $ docker ps -a

Örnek:

 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fcec129f0eb4 nginx "/docker-entrypoint.…" 46 hours ago Exited (0) 46 hours ago interesting_ishizaka 6e8b1e441aa6 hello-world "/hello" 2 days ago Exited (0) 2 days ago keen_shirley

ls Komutu

ps komutu gibi, ls de kapsayıcıları listelemek için kullanılabilir. -a bayrağı tüm kapsayıcıları listelemek için kullanılabilir (yalnızca çalışan olanları değil).

 $ docker container ls

Örnek:

 $ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 15796e91c30b redis "docker-entrypoint.s…" 2 seconds ago Up 1 second 6379/tcp flamboyant_neumann 904390b65d45 nginx "/docker-entrypoint.…" 14 minutes ago Up 14 minutes 80/tcp nginx_new $

Komutu durdur

docker stop komutu, çalışan bir kapsayıcıyı durdurmak için kullanılır. Burada bununla birlikte konteyner adını veya kimliğini koymamız gerekiyor.

 $ docker stop {container-id}

Başarılı olduğunda, liman işçisi adını veya kimliğini döndürür.

Örnek:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 133f5e0267a5 nginx "/docker-entrypoint.…" 50 seconds ago Up 49 seconds 80/tcp jolly_elion

Bu, konteyneri durdurmak için kullanabileceğiniz CONTAINER ID döndürür.

 $ docker stop 133f5 133f5

Bu örnek ve gelecek örnekler için, tam bir CONTAINER ID değeri belirtmeniz gerekmediğini unutmayın. Docker hangi konteynerin duracağını bildiği için, onu diğer çalışan konteynerler arasında benzersiz kılan parçayı kabul edecektir.

rm Komutu

docker rm komutu, durdurulan veya çıkılan bir kapsayıcıyı kaldırır.

 $ docker rm {CONTAINER NAME or ID}

Örnek:

 $ docker rm 133f5 133f5 $

exec Komutu

Çalışan bir konteynerin içine girmek için exec komutunu kullanabiliriz. Bu, çalışan kapsayıcılarda hata ayıklamak veya bir kap içinde bazı şeyler yapmak için kullanışlıdır.

 $ docker exec –it {container} {command}

Örnek:

Etkileşimli modda unruffled_meninsky adlı bir kap içinde bash kabuğunu başlatmak istediğinizi varsayalım (görüntünün Bash'in kullanılabilir olduğunu varsayarak, diğer kullanılabilir kabukları da kullanabilirsiniz), şunu kullanın:

 $ docker exec –it unruffled_meninsky /bin/bash

Bu, sizi bir bash kabuğundaki kabın içine indirmelidir. Burada -i bayrağı etkileşimli modu ve -t terminali temsil eder. Yalnızca bir veya daha fazla komut yürütmek ve kapsayıcıdan çıkmak istiyorsanız, şunları kullanabilirsiniz:

 $ docker exec unruffled_meninsky cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 cd2eed4acf34

günlükler Komut

Bir kapsayıcının ayrılmış modda başlatılması durumunda ve günlüklerini görmek istiyorsak, günlüklerini incelemek için logs komutunu kullanabiliriz:

 $ docker logs {CONTAINER NAME or ID}

Örnek:

 $ docker logs 7da6dcebaf9c /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/08/15 12:14:09 [notice] 1#1: using the "epoll" event method 2021/08/15 12:14:09 [notice] 1#1: nginx/1.21.1 2021/08/15 12:14:09 [notice] 1#1: built by gcc 8.3.0 (Debian 8.3.0-6) 2021/08/15 12:14:09 [notice] 1#1: OS: Linux 5.8.0-1039-azure 2021/08/15 12:14:09 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2021/08/15 12:14:09 [notice] 1#1: start worker processes 2021/08/15 12:14:09 [notice] 1#1: start worker process 31 2021/08/15 12:14:09 [notice] 1#1: start worker process 32 $

cp Komutu

Dosyaları bir kapsayıcı ile localhost dosya sistemi arasında kopyalamak için cp komutunu kullanabilirsiniz.

 $ docker container cp {CONTAINER NAME or ID:SRC_PATH} {DEST_PATH}|-

Örnek:

 $ docker container cp quirky_cray:/etc/nginx/nginx.conf nginx.conf.bkp

dışa aktarma komutu

Docker kapsayıcı komutu, bir kapsayıcının dosya sistemini TAR dosyası olarak dışa aktarma seçeneği sunar.

 $ docker container export {CONTAINER NAME or ID}

teftiş komutu

inspect komutunu kullanarak bir kap hakkında ayrıntılı bilgileri şu şekilde kontrol edebiliriz:

 $ docker inspect {CONTAINER NAME or ID}

VEYA

$ docker container inspect {CONTAINER NAME or ID}

Komutu öldür

Çalışan bir kapsayıcı, isteğe bağlı --signal veya -s bayrağıyla kill komutu kullanılarak öldürülebilir. Tek seferde onları öldürmek için birden fazla kap belirtilebilir.

 $ docker kill {CONTAINER NAME or ID} [--signal VAL]

Örnek:

 $ docker kill cd9005a0b5d2 -s 9 cd9005a0b5d2 $

istatistikler Komut

Bir kapsayıcının kaynak kullanımının canlı akışını görüntülemek için stats komutunu kullanabilirsiniz:

 $ docker container stats {CONTAINER NAME or ID}

Örnek:

 $ docker container stats thirsty_volhard CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 904390b65d45 thirsty_volhard 0.00% 3.406MiB / 7.775GiB 0.04% 1.02kB / 0B 0B / 8.19kB 3

üst Komut

Linux'taki top komutu gibi, çalışan işlemlerin bir listesini almak için Docker ile kullanabiliriz.

 $ docker container top {CONTAINER NAME or ID}

Örnek:

 $ docker container top thirsty_volhard UID PID PPID C STIME TTY TIME CMD root 2603 2582 0 12:34 ? 00:00:00 nginx: master process nginx -g daemon off; systemd+ 2659 2603 0 12:34 ? 00:00:00 nginx: worker process systemd+ 2660 2603 0 12:34 ? 00:00:00 nginx: worker process $

Komutu yeniden adlandır

Mevcut bir kapsayıcıyı yeniden adlandırmak için yeniden rename komutunu kullanın.

 $ docker container rename {OLD CONTAINER NAME} {NEW CONTAINER NAME}

Örnek:

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_container $ docker container rename nginx_container nginx_new $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 904390b65d45 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp nginx_new $

fark Komutu

Bir kapsayıcının dosya sistemindeki dosya veya dizinlerdeki değişiklikleri diff komutuyla inceleyebiliriz.

 $ docker container diff {CONTAINER NAME or ID}

Örnek:

 $ docker container diff nginx_new C /var C /var/cache C /var/cache/nginx A /var/cache/nginx/uwsgi_temp A /var/cache/nginx/client_temp A /var/cache/nginx/fastcgi_temp A /var/cache/nginx/proxy_temp A /var/cache/nginx/scgi_temp C /etc C /etc/nginx C /etc/nginx/conf.d C /etc/nginx/conf.d/default.conf C /run A /run/nginx.pid $

Özet

Sonuç olarak Doker, kapsayıcıları oluşturmadan imha etmeye kadar yönetmek için kapsamlı bir dizi komut sunar. Bu makalede, liman işçisi konteynerlerini yönetme konusunda size iyi bir fikir vermesi gereken bazı önemli komutları ve kullanımlarını ele aldık.

Ardından, DevOps öğrenmek için bazı kaynakları bulun.