zip 명령이 제대로 작동하지 않는 것 같습니다.

zip 명령이 제대로 작동하지 않는 것 같습니다.

저는 USB 드라이브를 사용하여 일부 Docker 이미지를 USB 플래시 드라이브에 저장 및 로드하고 팀에 배포합니다.

save다음은 이미지 중 하나에 대한 내 스크립트입니다 .

echo "Saving some/image ..."
docker save some/image > /Temp/Docker/SomeImage

echo "Zipping some/image ..."
zip SomeImage.zip SomeImage 1>/dev/null

echo "Copying some/image to USB ..."
cp /Temp/Docker/SomeImage.zip /media/$USER/Docker
sync

echo "some/image done."

화려하거나 복잡한 것은 없습니다. 이미지를 저장하고 압축한 후 USB에 복사하세요. 그게 다야.

그런 다음 이 스크립트를 사용합니다 load.

echo "Copying some/image from USB ..."
cp /media/$USER/Docker/SomeImage.zip /Temp/Docker
sync

echo "Unzipping some/image ..."
unzip SomeImage.zip 1>/dev/null

echo "Loading some/image ..."
docker load < /Temp/Docker/SomeImage

echo "some/image done."

다시 말하지만 복잡한 것은 없습니다. USB에서 복사하고 압축을 풀고 로드합니다.

그러나 때로는 USB에서 xMB이고 때로는 yMB입니다. xMB일 때 압축 해제에 실패하여 손상되었다고 불평했습니다.

왜 그럴까요? 여기서 zip 명령이 결정적으로 작동하지 않는 이유는 무엇입니까?

PS 아니면 제가 모르는 뭔가가 일어나고 있을 수도 있습니다. 아마도 이러한 명령의 조합이 여기서 문제를 일으키는 것일 수 있습니다.

고쳐 쓰다

내가 얻는 오류는 다음과 같습니다.

End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.

참고: SomeImage.zip은 압축 해제가 아닌 일반 실행 파일일 수 있습니다. zipfile 디렉터리는 SomeImage.zip 또는 SomeImage.zip.zip 디렉터리 중 하나에서 찾을 수 없으며 SomeImage.zip.ZIP도 찾을 수 없습니다. .

답변1

파이프와 함께 gzip을 사용하는 것이 더 좋고 쉽습니다.

docker save some/image | gzip >/media/$USER/Docker/SomeImage.gz

gunzip < /media/$USER/Docker/SomeImage.gz | docker load

관련 정보