2016-09-27 7 views
3

circleci를 사용하여 테스트를 실행하고 도커 이미지를 배포하지만 도커 이미지를 캐싱하는 데 문제가있어 빌드 시간이 매우 길어졌습니다.캐싱 도커 이미지 circleci

circle.yml

machine: 
    services: 
     - docker 

dependencies: 
    cache_directories: 
     - "~/docker" 
    override: 
     - if [[ -e ~/docker/image.tar ]]; then echo "cached files exists!" ; docker load -i ~/docker/image.tar; fi 
     - docker images 
     - docker build -t myorg/myapp:v1.1.1 . 
     - mkdir -p ~/docker; docker save myorg/myapp:v1.1.1 > ~/docker/image.tar 

Dockerfile :

FROM debian:latest 
MAINTAINER My Name <[email protected]> 
RUN apt-get update && apt-get install -y vim 
CMD ["sleep", "3"] 

GitHub의에 밀어 빌드가 circleci에서 잘 실행

여기에 작동하지 않는 최소한의 예입니다. 그러나 도커 이미지는 실행될 때마다 다시 작성됩니다. 이는 생산 고정물 이미지에서 매우 많은 시간을 소비합니다.

docker images 명령의 출력에서 ​​명확한 image.tar 파일이로드되었지만 dockerfile이 변경되지 않아도 항상 매번 전체 이미지를 만듭니다.

여기에 라인 docker build -t myorg/myapp:v1.1.1 .

docker build -t myorg/myapp:v1.1.1 . 
Sending build context to Docker daemon 67.07 kB 


Step 1 : FROM debian:latest 
latest: Pulling from library/debian 


Digest: sha256:370807fef6f790d8519399026d26461bdf8360f94ab450da94c2350bea3cc66d 
Status: Downloaded newer image for debian:latest 
---> ae85c48b369c 
Step 2 : MAINTAINER My Name <[email protected]> 
---> Running in 4ffd69c2a82d 
---> 6029750ba0f3 
Error removing intermediate container 4ffd69c2a82d: rmdriverfs: Driver btrfs failed to remove root filesystem 4ffd69c2a82d644ea7ee8576cc06e67ee412f651edecbc40932394c057aa931d: Failed to destroy btrfs snapshot /var/lib/docker/btrfs/subvolumes for 4ffd69c2a82d644ea7ee8576cc06e67ee412f651edecbc40932394c057aa931d: operation not permitted 
Step 3 : RUN apt-get update && apt-get install -y vim 
---> Running in 544047b8c170 
Ign http://httpredir.debian.org jessie InRelease 
Get:1 http://httpredir.debian.org jessie-updates InRelease [142 kB] 
Get:2 http://httpredir.debian.org jessie Release.gpg [2373 B] 
Get:3 http://httpredir.debian.org jessie Release [148 kB] 
Get:4 http://security.debian.org jessie/updates InRelease [63.1 kB] 
Get:5 http://httpredir.debian.org jessie-updates/main amd64 Packages [17.6 kB] 
Get:6 http://httpredir.debian.org jessie/main amd64 Packages [9064 kB] 
Get:7 http://security.debian.org jessie/updates/main amd64 Packages [390 kB] 
Fetched 9828 kB in 2s (4030 kB/s) 
Reading package lists... 
Reading package lists... 
Building dependency tree... 
The following extra packages will be installed: 
    libgpm2 vim-common vim-runtime 
Suggested packages: 
    gpm ctags vim-doc vim-scripts 
The following NEW packages will be installed: 
    libgpm2 vim vim-common vim-runtime 
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. 
Need to get 6218 kB of archives. 
After this operation, 28.9 MB of additional disk space will be used. 
Get:1 http://httpredir.debian.org/debian/ jessie/main libgpm2 amd64 1.20.4-6.1+b2 [34.0 kB] 
Get:2 http://httpredir.debian.org/debian/ jessie/main vim-common amd64 2:7.4.488-7 [184 kB] 
Get:3 http://httpredir.debian.org/debian/ jessie/main vim-runtime all 2:7.4.488-7 [5047 kB] 
Get:4 http://httpredir.debian.org/debian/ jessie/main vim amd64 2:7.4.488-7 [953 kB] 
debconf: delaying package configuration, since apt-utils is not installed 
Fetched 6218 kB in 0s (10.7 MB/s) 
Selecting previously unselected package libgpm2:amd64. 

의 출력의 일부는 고정 표시기 이미지마다 재건 왜 어떤 생각인가?

답변