Travis CI可以缓存码头图像吗?

时间:2015-09-30 12:51:52

标签: caching docker travis-ci

是否可以添加设置以在travis配置中的任何位置缓存我的泊坞窗图像?我是一个更大的码头图像,下载需要一段时间。

有什么建议吗?

5 个答案:

答案 0 :(得分:4)

请参阅Caching Docker Images on Build #5358 了解答案。对于现在可在Travis上使用的Docker 1.12,建议manually cache the images。对于Docker 1.13,当它在Travis上时可以使用它的--cache-from

答案 1 :(得分:4)

关于Travis文档,建议不要缓存Docker映像 https://docs.travis-ci.com/user/caching/#things-not-to-cache

答案 2 :(得分:3)

今天(2019年10月)最简单的解决方案是在.travis.yml中添加以下内容:

cache:
  directories:
  - docker_images

before_install:
- docker load -i docker_images/images.tar || true

before_cache:
- docker save -o docker_images/images.tar $(docker images -a -q)

答案 3 :(得分:1)

我刚刚发现了article中讨论的以下方法。

services:
  - docker

before_script:
  - docker pull myorg/myimage || true
script:
  - docker build --pull --cache-from myorg/myimage --tag myorg/myimage .
  - docker run myorg/myimage

after_script:
  - docker images

before_deploy:
  - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
deploy:
  provider: script
  script: docker push myorg/myimage
  on:
    branch: master

答案 4 :(得分:0)

这对我有用:

  • 更新所需的docker映像名称,而不是<IMAGE_NAME_HERE>(3个地方)。
  • 您还可以对多个图像使用相同的配置,docker save可以处理多个图像,只需确保在尝试保存它们之前将其拉出即可。
services:
  - docker

cache:
  directories:
    - docker-cache

before_script:
  - |
    filename=docker-cache/saved_images.tar
    if [[ -f "$filename" ]]; then docker load < "$filename"; fi
    mkdir -p docker-cache
    docker pull <IMAGE_NAME_HERE>
    docker save -o "$filename" <IMAGE_NAME_HERE>

script:
  - docker run <IMAGE_NAME_HERE>...