Docker: 是否可以在没有卷的情况下在 2 个容器之间共享数据?
Docker: Is it possible to share data between 2 containers without a volume?
我有 2 个容器:web
和 nginx
。当我构建 web
容器时,前端的静态资产在容器内生成。
现在,我想在 web
和 nginx
之间共享这些资产,而不使用主机上的卷。否则,我将不得不在主机端构建这些静态资产,然后作为卷包含到 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。
我有 2 个容器:web
和 nginx
。当我构建 web
容器时,前端的静态资产在容器内生成。
现在,我想在 web
和 nginx
之间共享这些资产,而不使用主机上的卷。否则,我将不得不在主机端构建这些静态资产,然后作为卷包含到 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
.
例如,如果我的 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。