2013-10-12 12 views
22

Secondo this github issue dovrebbe essere possibile avviare un contenitore completo con Upstart, cron ecc. Con Docker 0.6 o successivo, ma come faccio?Avvia il contenitore completo nel Docker?

mi aspettavo che

docker run -t -i ubuntu /sbin/init 

avrebbe funzionato proprio come

lxc-start -n ubuntu /sbin/init 

e vorrei avere una schermata di login, ma invece viene visualizzato nulla. Ho anche provato ad accedervi usando ssh, ma senza fortuna. Sto usando l'immagine di Ubuntu predefinita dall'indice di Docker.

risposta

21

docker run ubuntu /sbin/init sembra funzionare perfettamente per me con 0.6.6. Non otterrai una schermata di accesso perché Docker gestisce solo il processo. Invece, è possibile utilizzare docker ps -notrunc per ottenere l'ID contenitore lxc completo e quindi utilizzare il suffisso lxc-attach -n <container_id> in tale contenitore come root. sshd non è installato nel contenitore, quindi non puoi ssh ad esso.

1

È possibile utilizzare l'immagine ubuntu-parvenu:

docker run -t -i ubuntu-upstart:14.04 /sbin/init

Anche se questa soluzione è purtroppo deprecato, è abbastanza buono se avete bisogno di un contenitore pieno sistema operativo che 'unità', come una normale Ubuntu 12.04, 14.04 o 14.10 (cambiare il: 14.04 bit) sistema oggi. Se non viene specificata alcuna versione, il valore predefinito è 14.04. Non l'ho usato molto e ho avuto alcuni problemi nell'installazione di pacchetti più complicati (ad esempio dbus!), Ma potrebbe funzionare per voi.

Ahimè Ubuntu è passato a systemd nelle versioni più recenti. Googling rivela che sembra esserci un lavoro in corso per rendere sistematico il lavoro in un container docker senza richiedere privilegi elevati, ma non sembra essere abbastanza pronto per il prime time. Spero che sarà pronto quando 16.04 diventerà LTS.

Un'altra opzione è ovviamente utilizzare phusion/baseimage, ma ha il proprio approccio per l'avvio dei servizi. Sembra più adatto a contenitori minimi multi-processo.

+0

Avete un collegamento all'ammortamento di questa soluzione? – brujoand

+1

@brujoand È deprecato nel senso che ubuntu è passato a usare systemd, quindi il lavoro fatto per far funzionare il upstart in un contenitore docker non sarà utile per le versioni di ubuntu dopo 14.10. – NeilenMarais

+0

Il mio attuale client (al momento della scrittura) utilizza 14.04 e sembra che non abbia piani per l'aggiornamento fino al termine del supporto ufficiale, quindi non è deprecato per me! –