如何将容器1的/usr/share/nginx/html目录映射到容器2的对应路径
容器间共享目录的实现方法
完全可以实现,主流有两种可行方案,操作方法如下:
方案1:使用--volumes-from参数直接共享容器挂载路径
这就是你提到的volumes-from的标准用法,操作步骤:
- 先启动源容器(容器1),将需要共享的路径声明为卷:
这里的docker run -d --name container1 -v /usr/share/nginx/html nginx:latest-v只指定容器内路径时,Docker会自动为该路径创建匿名存储卷。 - 启动容器2时添加
--volumes-from参数,关联容器1即可共享所有容器1挂载的卷:
完成后两个容器的docker run -d --name container2 --volumes-from container1 nginx:latest/usr/share/nginx/html路径内容完全同步,修改任意一侧的文件都会在另一侧生效。
方案2:使用共享命名卷(更推荐,稳定性更高)
你之前用的宿主机目录挂载是绑定挂载,也可以用Docker管理的命名卷实现跨容器共享,不需要绑定宿主机本地目录:
- 先创建自定义命名卷(也可以启动容器时自动创建):
docker volume create shared_nginx_html - 启动两个容器时,都挂载同一个命名卷到目标路径即可:
# 启动容器1 docker run -d --name container1 -v shared_nginx_html:/usr/share/nginx/html nginx:latest # 启动容器2 docker run -d --name container2 -v shared_nginx_html:/usr/share/nginx/html nginx:latest
该方案的优势是存储卷独立于容器生命周期存在,就算两个容器都被删除,卷内的文件依然会保留,更适合长期使用的场景。
补充说明:如果挂载的空卷对应容器内路径已有预置文件,Docker会自动将容器内的原有文件复制到卷中再完成挂载,不会出现空卷覆盖容器内原有文件的问题。
内容的提问来源于stack exchange,提问作者emboole
相关产品推荐
相关产品推荐

