下载 docker 镜像以传输到非互联网连接的机器

she*_*n89 67 offline-files docker

我在办公室工作,我的笔记本电脑连接了互联网,但受到严格控制。我不允许在其上安装未经授权的软件。

我的开发工作站可以随意使用,但它没有互联网连接。

有什么方法可以让我从集线器下载 Docker 图像作为文件,然后我可以将它连接到我的开发工作站?类似于如何下载 RPM 或 Ruby Gems 并将它们刻录到 CD?或者是使用“docker pull”命令下载图像的唯一方法?

小智 109

简短:使用saveCLI 命令。

https://docs.docker.com/engine/reference/commandline/save/


您可以在可以访问 Internet 的计算机上提取图像。

sudo docker pull ubuntu
Run Code Online (Sandbox Code Playgroud)

然后您可以将此图像保存到文件中

sudo docker save -o ubuntu_image.docker ubuntu
Run Code Online (Sandbox Code Playgroud)

在离线计算机(USB/CD/任何)上传输文件并从文件加载图像:

sudo docker load -i ubuntu_image.docker
Run Code Online (Sandbox Code Playgroud)

(在旧版本中,这只是docker load image.docker,请参阅评论以获取更多信息。)

  • 必须做```sudo docker load -i ubuntu_image.docker``` 否则它不会工作 (11认同)
  • 路过,发现他们不再使用`docker load <image>`,而是使用`docker load < ubuntu_image.docker`。https://docs.docker.com/engine/reference/commandline/load/ (2认同)

Dan*_*Dan 31

我意识到已经有一个可以接受的答案,但是我想提供这个解决方案,我认为它更直接地解决了这个问题:“如何在不使用 Docker 执行检索的情况下下载 Docker 映像?”

我有一个类似的问题,我公司的政策要求我向团队提供我想要使用的文件(通常通过 URL)。然后他们将执行各种扫描和审核,然后将文件放置到我们断开连接的开发网络上。我无法使用 Docker 检索文件,然后将其导出并将其交给该团队,因此提供的其他答案对我来说不是一个选择。

幸运的是,我在 StackOverflow 上找到了这个答案,它推荐使用 samalba 在 GitHub 上提供的有用工具:https : //github.com/samalba/docker-registry-debug

当然,该工具是使用 Docker 构建的,我需要它的部分原因是因为我没有对 Docker 的开放访问权限 :)。所以,由于我没有那个选项,我将详细说明我在这里采取的步骤(这是从那个 repo 提交 05fffc4344fd6f866f84c403caae3ba81193dd45 开始的所有步骤):

$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu
Run Code Online (Sandbox Code Playgroud)

该命令的输出是一个完整的 curl 命令行,可用于下载文件:

# Reading user/passwd from env var "USER_CREDS"
# No password provided, disabling auth
# Getting token from https://index.docker.io
# Got registry endpoint from the server: https://registry-1.docker.io
# Got token: signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read
curl -i --location-trusted -I -X GET -H "Authorization: Token signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read" https://registry-1.docker.io/v1/images/ubuntu/layer
Run Code Online (Sandbox Code Playgroud)

希望这对其他人有帮助!