답변:
짧은 대답은 다음과 같습니다.
save
VM 또는 실제 서버의 경우 이미지를 가져옵니다. 이는 설치 .ISO 이미지 또는 디스크입니다. 기본 운영 체제
이미지를 만드는 데 필요한 모든 체인의 레이어와 메타 데이터를 압축합니다. 그런 다음이 "저장된"이미지 체인을 다른 도커 인스턴스에로드하고이 이미지에서 컨테이너를 만들 수 있습니다.
export
일반 컨테이너의 스냅 샷처럼 전체 컨테이너를 가져옵니다. 물론 컨테이너 수명 동안 작성된 모든 데이터 파일뿐만 아니라 OS를 저장합니다. 이것은 전통적인 백업과 비슷합니다.
컨테이너의 파일 시스템을 포함하는 플랫 .tar 아카이브를 제공합니다.
편집 : 내 설명이 여전히 혼란을 초래할 수 있으므로 이러한 명령 중 하나는 컨테이너와 작동하고 다른 명령은 이미지와 작동한다는 것을 이해하는 것이 중요하다고 생각합니다.
이미지는 단일 바이트를 변경하지 않을 것이 0 1000 용기 시작 "죽은"또는 불변으로 간주되어야한다. 그렇기 때문에 시스템 설치 ISO와 비교해 보았습니다. 라이브 CD에 더 가깝습니다.
컨테이너 "시동"이미지 및 그 위에 추가의 층을 추가한다. 이 레이어는 컨테이너의 모든 변경 사항을 생성합니다 (생성 / 변경 / 제거 된 파일 ...)
docker commit
). 그런 다음 save
이미지를 볼 수 있습니다 . 또는 export
컨테이너를 직접 할 수 있습니다. 그리고 두 가지 방법 ( save
이미지와 export
컨테이너)이 동일한 결과를 얻습니까?
export
컨테이너 파일 시스템이 포함 된 플랫 .tar 아카이브가 제공됩니다. save
이미지를 만드는 데 필요한 모든 체인의 레이어와 메타 데이터를 압축합니다. 그런 다음이 " saved
"이미지 체인을 다른 도커 인스턴스에 로드하고이 이미지에서 컨테이너를 만들 수 있습니다.
export
기능 없이 수행 될 수 있습니다 .
export
모든 메타 데이터가 손실되므로 해당 이미지로 컨테이너를 실행하려고하면 CMD 및 기타 metdata가 리 멘션됩니다. save
나를 위해 잘 일했지만 수출은 고통이었다
save
와 export
명령 사이에는 두 가지 주요 차이점이 있습니다 .
save
명령은 전체 이미지를 기록 및 메타 데이터와 함께 저장하지만 export
명령은 파일 구조 만 기록합니다 (기록 및 메타 데이터 제외). 따라서 내 보낸 tar 파일은 저장된 것보다 작습니다.
새 이미지를 만들기 위해 내 보낸 파일 시스템을 사용하는 경우 다음이 새로운 이미지는 포함되지 않습니다 USER
, EXPOSE
, RUN
당신 Dockerfile 등에서 명령을. 파일 구조 만 전송됩니다. 따라서 Dockerfile에서 언급 된 키워드를 사용하는 경우 이미지를 다른 시스템으로 전송하기 위해 내보내기 명령을 사용할 수 없습니다. 항상 save 명령을 사용해야합니다.
내 보낸 이미지에는 레이어 또는 기록 정보가 저장되지 않으므로 크기가 더 작아서 롤백 할 수 없습니다.
저장된 이미지는 것이다 층 및 이력 정보를, 그래서 더 큰 있습니다.
이것을 고객에게 제공하는 경우 Q는 해당 계층을 유지 하시겠습니까?
Docker save 이미지 에서 제공된 각 인수에 대해 모든 상위 계층과 모든 태그 + 버전 또는 지정된 repo : tag를 포함하는 tar 파일 저장소를 생성합니다. 합니다.
도커 내보내기 컨테이너 에서 지정된 볼륨의 내용이없는 플랫 내용으로 지정된 파일 (tar 또는 tgz 일 수 있음)을 생성합니다. .
도커 save 는 docker 이미지에서 사용해야하지만 docker export 는 컨테이너에서 사용해야합니다 (실행중인 이미지와 동일)
사용량 저장
도커 저장 [옵션] 이미지 [이미지 ...]
tar 아카이브에 이미지 저장 (기본적으로 STDOUT으로 스트리밍 됨)
--help = false 인쇄 사용법 -o, --output = ""STDOUT 대신 파일에 쓰기
수출 사용법
도커 내보내기 [옵션] 컨테이너
컨테이너 파일 시스템의 내용을 tar 아카이브로 내보내기
--help = false 인쇄 사용법 -o, --output = ""STDOUT 대신 파일에 쓰기