“docker build --pull”의 목적은 무엇입니까?


17

도커 이미지를 만들 때 일반적으로 사용 docker build .합니다.

그러나 나는 당신이 지정할 수 있음을 발견 --pull했으므로 전체 명령은 다음과 같습니다docker build --pull .

의 목적에 대해 잘 모르겠습니다 --pull. Dockers 공식 문서 에는 "항상 최신 버전의 이미지를 가져 오려고 시도합니다"라고 표시되어 있으며이 맥락에서 이것이 무엇을 의미하는지 잘 모르겠습니다.

당신이 사용하는 docker build새로운 이미지를 구축하고, 결국 용기 레지스트리에 어딘가에 게시 할 수 있습니다. 왜 아직 존재하지 않는 것을 끌어 내고 싶습니까?

웹에서 쉽게 찾을 수있는 "간단한"무언가를 기대하지만 아무도 이와 비슷한 질문을하는 것 같지 않습니다. Google의 실제 히트는 Dockers 공식 문서를 참조하며, 위의 언급대로 이해하지 못합니다.

당신의 도움을 주셔서 감사합니다!

답변:


17

이미 로컬에 태그 한 것을 재사용하지 않고 모든 기본 이미지의 최신 버전을 가져옵니다.

예를 들어 움직이는 태그를 기반으로 이미지를 가져옵니다 (예 :) ubuntu:bionic. upstream은 주기적으로 변경하고 재구성하지만 몇 달 전 이미지가 로컬에있을 수 있습니다. 도커는 오래된 기지에 대해 행복하게 지을 것입니다. --pull부작용으로 잡아 당겨서 최신 기본 이미지에 대비합니다.

일반적으로 취약하고 잠재적으로 취약한 이미지를 사용하는 대신 가능한 빨리 업스트림 보안 픽스를 얻는 데 사용하는 것이 가장 좋습니다. 중요한 변경 사항을 해결해야하지만 불변의 태그를 사용하면 차이가 없습니다.


이것은 ubuntu:bionic(명확하게) 버전이 첨부되어 있지 않기 때문에 이미지에 대한 매우 좋은 설명 이지만 새 이미지를 게시 할 때마다 여전히 다릅니다. 모두 이해가됩니다. 감사!
Jim Aho

1
기본 이미지가 ubuntu:0.1.0예를 들어 새 이미지를 게시했지만 버전 이 동일한 경우 즉 , 전체 새 이미지를 다시 다운로드 ubuntu:0.1.0한다는 의미 docker build --pull입니까? (이것은 대부분의 사람들이 선호하는 것입니다)
Jim Aho

나는 누군가가 @JimAho의 마지막 질문을 명확히하기를 희망합니다. 왜냐하면 그것이 더 잘 이해되기를 원하기 때문입니다. 이미지가 방금 눌 렸고 다른 변경 사항이 없다면 이미지가 다시 작성되지 않은 것입니까?
learning24

2
@ learning2learn 대답은 그렇습니다. docker 이미지의 태그는 단지 문자열이므로 "0.1.0"은 "bionic"이라는 대답의 예와 다르지 않습니다
Anthony Sottile

@AnthonySottile 감사합니다. 흠뻑.
learning24

1

간단한 대답. docker build로컬 dockerfile에서 빌드하는 데 사용됩니다. docker pull도커 허브에서 당기는 데 사용됩니다. docker 파일없이 docker build를 사용하면 오류가 발생합니다.

지정 --pull하거나 :latestdocker가 최신 버전 (있는 경우)을 다운로드하려고 할 때

기본적으로 --pull을 추가하면 실행될 때마다 최신 버전을 가져 오려고 시도합니다.


이미지를 계층화 한 경우 항상 이미지를 모두 가져 옵니까 ?
Jim Aho

이미지를 계층화 한 경우 일부는 시스템 (이전 계층)과 새 계층을 가져올 때 캐시됩니다.
DuDoff

0

Docker는 예를 들어에  --pull 플래그를  전달할 수 있습니다  . 로컬에서 사용 가능한 버전에도 불구하고 빌드가 항상 최신 컨테이너 이미지를 사용하도록하는 권장 방법입니다. 그러나 언급 할 가치가 하나 더 있습니다.docker builddocker build . --pull -t myimage

업데이트 할 기본 이미지 확인을 포함하여 빌드가 완전히 다시 빌드되도록하려면 빌드 할 때 다음 옵션을 사용하십시오.

--no-cache -이미 사용 가능한 레이어를 강제로 다시 빌드합니다.

따라서 전체 명령은 다음과 같습니다.

docker build . --pull --no-cache --tag myimage:version

동일한 옵션을 사용할 수 있습니다 docker-compose:

docker-compose build --no-cache --pull


정상적인 사용에서는 필요하지 않습니다 --no-cache. --pull캐시를 자동으로 무효화 하는 기본 이미지가 업데이트되고 새 버전을 얻는 경우 COPY캐시를 무효화하는 코드가 다른 경우와 유사 합니다. 이것이 일반적으로 영향을 미치는 유일한 것은 apt-get install네트워크 호스팅 패키지 와 같은 일을하는 경우 --no-cache입니다.이 경우 기본 이미지가 업데이트되지 않은 경우에도 최신 버전을 확인하게됩니다.
David Maze
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.