docker - 让 Docker 使用/加载 .tar 镜像而不将其复制到/var/lib/..?

标签 docker

我知道您可以将 docker 容器/图像导出为 .tar 文件,然后在另一个系统上使用 docker load 来导入它。问题是 docker load 将图像放入/var/lib/.. 并且主机系统的空间非常小。有没有办法让 docker 直接从 tar 文件运行图像,或者使用文件位置的工作目录?

否则,唯一的手段是使用符号链接(symbolic link)来欺骗 docker?

最佳答案

当您使用 docker load ,你至少需要:

  • 足够的空间来保存原始 tar 文件;和
  • 有足够的空间容纳 /var/lib/docker/tmp 中的未压缩 tar 文件;和
  • 足够的空间来保存 Docker 镜像空间中的镜像内容。

  • 镜像内容的实际格式与 tar 文件的内容不同,并且是特定于安装的(devicemapper、aufs 和 overlay2 安装看起来会有所不同)。没有办法绕过这一点并直接“注入(inject)”一个 tar 文件。

    如果磁盘空间真的很紧,我想设置一个 Docker 注册表并使用 docker pull相反将需要更少的空间(我的直接猜测是图像的大小加上单个最大层的大小),并且通常更容易管理。

    如果系统是一个云托管系统,不幸的是,默认根磁盘很小,请考虑销毁当前实例并配置一个具有足够存储空间的新实例。

    关于docker - 让 Docker 使用/加载 .tar 镜像而不将其复制到/var/lib/..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55111969/

    相关文章:

    python - 使用 docker 部署处理 flask 中的环境变量

    java - 连接到在 Docker 中运行的 Kafka

    docker - 自定义端口在Docker-compose中不起作用

    maven - 使用 Bitbucket 管道构建 JavaFx 应用程序

    java - Docker 使用 unix :///var/run/docker. sock 进行检查(在 Java 或 Scala 中)

    java - 了解gradle.properties和java-opts

    node.js - 不在终端时 Docker exec "command not found"

    docker - 如何使用命令行向 Apache Fuseki 添加新数据集?

    c# - .net core docker centos HttpRequest错误: (Socket Exception) Resource temporarily unavailable

    docker - 如何集成 pyenv、poetry 和 docker?