В Docker, следует ли повторно использовать базовые изображения, если это возможно?

При работе с совершенно другим сценарием я узнал, что с 29 миллионами строк текста, используя seek() и работая по данным, часто быстрее, чем по очереди. Такая же идея применяется в приведенном ниже скрипте: мы открываем файл и вместо того, чтобы зацикливаться на открытии и закрытии файла (что может привести к увеличению накладных расходов, даже если это не существенно), мы сохраняем файл открытым и возвращаемся к началу.

#!/usr/bin/env python3
from __future__ import print_function
import sys,os

def error_out(string):
    sys.stderr.write(string+"\n")
    sys.exit(1)

def read_bytewise(fp):
    data = fp.read(1024)
    print(data.decode(),end="",flush=True)
    while data:
        data = fp.read(1024)
        print(data.decode(),end="",flush=True)
    #fp.seek(0,1)

def main():
    howmany = int(sys.argv[1]) + 1
    if not os.path.isfile(sys.argv[2]):
       error_out("Needs a valid file") 

    fp = open(sys.argv[2],'rb')
    for i in range(1,howmany):
        #print(i)
        fp.seek(0)
        read_bytewise(fp)
    fp.close()

if __name__ == '__main__': main()

Сам скрипт довольно прост в использовании:

./repeat_text.py <INT> <TEXT.txt>

Для 3-строчного текстового файла и 1000 итераций все идет хорошо, около 0,1 секунды:

$ /usr/bin/time ./repeat_text.py 1000 input.txt  > /dev/null                                                             
0.10user 0.00system 0:00.23elapsed 45%CPU (0avgtext+0avgdata 9172maxresident)k
0inputs+0outputs (0major+1033minor)pagefaults 0swaps

Сам скрипт не самый элегантный, возможно, он может быть сокращен, но выполняет эту работу. Конечно, я добавил несколько лишних бит здесь и там, например error_out(), что не обязательно - это просто небольшое удобное для пользователя прикосновение.

0
задан 25 May 2018 в 00:18

3 ответа

Да, если вы используете тот же базовый образ для всех трех контейнеров, Вы экономите на диске, так что базовый слой является общим для трех изображений. Это говорит, альпийские разве это не большой, так что если ваш дБ & Апач изображения альпийских основе, это не так плохо, как кажется. Но если вы используете контейнер томов (например для обеспечения статического контента на сервер Apache) можно на базе любого из существующих изображений, и только дисковое пространство будет использоваться будет для Контента, который вы добавляете.

1
ответ дан 8 June 2018 в 13:57
  • 1
    Это именно тот ответ, который я искал. Ну, конечно, Alpine крошечный по сравнению с Ubuntu, поэтому я задал вопрос. Я устанавливал и настраивал эти приложения в течение долгого времени над системами на базе Debian, и в этом случае я думал, что это может быть хорошей причиной остаться. Кажется, я хорошо понял, как работает эта докерная система. Еще раз спасибо. – Davdriver 25 May 2018 в 01:31

Да, если вы используете одно и то же базовое изображение для всех трех контейнеров, вы сохраняете на диске, так как этот базовый уровень является общим для трех изображений. Это говорит о том, что Alpine не такой большой, поэтому, если ваш DB & amp; Изображения Apache являются альпийскими, это не так плохо, как кажется. Но если вы используете контейнер тома (например, для статического содержимого на сервер Apache), вы можете использовать его на любом из ваших существующих изображений, и единственное место на диске, которое оно будет использовать, будет для добавляемого вами контента.

1
ответ дан 17 July 2018 в 13:30

Да, если вы используете одно и то же базовое изображение для всех трех контейнеров, вы сохраняете на диске, так как этот базовый уровень является общим для трех изображений. Это говорит о том, что Alpine не такой большой, поэтому, если ваш DB & amp; Изображения Apache являются альпийскими, это не так плохо, как кажется. Но если вы используете контейнер тома (например, для статического содержимого на сервер Apache), вы можете использовать его на любом из ваших существующих изображений, и единственное место на диске, которое оно будет использовать, будет для добавляемого вами контента.

1
ответ дан 20 July 2018 в 13:36

Другие вопросы по тегам:

Похожие вопросы: