如何在 Docker 中合并宿主文件夹和容器文件夹?
How to merge host folder with container folder in Docker?
我在 Docker 上有维基媒体 运行。维基媒体的扩展驻留在 extensions/
文件夹中,该文件夹最初包含内置扩展(一个扩展 = 一个子文件夹)
现在我想添加新的扩展。但是,我不喜欢修改 Docker 文件或在现有容器上创建新提交的选项。
是否可以在主机中创建一个文件夹(例如 /home/admin/wikimedia/extensions/
),并与容器中的 extension
文件夹合并(而不是覆盖)?所以每当我想安装新的扩展时,我只需将扩展文件夹复制到主机 /home/admin/wikimedia/extensions/
您可以将卷从您的主机安装到与扩展文件夹不同的位置,然后在您的启动脚本中,您可以将内容复制到容器的目录。您将需要重建您的主机一次。
例如:
Dockerfile:
RUN cp startup-script /usr/local/bin/startup-script
CMD /usr/local/bin/startup-script
startup-script:
#!/bin/bash
cp /mnt/extensions /path/to/wikipedia/extensions
/path/to/old-startup-script $@
docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia
这是解决此问题的一种方法,另一种方法是为扩展维护一个单独的数据容器,然后将其挂载并在维基百科容器之外维护。它必须包含所有扩展名。
你可以这样开始:
docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null
docker run -d --volumes-from extensions wikipedia
我在 Docker 上有维基媒体 运行。维基媒体的扩展驻留在 extensions/
文件夹中,该文件夹最初包含内置扩展(一个扩展 = 一个子文件夹)
现在我想添加新的扩展。但是,我不喜欢修改 Docker 文件或在现有容器上创建新提交的选项。
是否可以在主机中创建一个文件夹(例如 /home/admin/wikimedia/extensions/
),并与容器中的 extension
文件夹合并(而不是覆盖)?所以每当我想安装新的扩展时,我只需将扩展文件夹复制到主机 /home/admin/wikimedia/extensions/
您可以将卷从您的主机安装到与扩展文件夹不同的位置,然后在您的启动脚本中,您可以将内容复制到容器的目录。您将需要重建您的主机一次。
例如:
Dockerfile:
RUN cp startup-script /usr/local/bin/startup-script
CMD /usr/local/bin/startup-script
startup-script:
#!/bin/bash
cp /mnt/extensions /path/to/wikipedia/extensions
/path/to/old-startup-script $@
docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia
这是解决此问题的一种方法,另一种方法是为扩展维护一个单独的数据容器,然后将其挂载并在维基百科容器之外维护。它必须包含所有扩展名。
你可以这样开始:
docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null
docker run -d --volumes-from extensions wikipedia