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 256
replace#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不知道,只是纠正我,如果我错了。 。