如何使用缓存快速重建dockerfile?

我想优化我的Dockerfile。我希望将缓存文件保留在磁盘中。但是,我发现当我运行docker build .它时,总是尝试从网络获取每个文件。

我希望在构建期间共享我的缓存目录(例如/ var / cache / yum / x86_64 / 6)。但是,它仅适用于docker run -v

...

有什么建议吗?(在此示例中,仅安装了1 rpm,在实际情况下,我需要安装数百rpm)

我的Dockerfile草案

FROM centos:6.4

RUN yum update -y

RUN yum install -y openssh-server

RUN sed -i -e 's:keepcache=0:keepcache=1:' /etc/yum.conf

VOLUME ["/var/cache/yum/x86_64/6"]

EXPOSE 22

在第二次,我想建立一个相似的图像

FROM centos:6.4

RUN yum update -y

RUN yum install -y openssh-server vim

我不想再次从internat获取openssh-server(速度很慢)。在我的真实情况下,它不是一个包,而是大约100个包。

回答:

作为对先前答案的更新,当前的docker

build

接受--build-arg传递环境变量的方式,例如http_proxy 不将其保存在生成​​的映像中。

例:

# get squid

docker run --name squid -d --restart=always \

--publish 3128:3128 \

--volume /var/spool/squid3 \

sameersbn/squid:3.3.8-11

# optionally in another terminal run tail on logs

docker exec -it squid tail -f /var/log/squid3/access.log

# get squid ip to use in docker build

SQUID_IP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' squid)

# build your instance

docker build --build-arg http_proxy=http://$SQUID_IP:3128 .

以上是 如何使用缓存快速重建dockerfile? 的全部内容, 来源链接: utcz.com/qa/420536.html

回到顶部