2017-12-07 9 views
8

私はdockerイメージを構築するためにbambooビルドプランを設定しています。 AWS ECSをレジストリとして使用する。ビルドプランは、このようなものです。dockerはレジストリから以前のビルドキャッシュを使用してビルドします

  • は(ECSのために必要な)画像

    docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • 最新のタグ

    docker build -t myimage:latest . 
    
  • タグと最新のタグ

    docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • ビルドイメージを引きますビルドタスクが異なると、新鮮なビルドエンジン/サーバー上のたびに実行されるので、それがローカルキャッシュを持っていないレジストリ

    docker push xx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    

に画像を押してください。

Dockerfileで何かを変更してもう一度(別のサーバーで)実行しても、ドッカーがローカルキャッシュを使用することを期待しています(ドッカープルからのものです)。しかし、それは毎回イメージを構築しようとします。私はまた、ファイルの最後に何かを変更すると、キャッシュを使用して最新の行だけを実行することを期待していましたが、これについてはわかりません。

私は何か間違ったことを知っているのですか、アプローチについて意見はありますか?

+0

「毎回イメージを作成しようとしています」という出力を共有できますか?それでも、各レイヤーには「構築済み」が表示されますが、キャッシュを使用していると表示されます。 – danehammer

+1

08-Dec-2017 08:38:16 \tステップ8:RUN add-apt-repository ppa:maxmind/ppa -y 08-Dec-2017 08:38:17 \t ---> 5806bde2c3d3で実行 08- Dec-2017 08:38:17 \t gpg:キーリング '/tmp/tmp5o6q7_ge/secring.gpg 'が作成されました 08-Dec-2017 08:38:17 \t gpg:キーリング' /tmp/tmp5o6q7_ge/pubring.gpg'が作成されました 08-Dec-2017 08:38:17 \t gpg:hkpサーバーkeyerver.ubuntu.comからキーDE742AFAを要求しています 08-Dec-2017 08:38:17 \t gpg:/tmp/tmp5o6q7_ge/trustdb.gpg:trustdb created 08-Dec-2017 08:38:17 \t gpg:キーDE742AFA:公開鍵「Launchpad PPA for MaxMind」をインポート 08-Dec –

+0

例。以前のレイヤーは使用していないと言っていました。 –

答えて

3

squid proxy をお考えですか?その後、あなたは上記の公式サイトに行きたくない場合には、ここではイカプロキシ(のdebianベース)上の迅速なセットアップがある

apt-get install squid-deb-proxy 

とオープンで大きなスペースを作成するために、イカの設定を変更します。

編集

/etc/squid/squid.conf 

cache_dir ufs /var/spool/ squid 10000 16 256 とそこで#cache_dir ufs /var/spool/squidを交換するまで、あなたが行く,,キャッシュ・スペースの価値は10.000メガバイト

その後、dockerfileにプロキシアドレス,,ここ を指してはイカプロキシとdockerfileの一例である

のyumやapt-getのベースのディストリビューション:

apt-getのベースのディストリビューション

`FROM debian 
RUN apt-get update -y && apt-get install net-tools 
RUN echo "Acquire::http::Proxy \"http://$(\ 
route -n | awk '/^0.0.0.0/ {print $2}' \ 
):8000\";" \ > /etc/apt/apt.conf.d/30proxy 
RUN echo "Acquire::http::Proxy::ppa.launchpad.net DIRECT;" >> \ 
/etc/apt/apt.conf.d/30proxy 
CMD ["/bin/bash"]` 

はyumベースのディストリビューション

`FROM centos:centos7 
RUN yum update -y && yum install -y net-tools 
RUN echo "proxy=http://$(route -n | \ 
awk '/^0.0.0.0/ {print $2}'):3128" >> /etc/yum.conf 
RUN sed -i 's/^mirrorlist/#mirrorlist/' \ 
/etc/yum.repos.d/CentOS-Base.repo 
RUN sed -i 's/^#baseurl/baseurl/' \ 
/etc/yum.repos.d/CentOS-Base.repo 
RUN rm -f /etc/yum/pluginconf.d/fastestmirror.conf 
RUN yum update -y 
CMD ["/bin/bash"]` 

あなたのawsレジストリにsquidプロキシをインストールすると、最初のビルドだけがインターネットからデータを取得し、残りの(別のサーバー)ビルドはキャッシュされたsquidプロキシから取得する必要があります。 。実際に本ドッキングウィンドウに基づいて

この技術技術57より速く私はドッキングウィンドウ内のキャッシュ機能は、任意のサードパーティ製のソフトウェアを使用せずあると思ういけない

を構築するためのパッケージキャッシュを設定点画を持ちます。私はそれを知っていません。 .imわからない、 私は間違っている場合は、私だけを修正します。 。

+0

質問はaptパッケージをキャッシュすることではなく、イメージレイヤーについてです。 –

+0

。 。ちょっとだけ私の小さな例、あなたもイメージの層にイカのキャッシュを使用することができます。 。ここにいくつかの例[docker caching proxy](http://planet.jboss.org/post/deploy_and_configure_a_local_docker_caching_proxy)があります。 –

関連する問題