2017-12-07 2 views
8

docker 이미지를 작성하기 위해 bamboo 빌드 계획을 구성하고 있습니다. AWS ECS를 레지스트리로 사용. 빌드 계획은 다음과 같습니다. docker는 레지스트리의 이전 빌드 캐시를 사용하여 빌드합니다.

  • 최신 태그

    docker build -t myimage:latest . 
    
  • 태그 (ECS 필요한) 화상

    docker tag -f myimage:latest xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • 를 최신 태그

    docker pull xxx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    
  • 구축 화상을 당겨 빌드 작업이 다른 신선한 빌드 엔진/서버마다 실행하기 때문에 레지스트리에

    docker push xx.dkr.ecr.eu-west-1.amazonaws.com/myimage:latest 
    

을 이미지를 밀어, 그것은 로컬 캐시가 없습니다.

Dockerfile에서 아무 것도 변경하지 않고 다른 서버에서 다시 실행하면 docker가 로컬 캐시 (docker pull에서 가져온 것)를 사용하고 각 행을 다시 실행하지 않아야합니다. 그러나 매번 이미지를 만들려고합니다. 나는 또한 파일의 맨 아래에서 무언가를 바꿀 때 캐시를 사용하고 최신 라인 만 실행한다고 예상했다. 그러나 이것에 대해서는 잘 모르겠다.

내가 뭔가 잘못 알고 있거나 접근에 대한 의견이 있습니까?

+0

"매번 이미지를 만들려고합니다"라는 결과를 공유 할 수 있습니까? 각 레이어가 여전히 "내장"되지만 캐시를 사용한다고 표시됩니다. – danehammer

+1

08-Dec-2017 08:38:16 \t 8 단계 : RUN add-apt-repository ppa : maxmind/ppa -y 08-Dec-2017 08:38:17 \t ---> 5806bde2c3d3에서 실행 08- 12 월 2017 8시 38분 17초 \t GPG : 를 만든'/tmp/tmp5o6q7_ge/secring.gpg 키링은'/tmp/tmp5o6q7_ge/pubring.gpg 키링 08 12 월 - 2017 8시 38분 17초 \t GPG를 만들어 ' 08-Dec-2017 08:38:17 \t gpg : hkp 서버 keyerver.ubuntu.com에서 키 DE742AFA를 요청 중 08-Dec-2017 08:38:17 \t gpg : /tmp/tmp5o6q7_ge/trustdb.gpg : trustdb created 08-Dec-2017 08:38:17 \t gpg : 키 DE742AFA : 공개 키 "Launchpad PPA for MaxMind"가져 오기 08-12 월 –

+0

보기. 이전 레이어를 사용하지 않는다고 말했듯이 말입니다. –

답변

3

squid proxy 을 사용 하시겠습니까?

편집 : 경우에 위의 공식 웹 사이트에 가고 싶지 않는, 여기 (기초 데비안) 오징어 프록시에 빠른 설치

apt-get install squid-deb-proxy 

은 다음 열기에 의해 더 큰 공간을 만들 수있는 오징어 구성을 변경

/etc/squid/squid.conf 

하고 이동이 cache_dir ufs /var/spool/ squid 10000 16 256 와 함께 #cache_dir ufs /var/spool/squid 교체까지 ,, 캐시 공간의 가치가 10.000 MB

다음 dockerfile에 프록시 주소 ,, 여기 포인트는 오징어 프록시와 dockerfile의 예입니다

냠 apt-get를 기반 배포판 :

apt-get을 기반 배포판

`FROM debian 
RUN apt-get update -y && apt-get install net-tools 
RUN echo "Acquire::http::Proxy \"http://$(\ 
route -n | awk '/^0.0.0.0/ {print $2}' \ 
):8000\";" \ > /etc/apt/apt.conf.d/30proxy 
RUN echo "Acquire::http::Proxy::ppa.launchpad.net DIRECT;" >> \ 
/etc/apt/apt.conf.d/30proxy 
CMD ["/bin/bash"]` 

냠 기반 배포판

`FROM centos:centos7 
RUN yum update -y && yum install -y net-tools 
RUN echo "proxy=http://$(route -n | \ 
awk '/^0.0.0.0/ {print $2}'):3128" >> /etc/yum.conf 
RUN sed -i 's/^mirrorlist/#mirrorlist/' \ 
/etc/yum.repos.d/CentOS-Base.repo 
RUN sed -i 's/^#baseurl/baseurl/' \ 
/etc/yum.repos.d/CentOS-Base.repo 
RUN rm -f /etc/yum/pluginconf.d/fastestmirror.conf 
RUN yum update -y 
CMD ["/bin/bash"]` 

오징어 프록시를 aws 레지스트리에 설치하면 첫 번째 빌드 만 인터넷에서 데이터를 가져오고 나머지 (다른 서버) 빌드는 캐시 된 squid 프록시에서 가져와야합니다. .

책을 기반으로

이 기술 실제로 고정 표시기 빠르게 내가 제 3 자 소프트웨어없이 고정 표시기의 캐시 기능이 있다고 생각하지 말아

을 구축하기위한 획 57 패키지 캐시를 설정 기술. 어쩌면 거기 있고 나는 다만 그것을 모른다. .im 모르겠다. 내가 잘못하면 나를 바로 잡아라. .

+0

이 질문은 apt 패키지지만 이미지 레이어를 캐싱하는 것에 관한 질문이 아닙니다. –

+0

잘. . 그냥 내 작은 예제, 당신도 이미지 레이어에 오징어 캐시를 사용할 수 있습니다. . 다음은 몇 가지 예입니다. [docker caching proxy] (http://planet.jboss.org/post/deploy_and_configure_a_local_docker_caching_proxy) –

관련 문제