Docker本地现有容器共享卷执行命令报错求助
Docker卷共享问题解决
错误根源
你用错了docker run的参数逻辑:这个命令是用来新建并启动容器的,最后一位参数必须是镜像名称,但你填了已有的容器名ubuntu20,Docker会误以为这是镜像名,跑去Docker Hub拉取不存在的ubuntu20镜像,所以报错。
正确操作方案
给已存在的容器挂载共享卷
如果ubuntu20容器已经存在,Docker没法直接给运行中的容器修改挂载配置,得按以下步骤来:
- 先停掉容器:
sudo docker stop ubuntu20 - 删除原容器(容器创建后挂载规则不能直接改,只能删了重建):
sudo docker rm ubuntu20 - 用原镜像重新创建容器,同时指定挂载卷和容器名:
假设你当初创建ubuntu20用的是官方ubuntu:20.04镜像,命令如下:
这里sudo docker run -i -t --name ubuntu20 --mount source=volume,target=/volume-shared ubuntu:20.04--name ubuntu20是指定容器名称,最后面的ubuntu:20.04才是正确的镜像名。
创建多个容器共享同一卷
如果要新建多个容器共享同一个卷,先确保卷已经创建(没创建的话执行下面命令):
sudo docker volume create volume
然后给每个新容器挂载这个卷,比如再建一个叫ubuntu20-second的容器:
sudo docker run -i -t --name ubuntu20-second --mount source=volume,target=/volume-shared ubuntu:20.04
这样两个容器里的/volume-shared目录会共用同一个Docker卷的内容。
验证共享是否成功
随便进入一个容器,在共享目录创建文件:
sudo docker exec -it ubuntu20 bash touch /volume-shared/shared-file.txt exit
再进入另一个容器查看:
sudo docker exec -it ubuntu20-second ls /volume-shared
如果能看到shared-file.txt,就说明卷共享生效了。
内容的提问来源于stack exchange,提问作者swati sujaya
相关产品推荐
相关产品推荐

