docker使用从registry的以前的构buildcaching构build

我正在configuration一个竹子构build计划来构builddocker镜像。 使用AWS ECS作为registry。 builddevise划是这样的;

  • 拉最新的标签

    docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
  • 用最新的标签build立图像

     docker build -t myimage:latest . 
  • 标记图像(ECS必需)

     docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
  • 将图像推送到registry

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

由于构build任务每次都在不同的新build构build引擎/服务器上运行,因此它没有本地caching​​。

当我不改变Dockerfile的任何东西,并再次执行(在另一个服务器),我期望docker使用本地caching(来自docker拉),不会再执行每一行。 但它试图每次都build立图像。 我也期待,当我改变文件底部的东西,它会使用caching,只执行最新的行,但我不知道这一点。

我是否知道错了什么或者有什么意见?

你正在考虑使用鱿鱼代理 ?

编辑:如果你不想去上面的官方网站,这里是鱿鱼代理(基于Debian的)快速设置,

 apt-get install squid-deb-proxy 

然后改变鱿鱼configuration打开一个更大的空间

 /etc/squid/squid.conf 

并用cache_dir ufs /var/spool/ squid 10000 16 256replace#cache_dir ufs /var/spool/squid cache_dir ufs /var/spool/ squid 10000 16 256然后你去了,一个10.000 MB的caching空间

然后将代理地址指向dockerfile,这里是一个使用squid代理的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"]` 

基于百胜的发行

 `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"]` 

可以说你在你的awsregistry中安装了squid代理,只有第一个版本会从互联网上获取数据,其余的(另一个服务器)版本应该是从squid代理caching的。 。

这种技术基于书中的docker在实践技巧57中用tittle 设置了一个包caching来加快构build

我不认为没有任何第三方软件泊坞窗cachingfunction..也许有,我只是不知道它。 .im不知道,只是纠正我,如果我错了。 。