2017-12-07 133 views
8

Docker görüntülerini oluşturmak için bir bambu yapı planı yapıyorum. AWS ECS'yi kayıt defteri olarak kullanma. Yapı planı böyle bir şeydir; docker, kayıt defterinden önceki yapı önbelleklerini kullanarak oluştur

  • son etiketiyle

    docker build -t myimage:latest . 
    
  • etiketi (ECS için gerekli) görüntü

    docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • son etiketi

    docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • inşa görüntü çekin yapı görevleri farklı ve taze inşa motorları/sunucularında her zaman çalıştığı için kayıt defterine

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

görüntüyü itin, yerel önbelleğe sahip olmayan.

Dockerfile öğesinde hiçbir şeyi değiştirmediğimde ve yeniden çalıştırdığımda (başka bir sunucuda), docker'ın yerel önbellek kullanmasını beklerim (docker çekmesinden gelir) ve her satırı tekrar çalıştırmaz. Ama her zaman görüntü oluşturmaya çalışır. Dosyanın alt kısmında bir şey değiştirdiğimde önbellek kullanacağımı ve sadece en son satırı çalıştıracağımı bekledim, ama bundan emin değilim.

Yanlış bir şey biliyor muyum yoksa yaklaşımla ilgili herhangi bir görüş var mı?

+0

"Her defasında resim oluşturmaya çalışır" ifadesinin bir kısmını paylaşır mısınız? Her katmanın "yerleşik" olduğunu göreceksiniz, ancak önbelleği kullanacağını söyleyecektir. – danehammer

+1

08-Ara-2017 08:38:16 \t Adım 8: RUN eklenti-apt-repository ppa: maxmind/ppa -y 08-Ara-2017 08:38:17 \t ---> 5806bde2c3d3'te Çalışıyor 08- Aralık 2017 08:38:17 \t gpg: keyring '/tmp/tmp5o6q7_ge/secring.gpg 'oluşturuldu 08-Ara-2017 08:38:17 \t gpg: keyring' /tmp/tmp5o6q7_ge/pubring.gpg' created 08-Ara-2017 08:38:17 \t gpg: hkp sunucusundan DE742AFA anahtarının istenmesi keyserver.ubuntu.com 08-Ara-2017 08:38:17 \t gpg: /tmp/tmp5o6q7_ge/trustdb.gpg: trustdb oluşturuldu 08-Ara-2017 08:38:17 \t gpg: anahtar DE742AFA: açık anahtar "MaxMind için Launchpad PPA" ithal 08-Aralık –

+0

sadece Bir örnek. dediğim gibi önceki katmanları kullanmıyor. –

cevap

3

squid proxy kullanmayı düşünüyor musunuz?

düzenleme: durumda yukarıdaki resmi web sitesine gitmek istemiyorum, burada (temelli debian) kalamar vekil üzerinde hızlı kurulum

apt-get install squid-deb-proxy 

ve daha sonra açık tarafından daha büyük bir alan oluşturmak için kalamar yapılandırmasını değiştirmek

/etc/squid/squid.conf 

ve gitmek orada cache_dir ufs /var/spool/ squid 10000 16 256 ile #cache_dir ufs /var/spool/squid yerine yukarı ,, önbellek alanı değerinde bir 10.000 MB

ve sonra dockerfile proxy adresi ,, burada işaret kalamar proxy ile dockerfile bir örnektir

yum ve apt-get tabanlı bir dağıtımdır:

apt-get tabanlı bir dağıtımdır

`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 bazlı dağıtıma

, aws kayıt defterinize kalamar proxy'si yüklediğinizi söyleyelim, sadece ilk yapı internetten veri alacaktır, geri kalan (başka bir sunucu) yapı, önbelleğe alınmış kalamar proxy'sinden olmalıdır. .

kitabına dayanan

bu teknik pratikte liman işçisi daha hızlı i herhangi bir üçüncü taraf yazılım olmadan docker bir önbellek özelliği olduğunu sanmıyorum

inşa için zerre ile 57 paket önbelleği kurmak tekniği. belki var ve ben sadece bilmiyorum. .im emin değilim, yanlış varsa sadece beni düzeltin. .

+0

soru, paket paketlerini ancak görüntü katmanlarını önbelleğe almakla ilgili değildir. –

+0

iyi. .sadece benim küçük örneğim, görüntü katmanları üzerinde kalamar önbellek kullanabilirsiniz. . İşte bir örnek [docker önbellek proxy] (http://planet.jboss.org/post/deploy_and_configure_a_local_docker_caching_proxy) –

İlgili konular