8

Có thể lưu hình ảnh bộ đệm trên Travis CI không? Cố gắng lưu trữ thư mục và /var/lib/docker/repositories-aufs tệp với cache.directories trong travis.yml dường như không hoạt động vì chúng yêu cầu root.Hình ảnh bộ đệm ẩn trên Travis CI

+1

Đây là bản sao, hãy xem http://stackoverflow.com/questions/32866599/can-travis-ci-cache-docker-images/41975912#41975912 –

Trả lời

7

Từ quan điểm Docker, tôi nghĩ cách tốt nhất bạn có thể thực hiện việc này (không có khả năng chạy mạng cục bộ registry) là save hình ảnh Docker và lưu vào bộ đệm tar đã xuất. Bạn sẽ cần phải load khi bắt đầu thay vì pull một hình ảnh. Bằng cách này, bạn không gây rối với việc triển khai bộ lưu trữ docker.

install: 
- docker pull busybox 
- docker save busybox | gzip > docker/busybox.tar.gz 
cache: 
    directories: 
    - docker 

Sau đó, bạn sẽ cần load hình ảnh được lưu trong bộ nhớ cache trước khi chạy Travis.

before_script: 
- gzip -dc docker/busybox.tar.gz | docker load 

Bit Tôi không rõ ràng về cho Travis, là nếu bạn cần để ngăn chặn nó từ chạy bước install sau lần đầu tiên. Bạn không muốn Travis kéo và xuất hình ảnh mỗi khi nó được lưu trữ. Tôi không chắc liệu có chỉ thị cache tự động thực hiện điều đó cho bạn không?

Câu hỏi chính sau đó là liệu điều này là thực sự sẽ trở thành bất kỳ nhanh hơn kéo hình ảnh hay không:

Các bộ nhớ đệm hắc ín lên tất cả các thư mục được liệt kê trong cấu hình và tải lên chúng để S3, sử dụng URL bảo mật và được bảo vệ, đảm bảo an ninh và bảo mật của các lưu trữ được tải lên.

Lưu ý rằng điều này làm cho bộ nhớ cache của chúng tôi không mạng cục bộ, nó vẫn bị ràng buộc với băng thông mạng và độ phân giải DNS cho S3. Điều đó tác động đến những gì bạn có thể và nên lưu trữ trong bộ nhớ cache. Nếu bạn lưu trữ các lưu trữ lớn hơn vài trăm megabyte trong bộ nhớ cache, có thể bạn sẽ không thấy cải thiện tốc độ lớn .

Bạn có thể chỉ đang thêm phí. Vì sổ đăng ký Docker được Cloudfront hỗ trợ, Travis đã kéo hình ảnh nén từ địa phương hoặc ít nhất là đóng cơ sở hạ tầng của Amazon. Có thể yêu cầu họ cho các tính năng để cache Docker images natively, tương tự như những gì họ làm cho apt gói, although it doesn't sound hopeful.

+0

Tôi không chắc chắn nếu điều này là chính xác những gì tôi muốn, vì nó xuất khẩu các thùng chứa và tôi chỉ tìm kiếm hình ảnh. Cũng sẽ không cập nhật như bạn có thể đã lưu ý. Đó là một đoạn trích tốt mặc dù, có thể có thực sự là không có điểm trong cố gắng để cache hình ảnh docker. – kag0

+0

Bạn sẽ cần phải tự giải phóng bộ nhớ cache qua gui khi bạn muốn cập nhật. Các tên hình ảnh sẽ cần phải khác nhau quá, đó là một chút đau đớn. Hệ thống tệp vùng chứa cũng chỉ là một hình ảnh với các thay đổi được xếp chồng lên trên cùng. Nếu bạn không thực hiện bất kỳ thay đổi nào, bạn vẫn có hình ảnh. Trong thực tế, một 'docker build' tạo ra hình ảnh bằng cách cam kết thay đổi được thực hiện trong một container đang chạy. Với việc sử dụng 'export' bạn sẽ mất theo dõi các lớp hình ảnh. – Matt

2

Hãy xem những gì circleci đề xuất: https://circleci.com/docs/docker/#caching-docker-layers.

Cần kết hợp dễ dàng docker save/docker load với bộ nhớ đệm của thư mục do travis cung cấp.

+0

CircleCI 2.0 tự động lưu trữ hình ảnh docker.Họ lưu trữ nó trên mỗi máy chủ lưu trữ, vì vậy lúc đầu, người ta có thể nghĩ, không có bộ nhớ đệm. Càng nhiều bản dựng, bộ nhớ cache càng thường xuyên được nhấn. – koppor

Các vấn đề liên quan