2015-04-30 22 views
28

aşağıdaki komutla konteyneri yarattıDocker konteyner başlamıyoruz (liman işçisi başlangıcı)

gerçekten söylemek için çok fazla
[email protected]:~# docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
[email protected]:~# docker ps -a 
CONTAINER ID  IMAGE        COMMAND    CREATED    STATUS       PORTS    NAMES 
e4ac54468455  basickarl/docker-git-test:latest "/bin/bash"   7 minutes ago  Exited (0) 26 seconds ago       adoring_lumiere  
22d7c5d83871  basickarl/docker-git-test:latest "/bin/bash"   2 hours ago   Exited (127) About an hour ago      thirsty_wright  
[email protected]:~# docker attach --sig-proxy=false e4 
FATA[0000] You cannot attach to a stopped container, start it first 
[email protected]:~# docker start e4 
e4 
[email protected]:~# docker attach --sig-proxy=false e4 
FATA[0000] You cannot attach to a stopped container, start it first 
[email protected]:~# 

, ben bekliyorum kaptan başlamak ve upp kalmak. Sen bash, işletmek amacıyla bir tty gerektirir interaktif kabuk çalıştırmak için çalışıyoruz

[email protected]:~# docker logs e4 
[email protected]:~# 
+0

'liman işçisi günlükleri ne der e4' mı? – kojiro

+0

@kojiro Güncellenmiş soru, bana herhangi birini vermek istemiyor. –

+0

Elbette. Çıkmış bir kabuğa gerçekten bağlanamazsınız. Bu durumda docker start -ia $ (docker ps -ql) 'bile başarısız olur. En iyi bahsiniz bu konteynırı işlemek ve yeni bir görüntüyü başlatmaktır. – kojiro

cevap

37

: Burada kayıtları. -d ile bu "bağımsız" modda çalıştırmak gerçekten mantıklı değil, ancak komut satırına -it ekleyerek bunu yapabilirsiniz, bu kapsayıcının ilişkili bir tt ile ilişkili olmasını sağlar ve stdin bağlı kalır:

docker run -it -d -p 52022:22 basickarl/docker-git-test 

Sen daha yaygın uzun ömürlü olmayan interaktif sürecin çeşit aday olacağını müstakil kapları başlayan (sshd veya web sunucusu veya veritabanı sunucusu veya systemd veya supervisor gibi bir işlem yöneticisi gibi). Eğer sshd gibi bir hizmeti çalıştırmak çalışıyorsanız

, sadece service ssh start çalıştıramazsınız. Bu irade - - Eğer kabın içine koşuyoruz dağılımına bağlı olarak iki şeyden birini yapın:

  • Bu hizmeti başlatmak için systemd veya upstart gibi bir süreç yöneticisi ile irtibata çalışacaktır. Çalışan bir servis yöneticisi olmadığından, bu başarısız olur.

  • Aslında sshd başlayacak, ancak arka planda başlanacaktır. Bu demektir ki, (a), (b) Docker kapsayıcı başarısız olarak değerlendirip, bu nedenle her şeyi temizler anlamına gelir service sshd start komut çıkışlar,. Bir kapta sadece ssh çalıştırmak istiyorsanız

, this gibi bir örnek düşünün.

Kapsayıcının içinde sshdve diğer işlemleri çalıştırmak istiyorsanız, bir tür işlem denetleyicisi araştırmanız gerekir.

+2

Evet, ama emin olmak için, bu yeni bir kap oluşturacak, mevcut olanı başlatmayacak. – kojiro

+1

Bu yüzden mevcut olanı başlamayacaktır. Bash derhal başarısız olur, çünkü bağlı bir tipe sahip değildir. Bu aynı zamanda herhangi bir kayıt olmuyor (çünkü işlem herhangi bir çıktı üretmeden hemen çıkıyor). – larsks

+1

Ahh Hemen gidip bir tür süreci çalıştırmak yoksa tabii ki çıkar, bu açıkça belirtti. –

İlgili konular