gpt4 book ai didi

.net - 容器可以共享一个框架吗?

转载 作者:行者123 更新时间:2023-12-02 21:24:11 24 4
gpt4 key购买 nike

我知道Docker容器可以共享数据量,但是它们可以共享框架吗?例如,如果我在IIS上运行两个.NET服务,是否可以在它们之间共享框架?

最佳答案

是的,你可以的,你通常要做的是

备选方案A:

创建一个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"]

虽然 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

将该图像作为服务添加到您的docker-compose.yml中,让我们说“framework”,然后在您希望它们使用的服务上添加
volume_from
- framework:ro

优点:
  • 您可以编译,构建和部署framworks soley
  • 运行这个额外的容器
  • 几乎没有运行时开销

    缺点:
  • 图像大小的开销( Alpine ,30mb)

  • 替代B
    您将您的服务之一用作“框架基础”,假设服务A,这意味着您在该服务上复制了框架(使用该服务的两个框架之一),并再次使用 VOLUME /opt/framework将其作为卷公开

    在服务B中,以相同的方式安装卷
    serviceB:
    volume_from
    - serviceA:ro

    优点:
  • 没有额外的容器

  • 缺点:
  • 框架需要与serviceA一起部署,无论服务A是否需要更新
  • 您对A有依赖性,A是否需要更新,由于共享
  • ,需要重新创建所有其他容器

    关于.net - 容器可以共享一个框架吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41566244/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com