2016-04-11 12 views
6

Sono un utente MAC e ha installato la finestra mobile all'interno di una macchina virtuale "ubuntu 14.04". (Ho installato tutto manualmente, NON tramite finestra mobile toolbox)finestra mobile "Impossibile trovare un'implementazione di telinit alternativa per spawn"

Il problema è quando comincio contenitore specifico (altri contenitori funzionare normalmente), mi dà questo messaggio di errore strano "viene subito telinit alternativa implementazione per spawn ".

ecco il Dockerfile ho usato per costruire l'immagine:

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 

e comincio usando il comando:

docker run <CONTAINER> 

Grazie in anticipo,

risposta

4

Potrebbe essere un paio di cose in corso qui a seconda delle tue versioni. Hai provato il post più vecchio di Dan Walsh? http://developers.redhat.com/blog/2014/05/05/running-systemd-within-docker-container/

Nelle versioni più vecchie questo è probabilmente a causa di due requisiti Docker deve fare systemd:

  1. bisogno di correre con --privileged
  2. necessità di includere volumi/sys/fs/cgroup

Se strace, si possono trovare:

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 +++ 

Nota esimo da qualche parte lungo la linea "init" e "telinit" sono diventati collegamenti simbolici comuni che sono frustranti. Ancora più confusa, questa è una distro basata su Red Hat (CentOS) il cui fallback legacy dovrebbe essere Upstart, non SystemV. In ogni caso, è utile chiamarlo semplicemente: usa systemd binary direttamente, NOT/usr/sbin/init sperando che sia un link simbolico al binario systemd.

Nelle versioni moderne ho provato a giocare con i collegamenti simbolici per sistemare le cose, ma trovare il modo migliore per andare è in realtà solo cambiare il comando di marcia un po '.

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

Una volta che siete così lontano è perfettamente bene per eseguire systemd direttamente:

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

Questo è come la vedo io con la versione systemd di seguito:

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

Spero che questo aiuti. Un sacco di vecchi documenti là fuori e modifiche alle specifiche del sistema. JohnnyB

+0

Ho usato il Dockerfile menzionato nel blocco (sebbene con un'altra immagine di base CentOS 7) e ho usato il comando run. Tuttavia, quando si esegue la finestra mobile run -ti -v/sys/fs/cgroup:/sys/fs/cgroup: ro [myimage]/bin/bash', si ottiene 'Impossibile trovare il punto di montaggio cgroup: Operazione non consentita Impossibile allocare oggetto manager: operazione non consentita ' – jaw