web-dev-qa-db-ja.com

GCCコンパイラーをDockerコンテナーにインストールする

MonoパッケージをDockerコンテナにインストールしようとしていますが、monoにはgit、autoconf、libtool、automake、build-essential、mono-devel、gettextパッケージが必要です。

私が抱えている問題は、libtoolがlibc-devを必要とし、libc-devがgccコンパイラを必要とすることです。

Dockerコンテナにはコンパイラがインストールされていませんが、ローカルマシンにはインストールされています。

arcolombo@acolombo:~/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

だから私の質問は、gccコンパイラをDockerコンテナに入れる最も簡単な方法は何ですか?これらのコンパイラディレクトリのボリュームをドッカーコンテナに作成するだけですか?

私がそれを必要とするかもしれないと思う理由は、私がウェブサイトを運営していて、そのウェブサイトがドッカー画像を直接実行するからです。

15
sophie-germain

Dockerfileで:

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

私はそれを理解しているように、OPは用語を混同しており、おそらく尋ねることを意図していた:

gCCコンパイラをDockerにインストールするimage

私の答えは、質問のタイトルに対処することから始まり(containersに関して)、次に質問の意図に移ります(imagesに関して)。

コンテナでBASHシェルを実行できる場合、Dockerfileを操作する必要はありません。

たとえば、 docker run hello-world の例のヒントを試してみます。

docker run -it ubuntu bash

次に、コンテナ内のシェルからこれらを実行します...

apt-get update
apt-get install gcc

重要な点は、最初にapt-get installを実行しないと、未加工のDockerコンテナー内のapt-get updateが期待どおりに動作しない可能性があることです。期待して...

パッケージgccが見つかりません

g++なしでapt-get updateをインストールしようとしたときのエラーメッセージは、 "regex"置換 によりさらに混乱します。


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

docker ps -a ## list all available containers

そして

docker exec -ti [CONTAINER ID] bash

このライブ操作のアプローチは、OPが意図したとおりに画像を作成するためにも使用できます。 docker commitを使用して、ライブコンテナーを新しいイメージとして保存します。

14
nobar

GCCおよび/または必要なツールの一部またはほとんどが既にインストールされている公式イメージを取得することもできます。 Dockerストアには多くの公式画像が既に設定されています: https://store.docker.com/search?page_size=99&q=&source=verified

正しいモノかどうかはわかりませんが、モノの画像があります: https://store.docker.com/images/4234a761-444b-4dea-a6b3-31bda725c427?tab=description

そして公式のGCCイメージ: https://store.docker.com/images/06ad851d-f666-47d3-9ef3-e90535c141ec?tab=description

自分で作成する場合はbuildpack-depsもあります: https://store.docker.com/images/9e56c286-5b40-4838-89fe-fd513c9c3bd6

カテゴリ別に参照できます: https://store.docker.com/search?page_size=99&q=&source=verified

また、モノまたは必要なものを直接ドッカーハブで検索します。 https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=mono&starCount=

4
zbeekman