Разница между вытягиванием изображения и загрузкой его из tar-файла - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть система, которая использует 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>, затем запускаю docker-compose up

По какой-то причине я получаю сообщение об ошибке (касающееся несоответствия пакета) в автономном методе, но не на сервере.

Я думал, что между методами не должно быть никакой разницы, потому что оба они создаютодни и те же изображения и запустить контейнеры с одинаковыми параметрами (которые определены в файле docker-compose).

Я пробовал docker 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

Ошибка, связанная с бинарным файлом:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/site-packages/pandas/core/frame.py", line 1945, in to_parquet
    compression=compression, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/pandas/io/parquet.py", line 256, in to_parquet
    impl = get_engine(engine)
  File "/usr/local/lib/python3.6/site-packages/pandas/io/parquet.py", line 25, in get_engine
    return FastParquetImpl()
  File "/usr/local/lib/python3.6/site-packages/pandas/io/parquet.py", line 180, in __init__
    import fastparquet
  File "/usr/local/lib/python3.6/site-packages/fastparquet/__init__.py", line 8, in <module>
    from .core import read_thrift
  File "/usr/local/lib/python3.6/site-packages/fastparquet/core.py", line 13, in <module>
    from . import encoding
  File "/usr/local/lib/python3.6/site-packages/fastparquet/encoding.py", line 11, in <module>
    from .speedups import unpack_byte_array
  File "__init__.pxd", line 861, in init fastparquet.speedups
ValueError: numpy.ufunc has the wrong size, try recompiling. Expected 192, got 216
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...