从tar文件提取图像和加载图像之间的区别

时间:2018-12-23 13:43:16

标签: docker docker-compose

我有一个使用docker compose的系统。

示例docker-compose文件:

version: '3'
services:
  base:
    container_name: base
    image: <hub host>/base
    build:
      context: ..
      dockerfile: BaseDockerfile
    environment: 
      - PYTHONPATH=/usr/local/lib/python3.6/site-packages
    volumes:
      - data:/volumes/data/
  postgres:
    container_name: postgres
    image: "postgres:latest"
    ports:
      - 5432:5432

现在,我以两种不同的方式使用此docker-compose文件-在线和离线。

在联机模式下,我先运行docker-compose build,然后运行docker-compose push,然后SSH到要部署它的服务器并拉出映像并运行(docker-compose pull && docker-compose up)。

在脱机方法中,我运行docker-compose build(与第一个相同),然后将docker save的每个图像保存到.tar文件,然后使用docker load -i <file name>方法将其加载,然后运行{{ 1}}

由于某种原因,我在离线方法中收到错误(与numpy软件包不匹配有关),但在服务器中却没有。

我认为方法之间应该没有什么区别,因为它们都构建相同的映像并使用相同的参数(在docker-compose文件中定义)运行容器。

我在所有相关的机器上都尝试了docker docker-compose up,以确保它不是缓存问题。

关于这两种方法之间可能有什么区别的任何想法?

编辑: 保存泊坞窗:

system prune && docker volume prune

图像加载:

#!/usr/bin/env bash
for image in $docker_hub/base redis postgres
do
    echo "Saving $image"
    docker save $image | gzip > $directory/${image//$docker_hub}.tar.gz
done

与二进制文件有关的错误:

print "Loading images"
for file in ./*.tar.gz
do
    echo "Loading file: "$file
    docker load -i $file
done

0 个答案:

没有答案