2016-04-11 20 views
6

Ben bir MAC kullanıcısıyım ve bir VM "ubuntu 14.04" içinde yüklü bir docker değilim. , Bana garip hata mesajı verir I (diğer konteynerler normalde çalıştırın) belirli konteyner başlattığınızdadocker "Yetişmek için alternatif bir telinit uygulaması bulunamadı"

sorundur (I liman işçisi araç kutusunu kullanarak, DEĞİL her şeyi manuel yüklü) "alternatif telinit bulunamadı 'u yumurtlamaya yönelik uygulama.

burada görüntü oluşturmak için kullanılan Dockerfile geçerli:

FROM diegomarangoni/hhvm:cli 

# install php composer. 
# It needs git and the PHP zip extension 
# zlib1g-dev is needed to compile the PHP zip extension 
# openssh-client provides ssh-keyscan 
RUN apt-get update \ 
    && apt-get install --assume-yes --no-install-recommends curl git zlib1g-dev openssh-client \ 
    && apt-get clean && rm -r /var/lib/apt/lists/* \ 
    && curl -sS https://getcomposer.org/installer -o installer \ 
    && hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 installer \ 
    && mv composer.phar /usr/local/bin/composer \ 
    && rm installer 

WORKDIR /home/assert/scripts 

COPY scripts/composer.json /home/assert/ 
COPY scripts /home/assert/scripts 

RUN hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 -v Eval.Jit=false \ 
    /usr/local/bin/composer install 

# Run the assert container web server 
CMD ["hhvm", "-v", "Eval.Jit=false", "/home/assert/scripts/vendor/bin/phpunit", "/home/assert/scripts/tests", "--configuration", "/home/assert/scripts/tests/phpunit.xml"] 

# keep it running 
CMD /sbin/init 

ve ben komutunu kullanarak başlatın: Önceden

docker run <CONTAINER> 

sayesinde

cevap

4

bunun birkaç Olabilir sürümlerine bağlı olarak burada. Dan Walsh'un eski mesajını denedin mi? eski sürümlerinde http://developers.redhat.com/blog/2014/05/05/running-systemd-within-docker-container/

olasılıkla çünkü Docker systemd yapması gereken iki gereksinimleri şudur:

  1. --privileged
  2. ile çalıştırmak gerekiyor hacim/sys/fs dahil etmek gerekiyor/CGroup
Eğer strace Eğer

, sen bulabilirsiniz:

ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 
lstat("/run/systemd/system/", 0x7fffa5b4e300) = -1 ENOENT (No such file or directory) 
execve("/lib/sysvinit/telinit", ["/usr/sbin/init"], [/* 8 vars */]) = -1 ENOENT (No such file or directory) 
writev(2, [{"Couldn't find an alternative tel"..., 61}, {"\n", 1}], 2Couldn't find an alternative telinit implementation to spawn. 
) = 62 
exit_group(1)       = ? 
+++ exited with 1 +++ 

Not th "init" ve "telinit" çizgisi boyunca bir yerde sinir bozucu olan ortak bağlantılar oldu. Daha da kafa karıştırıcı olan bu, eski yedeği SystemV değil, Upstart olan Red Hat tabanlı bir dağıtımdır (CentOS). Her durumda, sadece ne olduğunu çağırmak yararlıdır: systemd binary'sine bir sembolik bağlanma umuduyla,/usr/sbin/init.

Modern sürümlerde işleri doğru yapmak için symlinks ile çalışmayı denedim, ancak en iyi yolu bulmak aslında sadece run komutunu biraz değiştirmektir.

docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro [image] /bin/bash 

sen kadar doğrudan systemd çalıştırabilen mükemmel tamam olduğunu getirdikten sonra: Bu yardımcı olur

Name  : systemd 
Arch  : x86_64 
Version  : 219 
Release  : 19.el7_2.12 
Size  : 5.1 M 

Hope:

/usr/lib/systemd/systemd --system --unit=basic.target 

Bu aşağıda systemd sürümü ile bunu böyle görüyor. Orada bir sürü eski belge var ve systemd özelliklerini değiştiriyor. JohnnyB

+0

Blok komutunda belirtilen Dockerfile (başka bir CentOS 7 taban görüntüsüyle birlikte olsa da) kullandım ve çalıştırma komutunu kullandım. Ancak, "docker run çalıştırırken -ti -v/sys/fs/cgroup:/sys/fs/cgroup: ro [myimage]/bin/bash '," CPC bağlama noktasını bulamıyorum: Çalışmaya izin verilmiyor Başarısız yönetici nesnesini tahsis et: Çalışmaya izin verilmiyor – jaw