2016-05-29 5 views
2

ドッカーベースのアプリケーションを動作させるために、ホストマシンにバイナリを必要とするアプリケーションがあります。ドッカーレジストリを使用してイメージを配送することはできますが、これらのバイナリをホストマシンにどのように出荷するのですか? deb/rpmを作成することも可能ですが、それはドッカーのプラットフォームに依存しない哲学に反するでしょう。ドッカー画像でファイルをパッケージ化する方法

+0

しかし、ドッカーベースのアプリケーションは、そのコンテナで自立する必要がありますか?そうでない場合は、ドッカーを実行するラッパーを考えることができますか。 (http://stackoverflow.com/a/22050116/6309のように) – VonC

答えて

0

イメージがパッケージマネージャーのイメージに基づいている場合は、パッケージマネージャーを使用して必要なバイナリをインストールすることができます。

RUN apt-get update && apt-get install -y required-package 

また、静的にリンクされたバイナリをインターネットからダウンロードして抽出することもできます。

RUN curl -s -L https://example.com/some-bin.tar.gz | tar -C /opt -zx 

バイナリがビルドプロセスの一部として作成されている場合、あなたは何ができるか、ホストマシン上でドッキングウィンドウの画像の外側にそれらが必要な場合は、

COPY build/target/bin/* /usr/local/bin/ 
0

上にそれらをコピーしたいと思いますこれは。

ADDまたはCOPY

であなたのDockerfileにそれらを追加します。また、コンテナでdestにホストからのインストールディレクトリをマウントバインド次にcp -f src dest を呼び出してインストールスクリプトを持っていました。

次の例のようなもの:

Dockerfile

FROM ubuntu:16.04 

COPY file1 /src 
COPY file2 /src 
COPY install /src 
CMD install 

それをビルドします。

docker build -t installer .

をスクリプトをインストールします。

#/bin/bash 
cp -f /src /dist 

インストール:

docker run -v /opt/bin:/dist 

がFILE1になりますがfile2がホスト上の/ opt/binに終わる。

関連する問題