2017-10-27 10 views
1

ドッカーコンテナにパッケージをインストールする方法が不思議です。私は、仮想マシン環境が必要ない場合、デフォルトでラベルなしで各ドッキング用にドッカーコンテナを作成して使用する、ドッカーエージェントテンプレートを含むいくつかの種類のエージェントを備えたジェンキンスサーバーを持っているとします。問題は、できるだけ安全な方法で、そのようなドッカー・コンテナ内のビルドの前に依存関係をインストールする方法です。私は、別々のニーズを持つ異なるプロジェクトのためにそれぞれ多くのイメージを持っているのはいいアイデアだとは思っていませんし、プロジェクトが依存関係を必要とするたびに単一のイメージを変更すると、しかし、通常、セキュリティ上の理由から、コンテナ内にルートアクセスはありません。どのようにこの状況に対処する/可能なオプションは何ですか?ドッカーコンテナにパッケージをインストールする

答えて

1

Jenkinsでは、エージェントが作成されるドッカーイメージを指定できます。

例:あなたが必要な依存関係が含まれていdockerhubのパブリックイメージを見つけることができない場合には

agent { 
    docker { 
     image 'maven:3-alpine' 
     label 'my-defined-label' 
     args '-v /tmp:/tmp' 
    } 
} 

、カスタムイメージを作成する必要があります。その方法は、Dockerfileを作成し、そこに依存関係をインストールすることです。

FROM base-image 
RUN apt-get update && apt-get install ... 

あなたは、エージェントをエージェントを作成、またはイメージを構築し、ジェンキンスホスト上に置くと規定するために、上記のパイプラインの構文を使用するには、このDockerfileを使用しますか。

あなたが直接Dockerfileを使用することができます。

agent { dockerfile { dir 'path-to-Dockerfile' } } 
+0

よく、正直に言うと、私はそれらのスクリプトのセキュリティについて確認していません。 jenkinsfileを書いてコミットできる人は、おそらくパイプラインスクリプトを使ってマスターノードを破損させているか、またはドッカーを実行している人に損傷を与える可能性があります。私は正しい?私はドッカーパイプラインを使用していませんが、クラウドドッカープラグインでは、デフォルトで各ビルドが明示的に要求せずに独自のコンテナで実行されますが、複数のテンプレートを作成しない限り、 –

+0

私は正しく理解していますが、私は現在、パイプラインを習得していないので、パイプラインはスクリプト化できます。これらのスクリプトはおそらくそれほど制限されていないので、理論上、スクリプトフラグメントが実行される、それは正しい?だから私はドッカーのコンテナを実行することができますが、私はセキュリティの境界としてそれらを完全に使用することはできません。私が言ったことが間違っていれば、その目的のためにパイプラインを使うだろう。 –

関連する問題