Docker: 是否可以在没有卷的情况下在 2 个容器之间共享数据?

Docker: Is it possible to share data between 2 containers without a volume?

我有 2 个容器:webnginx。当我构建 web 容器时,前端的静态资产在容器内生成。

现在,我想在 webnginx 之间共享这些资产,而不使用主机上的卷。否则,我将不得不在主机端构建这些静态资产,然后作为卷包含到 web 容器中并与 nginx 容器共享。从我的构建系统的角度来看,这是不可取的。

有没有办法在 web 容器中构建静态资产,然后与 nginx 共享它们?

Otherwise, I'll have to build those static assets on the host side and then include as a volume into the web container and share it with nginx container.

这种说法似乎不正确。

如果静态资产是作为构建过程的一部分生成的,那么只需在 运行 时在该目录的顶部安装一个卷。 Docker 将负责将底层内容复制到卷中,之后您可以使用 --volumes-from.

在 nginx 容器中访问它

例如,如果我的 Web 容器从这个 Dockerfile 开始:

FROM alpine

RUN apk add --update darkhttpd
COPY assets /assets
CMD ["darkhttpd", "/assets"]

我现在有一个包含我的静态资产的目录 /assets。如果我 运行 此图像为:

docker run -v /assets --name web web

那么 /assets 将 (a) 是一个卷并且 (b) 包含以下内容 /assets 目录。

现在您可以启动一个 nginx 容器并与其共享此数据:

docker run --volumes-from web nginx

nginx 容器将有一个 /assets 目录,其中包含您的 静态资产。

我整理了一个小例子 here