2017-01-10 9 views
0

Я знаю, что контейнеры Docker могут совместно использовать объем данных, но возможно ли, чтобы они делились каркасами? Например, если у меня есть две службы .NET, работающие в IIS, я могу просто поделиться ими между ними?Могут ли контейнеры разделять рамки?

ответ

2

Да, вы можете, что вы обычно делаете это

Вариант А:

создать BusyBox изображение и копировать структуру, разоблачить расположение как объем VOLUME /opt/framework/

FROM alpine 
COPY framework /opt/framework 
VOLUME /opt/framework 
COPY busyscript.sh /usr/local/bin/busyscript 
RUN chmod +x /usr/local/bin/busyscript 
CMD ["busyscript"] 

While busyscript.sh выглядит как

#!/bin/sh 
#set -x 

pid=0 

# SIGTERM-handler 
term_handler() { 
    if [ $pid -ne 0 ]; then 
    kill -SIGTERM "$pid" 
    wait "$pid" 
    fi 
    exit 143; # 128 + 15 -- SIGTERM 
} 

# setup handlers 
# on callback, kill the last background process, which is `tail -f /dev/null` and execute the specified handler 
trap 'kill ${!}; term_handler' SIGTERM 

echo "Started code" 
# wait forever 
while true 
do 
    tail -f /dev/null & wait ${!} 
done 

Добавить это изображение в качестве службы в вашем Докер-compose.yml, как позволяет сказать, что «рамки», а затем, на услуги, которые вы хотите, чтобы они потребляют, вы добавляете

volume_from 
    - framework:ro 

Pros:

  • вы можете скомпилировать, построить и развернуть framworks SOLEY
  • есть более или менее нет времени выполнения накладных расходов для выполнения этого дополнительного контейнера

Con:

  • над головой размера изображения (альпийский, 30mb)

Вариант B Вы можете использовать один из ваших услуг, как «рамочных базы», ​​позволяет сказать, сервис А, это означает, что вам скопировать структуру на этой службе (один из 2-потребляющих его), а также снова использовать VOLUME /opt/framework выставить его как объем

в сервис B, таким же образом, вы устанавливаете громкость

serviceB: 
    volume_from 
    - serviceA:ro 

Pro:

  • никаких дополнительных контейнеров

Con:

  • структура должна быть развернута с serviceA, никакого обслуживания дело А не будет нужно обновления
    • у вас есть зависимость от A, требуется ли обновление , Все остальные контейнеры должны быть воссозданы из-за доли
+0

Awesome! благодаря –