2016-11-10 2 views
1

私はドッカーで公式のジェンキンスのコンテナを走らせます。私は成功したビルドのポストアクションとしてドッカーイメージを構築する必要がありますが、Jenkinsコンテナにはドッカーバイナリはありません。ドッカーは正式なジェンキンスのコンテナに入れます

私は、ドッカーバイナリを使用して公式画像から自分のJenkinsコンテナを派生させることから、いくつかのオプションを参照しています。第2の選択肢は、ドッカーと他の必要なランタイムを利用できる専用のJenkinsスレーブを使用することです。第3の選択肢は、ジェンキンスのサーバーに責任を負わせることです。きれいでシンプルで簡単に繰り返すことができるので、私はコンテナですべてを動かしたいと思います。

この問題をどのように解決しましたか?長期的にはより良い解決策とは何ですか?私の最優先事項は、単一の不可能なコマンドでCIインフラストラクチャ全体をプロビジョニングし、設定し、ブートストラップすることです。また、構築されたドッカーコンテナはレジストリなどにプッシュされるので、コンポーネント間の接続性は最小限の複雑さまたは手動設定で最適でなければなりません。

答えて

3

dockerをコンテナにインストールすることはお勧めできません。あなたがドッキングウィンドウソケットを装着することで、あなたのホスト上で実行ドッカデーモンに到達することができますしかし

related article

。 テスト目的には適していますが、セキュリティ上の問題が発生するため、運用モードではこのように実行しないでください。

related article

あなたは確かにあなたのジェンキンスコンテナの終了ステータスを見て、あなたのホストから直接配備/ビルドプロセスを管理クリーナー解決策を見つけることができます。

+0

https://hub.docker.com/r/axltxl/jenkins-dood/ – user2363318

0

GoCDは、GoCDエージェントがドッカーコンテナで実行されており、正常なパイプラインでイメージを構築する必要があります。

TL; DRそれでもハックの方法が、これは最高の挙動するオプションです:ジェンキンスを実行ドッカホストへのコンテナから使用のTCP接続。 @ Raphayolが述べたように、セキュリティの意味に気をつけてください。ここで

我々がしようとしたものです:

1)ファイル名を指定して実行]ドッキングウィンドウドッキングウィンドウ

内部はない良いアイデア。 IOサブシステムが吠え、再起動するだけで様々な懸垂状態が発生します。

2)

群れの群れクラスタまたは任意の他のドッキングウィンドウのクラスタを構築するには、それらを構築することではない実行コンテナを意味しています。古いコンテナは、ビルドとプッシュが同じノードで実行されることが保証されていないため、最新のものとしてプッシュバックされます。

3)専用ビルドホスト

これは動作しますがワーカーノードの目的を打つと自動スケーリングがトリッキーになります。

作品の

4)マウントドッキングウィンドウソケット

ソート重い負荷にそれがランダムIOロックを生成し、ドッキングウィンドウデーモンを再起動すると

5必要です)このオプションは、数ヶ月のために働くTCP

を経由して戻って接続しますあなたのジェンキンがサーバーを構築しているかどうかは明らかではありませんが、このサーバーは十分に分離されています。

[[email protected] ~]# docker ps 
CONTAINER ID  IMAGE        COMMAND    CREATED    STATUS    PORTS        NAMES 
e3630d84909e  registry.backbase.com/gocd-agent "/sbin/my_init"  2 minutes ago  Up 2 minutes  0.0.0.0:9040-9045->9040-9045/tcp docker_agent_1 
[[email protected] ~]# docker exec -it e3 env|grep DOCKER 
DOCKER_TLS_VERIFY=yes 
DOCKER_HOST=tcp://10.10.10.10:2376 
DOCKER_CERT_PATH=/var/go/docker-certs 
関連する問題