php 편집기 Strawberry는 Docker를 사용할 때 "Docker 이미지를 로드하지 못했습니다"라는 일반적인 문제에 직면할 수 있습니다. 이 문제로 인해 Docker를 사용하여 컨테이너를 정상적으로 구축하고 실행하지 못할 수 있습니다. 하지만 걱정하지 마세요. 일반적으로 이 문제에 대한 해결책은 여러 가지가 있습니다. 이 문서에서는 Docker 이미지를 성공적으로 로드하고 이 성가신 문제를 해결하는 데 도움이 되는 몇 가지 일반적인 솔루션을 소개합니다. Docker 초보자이시든 숙련된 Docker 사용자이시든, 이 글이 도움이 되기를 바랍니다.
저는 golang
、docker 客户端
加载 .tar
형식의 도커 이미지를 사용하고 있습니다.
// 함수: getimageidbyrepotag
으아아아getimageidbyrepotag
始终返回 fmt.errorf("未找到存储库标记的图像 id: %s", repotag)
.
또한 docker images
실행하면 이미지가 로드되는 것을 볼 수 없습니다. 아직 이미지 로딩이 끝나지 않은 것 같습니다.
내 다른 코드에서는 docker 클라이언트 cli.imageload
立即返回,但 docker 映像加载通常需要一些时间。我通常会在检查 getimageidbyrepotag
가 이전에 약 30초의 대기 시간을 추가했습니다. 이 경우에는 대기 시간을 추가하는 것도 도움이 되지 않습니다.
감사합니다
몇 가지 질문:
err
일부 오류 처리가 손실될 수 있습니다.
wg.wait()
tar
阅读器中读取内容以查找清单文件并提取标签信息 - 这很好 - 但找到后,您将字节流的其余部分复制到管道中。因此,您将丢失一块永远不会到达 docker
클라이언트tar 바이트 스트림을 두 번 읽는 것을 방지하려면 io.teereader를 사용할 수 있습니다.
이를 통해 tar 아카이브를 읽을 수 있습니다 - 클라이언트 스캔 manifest
文件 - 但也可以将此流完整写入其他地方(即写入 docker
).
만들기 teereader
:
이미지 로딩은 이제 여기(파이프 대신)에서 읽혀집니다:
으아아아그런 다음 archive/tar
리더를 파이프에서 읽도록 변경하세요.
그런 다음 io.copy
블록을 삭제할 수 있습니다:
tar 검사 코드는 전체 스트림을 eof로 읽어오기 때문입니다.
P.S. io.eof
重置为 nil
以避免在检查来自任一 goroutine 的任何潜在错误时认为 eof
를 더 심각한 오류로 변환해야 할 수도 있습니다.
위 내용은 도커 이미지를 로드하지 못했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!