2015-04-19 14 views
7

Sto cercando di installare il pacchetto mono su un contenitore Docker, ma mono richiede pacchetti git, autoconf, libtool, automake, build-essential, mono-devel, gettext.installazione di un compilatore GCC su un contenitore Docker

il problema che sto avendo è che libtool richiede libc-dev e libc-dev richiede il compilatore gcc.

Il contenitore finestra mobile non ha alcun compilatore installato, ma il mio computer locale lo fa.

[email protected]:~/Documents/bedgraph_dockerfile$ dpkg --list |grep compiler 
ii g++                 4:4.8.2-1ubuntu6         amd64  GNU C++ compiler 
ii g++-4.8              4.8.2-19ubuntu1          amd64  GNU C++ compiler 
ii gcc               4:4.8.2-1ubuntu6         amd64  GNU C compiler 
ii gcc-4.8              4.8.2-19ubuntu1          amd64  GNU C compiler 
ii hardening-includes           2.5ubuntu2.1          all   Makefile for enabling compiler flags for security hardening 
ii libllvm3.5:amd64           1:3.5-4ubuntu2~trusty2        amd64  Modular compiler and toolchain technologies, runtime library 
ii libmono-compilerservices-symbolwriter4.0-cil     3.2.8+dfsg-4ubuntu1.1        all   Mono.CompilerServices.SymbolWriter library (for CLI 4.0) 
ii libxkbcommon0:amd64           0.4.1-0ubuntu1          amd64  library interface to the XKB compiler - shared library 
ii mono-mcs             3.2.8+dfsg-4ubuntu1.1        all   Mono C# 2.0/3.0/4.0/5.0 compiler for CLI 2.0/4.0/4.5 

quindi la mia domanda è, qual è il modo più semplice per ottenere un compilatore gcc su un contenitore Docker? dovrei semplicemente creare un volume di queste directory del compilatore nel mio contenitore docker?

Il motivo per cui penso che potrebbe essere necessario è perché sto eseguendo un sito Web e il sito Web esegue direttamente un'immagine di finestra mobile.

risposta

8

Nel vostro Dockerfile:

FROM ubuntu 
# ... 
ENV DEBIAN_FRONTEND noninteractive 
RUN apt-get update && \ 
    apt-get -y install gcc mono-mcs && \ 
    rm -rf /var/lib/apt/lists/* 
+1

Qual è la differenza tra RUN apt-get install g ++ - 4.9? – arcolombo

+1

qual è la differenza tra mono-mcs e le istruzioni trovate dal loro sito mono, PATH = $ PREFIX/bin: $ PATH git clone https://github.com/mono/mono.git cd mono ./ autogen.sh --prefix = $ PREFIX make make install – arcolombo

+0

@arcolombo, nel mio snipet è stato installato il compilatore GNU C. Sentiti libero di sostituire questa linea con qualsiasi altro compilatore di cui hai bisogno. Se hai bisogno dell'ultimo g ++, fallo e basta. –

6

Da quanto ho capito, il PO ha confuso la terminologia, e probabilmente destinato a chiedere:

l'installazione di un compilatore GCC un'immagine di Docker su

La mia risposta inizia affrontando il titolo della domanda (per quanto riguarda contenitori), quindi passa allo scopo della domanda (per le immagini ).

Se è possibile eseguire una shell BASH nel contenitore, non è necessario modificare un file Docker.

Diciamo, per esempio, si tenta il suggerimento dall'esempio docker run hello-world:

docker run -it ubuntu bash 

Poi basta eseguire questi dal guscio nel contenitore ...

apt-get update 
apt-get install gcc 

Un punto chiave è che apt-get install in un contenitore Docker non elaborato potrebbe non comportarsi come previsto se prima non si esegue apt-get update. Aspettiamo di vedere ...

Impossibile trovare il pacchetto gcc

Il messaggio di errore quando si tenta di installare g++ senza apt-get update è ancora più confusa a causa di "regex" substitution.


Consulta anche: http://www.liquidweb.com/kb/how-to-list-and-attach-to-docker-containers

docker ps -a ## list all available containers 

e

docker exec -ti [CONTAINER ID] bash 

Questo approccio live-manipolazione può anche essere utilizzato per crea immagini come l'OP probabilmente destinato.Usa docker commit per salvare il tuo contenitore live come una nuova immagine.

3

Si potrebbe anche prendere un'immagine ufficiale che ha già GCC e/o alcuni/molti degli strumenti necessari già installati. Il negozio finestra mobile ha un sacco di immagini ufficiali già di impostazione: https://store.docker.com/search?page_size=99&q=&source=verified

non sono sicuro se è il mono destra, ma hanno un'immagine mono: https://store.docker.com/images/4234a761-444b-4dea-a6b3-31bda725c427?tab=description

E un'immagine ufficiale GCC: https://store.docker.com/images/06ad851d-f666-47d3-9ef3-e90535c141ec?tab=description

C'è anche buildpack-dipendenze, se si sta andando ad essere la costruzione di roba da soli: https://store.docker.com/images/9e56c286-5b40-4838-89fe-fd513c9c3bd6

È possibile navigare per categoria: https://store.docker.com/search?page_size=99&q=&source=verified

E anche cercare direttamente hub docker per mono o qualsiasi altra vostra esigenza: https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=mono&starCount=0

Problemi correlati