如何在Docker中将主机文件夹与容器文件夹合并? [英] How to merge host folder with container folder in Docker?

查看:226
本文介绍了如何在Docker中将主机文件夹与容器文件夹合并?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

维基媒体在Docker上运行。维基媒体的扩展位于最初包含内置扩展名(一个扩展名=一个子文件夹)的 extensions / 文件夹中



我想添加新的扩展。但是,我不喜欢修改Docker文件或在现有容器上创建新提交的选项。



是否可以在主机中创建一个文件夹(例如 / home / admin / wikimedia / extensions / )将被合并(不覆盖)与扩展名容器?所以每当我想要安装新的扩展名时,我只需将扩展名文件夹复制到主机 / home / admin / wikimedia / extensions /

解决方案

您可以将卷从主机安装到与扩展文件夹不同的位置,然后在启动脚本中,您可以将内容复制到容器的目录中。您将需要重建主机一次。



例如:

  Dockerfile 
RUN cp startup-script / usr / local / bin / startup-script
CMD / usr / local / bin / startup-script

启动脚本:
#!/ bin / bash
cp / mnt / extensions / path / to / wikipedia / extensions
/ path / to / old-startup-script $ @

docker运行-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 - 卷 - 从扩展名维基百科


I have Wikimedia running on Docker. Wikimedia's extensions reside in extensions/ folder which initially contain built-in extensions (one extensions = one subfolder)

Now I wish to add new extensions. However I don't prefer the option of modifying the Dockerfile or creating new commit on the existing container.

Is it possible to create a folder in the host (e.g. /home/admin/wikimedia/extensions/) which is to be merged (not to overwrite) with the extension folder in the container? So whenever I want to install new extension, I just copy the extension folder to the host /home/admin/wikimedia/extensions/

解决方案

You can mount a volume from your host to a separate location than the extension folder, then in your startup script, you can copy the contents to the container's directory. You will need to rebuild your host once.

For example:

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

That is one way to get around this problem, the other way would be to maintain a separate data container for extensions, then you will mount this and maintain it outside of the wikipedia container. It would have to have all the extensions in it.

You can start one like so:

 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中将主机文件夹与容器文件夹合并?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆