[docker] “docker build –pull”의 목적은 무엇입니까?

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

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

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

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

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

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



답변

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

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

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


답변

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

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

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


답변

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


답변