在Docker容器内运行Docker时无法挂载卷。

17 浏览
0 Comments

在Docker容器内运行Docker时无法挂载卷。

我正在尝试在Docker内部运行Docker。

我在AWS ECS上运行第一个容器,使用包含以下描述的任务定义,采用CentOS 7镜像。

"mountPoints": [

{

"readOnly": null,

"containerPath": "/usr/share/rec/screenrecordings",

"sourceVolume": "recording"

}

],

"volumes": [

{

"name": "recording",

"host": {

"sourcePath": "/recording"

}

}

]

当此容器启动时,我安装了“docker-ce”,然后在其中运行新的容器,试图上传“kurento-media-server”Ubuntu 14.4镜像(https://hub.docker.com/r/kurento/kurento-media-server/)。

在Docker内部运行以下命令:

“docker run -h my-app --name my-app -d /image:latest --privileged -v /usr/share/rec/myApp:/usr/share/myApp --rm=true”

Docker立即退出,退出代码为0,docker日志中没有错误。

使用--mount运行:

“docker run -h my-app --name my-app -d /image:latest --privileged --mount type=bind,source=/usr/share/rec/myApp ,target=/usr/share/myApp --rm=true”

容器正在运行,但挂载未建立(运行“docker inspect”时,“Mount”部分为空,进入docker时,挂载的目录不存在)。

主机上的路径“/usr/share/rec/myApp”以及容器路径“/usr/share/”都存在。

Docker版本:Docker version 17.09.0-ce, build afdb6d4

我真的非常感谢任何关于如何使其工作的帮助和见解。

谢谢您的帮助。

0
0 Comments

问题原因:命令参数的顺序错误,--mount应该在Docker镜像名称之前被写入。

解决方法:调整命令参数的顺序,将--mount放在Docker镜像名称之前。

具体解决方法如下:

docker run -d -h my-app --name my-app --mount type=bind,source=/usr/share/rec/myApp,target=/usr/share/myApp /image:latest --privileged --rm=true

0