2015-12-14 59 views
8

Desidero installare la finestra mobile all'interno di un contenitore mobile.finestra mobile all'interno della finestra mobile

docker run -it centos:centos7 

mio contenitore di base sta usando CentOS, posso accedere alla corsa container usando docker exec. Ma quando provo ad installare la finestra mobile al suo interno usando yum install -y docker si installa.

Ma in qualche modo non posso avviare il servizio finestra mobile con docker -d &, mi dà errore:

INFO[0000] Option DefaultNetwork: bridge 
WARN[0000] Running modprobe bridge nf_nat br_netfilter failed with message: , error: exit status 1 
FATA[0000] Error starting daemon: Error initializing network controller: Error initializing bridge driver: Setup IP forwarding failed: open /proc/sys/net/ipv4/ip_forward: read-only file system 

C'è un modo posso installare finestra mobile all'interno del contenitore finestra mobile o costruire un'immagine già avere in esecuzione finestra mobile? Ho già visto esempi these ma nessuno funziona per me.

L'uscita uname -r sulla macchina host:

[[email protected] ~]$ uname -r 
4.2.6-200.fc22.x86_64 

Tutto l'aiuto sarebbe apprezzato.

Grazie in anticipo

+0

È possibile fornire gli interi comandi utilizzati per avviare il container di base e in-docker? Potrebbe esserci qualcosa di sbagliato negli argomenti che hai passato. – michaelbahr

+0

Hi Michaelbar, certo sotto è quello che ho provato: finestra mobile run -è CentOS: bash centos7 installare finestra mobile all'interno CentOS: – priyank

+1

Si prega di estendere (edit) la tua domanda con i comandi. – michaelbahr

risposta

1

È necessario il parametro --privileged.

By default, Docker containers are “unprivileged” and cannot, for example, run a Docker daemon inside a Docker container.

Source

eseguire la vostra immagine di base con il comando docker run --privileged -it centos:centos7 bash. Quindi è possibile installare ed eseguire un altro contenitore finestra mobile all'interno del contenitore.

+0

hey grazie per una risposta rapida, ho tr Ied with "--privilaged", quando eseguo il daemon docker all'interno del contenitore centos7, arrivo sotto: qualsiasi idea – priyank

+0

INFO [0000] Ascolto per HTTP su unix (/var/run/docker.sock) WARN [0000] La sincronizzazione di Udev non è supportata. Ciò porterà a comportamenti imprevisti, perdita di dati ed errori. Per ulteriori informazioni, consultare https://docs.docker.com/reference/commandline/cli/#daemon-storage-driver-option ERRO [0000] ATTENZIONE: No --storage-opt dm.thinpooldev specificato, utilizzando loopback; questa configurazione è fortemente sconsigliata per l'uso in produzione ERRO [0000] [graphdriver] driver di archiviazione precedente "devicemapper" non riuscito: exec: "mkfs.ext4": file eseguibile non trovato in $ PATH – priyank

+1

No, si avvia la ** base ** contenitore docker con '--privileged'. Il contenitore interno viene avviato senza il parametro. Fornisci sempre gli interi comandi che hai eseguito. – michaelbahr

7

Aggiornamento

Grazie a https://stackoverflow.com/a/38016704/372019 voglio mostrare un altro approccio.

Invece di montare il binario dell'host docker, è necessario copiare o installare una versione specifica del contenitore del binario docker. Dal momento che lo si utilizza solo in modalità client, non è necessario installarlo come servizio di sistema. È comunque necessario montare la presa Docker nel contenitore in modo da poter comunicare facilmente con il motore Docker dell'host.

Supponendo che avete ottenuto un'immagine di base con un Docker binario di lavoro (ad esempio, il official docker image), l'esempio ora si presenta così:

docker run\ -v /var/run/docker.sock:/var/run/docker.sock\ docker:1.12 docker info


Senza rispondere alla tua domanda in realtà io suggerirei leggere Using Docker-in-Docker for your CI or testing environment? Think twice.

Spiega perché è necessario sostituire la finestra mobile docker in una configurazione in cui i contenitori Docker vengono eseguiti come fratelli del contenitore "esterno" o "base". L'articolo si collega anche al progetto originale https://github.com/jpetazzo/dind in cui è possibile trovare esempi di funzionamento su come eseguire Docker in Docker - nel caso in cui si desideri avere ancora la finestra mobile.

Un esempio come abilitare un contenitore per accedere Docker daemon sguardo del padrone di casa in questo modo:

docker run\ 
    -v /var/run/docker.sock:/var/run/docker.sock\ 
    -v /usr/bin/docker:/usr/bin/docker\ 
    busybox:latest /usr/bin/docker info 
2

Se siete su Mac con Docker cassetta degli attrezzi.

Il comando di seguito non funzionerà

docker run\ 
    -v /var/run/docker.sock:/var/run/docker.sock\ 
    -v /usr/bin/docker:/usr/bin/docker\ 
    busybox:latest /usr/bin/docker info 

Perché /var/run/docker.sock non sarà sul vostro filesystem OSX

il demone Docker è in esecuzione all'interno del boot2docker VM - ed è lì che il socket unix è .

Quindi, è necessario eseguire il contenitore dal boot2docker VM

$ docker-machine ssh default 
$ docker run\ 
     -v /var/run/docker.sock:/var/run/docker.sock\ 
     -v $(which docker):/usr/bin/docker\ 
     busybox:latest /usr/bin/docker info 
$ exit 

Questo appare come Docker-in-Docker, si sente come Docker-in-Docker, ma non Docker-in-Docker, quando il contenitore creerà più contenitori, tali contenitori verranno creati nella finestra mobile di livello superiore.

+0

Grazie per l'attenzione su un esempio specifico della mia cattiva piattaforma. Il tuo esempio è certamente un miglioramento, ma non è ancora indipendente dalla piattaforma. Non appena il sistema host e l'immagine base del contenitore utilizzano architetture diverse, ti perderai. Aggiornerò la mia risposta con un approccio più flessibile. – gesellix

Problemi correlati