Я знаю, что контейнеры Docker могут совместно использовать объем данных, но возможно ли, чтобы они делились каркасами? Например, если у меня есть две службы .NET, работающие в IIS, я могу просто поделиться ими между ними?Могут ли контейнеры разделять рамки?
0
A
ответ
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, требуется ли обновление , Все остальные контейнеры должны быть воссозданы из-за доли
Awesome! благодаря –