TP-DR
docker ps --no-truncve docker inspect CONTAINERiletilen komutun yanı sıra, kapsayıcıyı başlatmak için yürütülen giriş noktasını sağlayın, ancak ${ANY_VAR}kap ortamı değişkenleri çözümlenmiş olarak yazdırılmadığı için bazı bölümleri kaçırabilir .
Bunun üstesinden gelmek docker inspect CONTAINER, bir avantajı vardır, çünkü aynı zamanda env değişkenlerini ve kapta tanımlanan değerlerini Config.Envmülkten ayırmaya da izin verir .
docker psve docker inspectyürütülen giriş noktası ve komutu hakkında bilgi sağlar. Genellikle, bu .shkap tarafından başlatılan "gerçek" program değil , bir sarıcı giriş noktası komut dosyasıdır ( ). Bununla ilgili bilgi almak için, işlem bilgilerini psveya /proc/1/cmdlineyardımını isteyin.
1) docker ps --no-trunc
Giriş noktasını ve çalışan tüm kapsayıcılar için yürütülen komutu yazdırır. Giriş noktasına iletilen komutu yazdırırken (bunu geçersek), docker env değişkenlerinin ( $FOOveya gibi ${FOO}) değerini göstermez .
Kaplarımız env değişkenleri kullanıyorsa, yeterli olmayabilir.
Örneğin, bir alp kabı çalıştırın:
docker run --name alpine-example -e MY_VAR=/var alpine:latest sh -c 'ls $MY_VAR'
Docker -ps kullanırken aşağıdaki gibi:
docker ps -a --filter adı = alp-örneği --no-trunc
Yazdırır:
KONTEYNER KİMLİĞİ GÖRÜNTÜ KOMUTU OLUŞTURULAN DURUM LİMANLARI İSİMLERİ
5b064a6de6d8417 ... alpine: en son "sh -c 'ls $ MY_VAR'" 2 dakika önce Çıkış (0) 2 dakika önce alpine-example
Komutun giriş noktasına aktarıldığını görüyoruz: sh -c 'ls $MY_VAR'ancak $MY_VAR gerçekten çözülmedi.
2) docker inspect CONTAINER
Alpin örnek kabını incelediğimizde:
docker inspect alpine-example | grep -4 Cmd
Komut da orada ancak hala env değişkeni değerini görmüyoruz:
"Cmd": [
"sh",
"-c",
"ls $MY_VAR"
],
Aslında, bu docker komutlarıyla enterpolasyonlu değişkenleri göremedik.
Bir takas olarak, docker incelemesi olan bir konteyner için hem komut hem de env değişkenlerini ayrı ayrı görüntüleyebiliriz:
docker inspect alpine-example | grep -4 -E "Cmd|Env"
Bu yazdırır:
"Env": [
"MY_VAR=/var",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"sh",
"-c",
"ls $MY_VAR"
]
Daha yapıcı bir yol, oluşturulacak JSON özniteliklerini belirtmeye izin veren --formatbayrağını kullanmak olacaktır docker inspect:
docker inspect --format '{{.Name}} {{.Config.Cmd}} {{ (.Config.Env) }}' alpine-example
Bu çıktı:
/ alp-example [sh -c ls $ MY_VAR] [MY_VAR = / var PATH = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin]
3) Çalıştırılan kaplar için başlatılan işlemi kabın kendisinden alın
Docker tarafından yürütülen giriş noktası ve komut yardımcı olabilir, ancak bazı durumlarda bu yeterli değildir, çünkü bu yalnızca .shgerçek / çekirdek işlemini başlatmaktan sorumlu bir sarıcı giriş noktası komut dosyasıdır ( ).
Örneğin, bir Nexus kapsayıcısını çalıştırdığımda, kapsayıcıyı çalıştırmak için yürütülen ve gösterilen komut "sh -c ${SONATYPE_DIR}/start-nexus-repository-manager.sh".
PostgreSQL için "docker-entrypoint.sh postgres".
Daha fazla bilgi almak için, çalışan bir kapsayıcı üzerinde çalışabiliriz
docker exec CONTAINER ps aux.
Bizi ilgilendirmeyecek başka süreçler de basabilir.
Giriş noktası tarafından başlatılan ilk işlemi daraltmak için şunları yapabiliriz:
docker exec CONTAINER ps -1
Belirttiğim 1GirişNoktası tarafından yürütülen işlem genellikle ile biridir çünkü 1id.
Olmadan ps, hala bilgileri bulabiliriz /proc/1/cmdline(Linux dağıtımlarının çoğunda, ancak hepsinde değil). Örneğin :
docker exec CONTAINER cat /proc/1/cmdline | sed -e "s/\x00/ /g"; echo
Kapsayıcıyı başlatan docker ana bilgisayarına erişimimiz varsa, giriş noktası tarafından yürütülen işlemin tam komutunu almanın başka bir yolu:: execute ps -PIDburada PID, Docker arka plan programı tarafından kapsayıcıyı çalıştırmak için oluşturulan yerel işlemdir:
ps -$(docker container inspect --format '{{.State.Pid}}' CONTAINER)
Docker PS ile kullanıcı dostu biçimlendirme
docker ps --no-truncokunması her zaman kolay değildir.
Yazdırılacak sütunları ve tablo biçiminde belirtmek onu daha iyi hale getirebilir:
docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"
Bir takma ad oluşturmak aşağıdakilere yardımcı olabilir:
alias dps='docker ps --no-trunc --format "table{{.Names}}\t{{.CreatedAt}}\t{{.Command}}"'