gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:19:29 28 4
gpt4 key购买 nike

我想优化我的 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 .

关于caching - 如何使用缓存快速重建 dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22030931/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com