Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Docker从多个不工作的容器安装到环路设备只有一个容器可以安装_Linux_Docker_Mount - Fatal编程技术网

Linux Docker从多个不工作的容器安装到环路设备只有一个容器可以安装

Linux Docker从多个不工作的容器安装到环路设备只有一个容器可以安装,linux,docker,mount,Linux,Docker,Mount,我有一个构建过程,通过将一些软盘映像(文件)装入docker容器来处理它们 使用一个容器时一切都很好,但是如果运行第二个容器,尽管我使用了不同的循环设备,但我无法在那里装载任何东西 如果我回到第一个容器并执行umount装载,我可以毫无问题地装载到第二个容器中 我观察到有两种行为,mount命令永久挂起或立即失败: mount: /tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/NGFW-Fresh-72x-Box.flp: failed to setup loop devic

我有一个构建过程,通过将一些软盘映像(文件)装入docker容器来处理它们

使用一个容器时一切都很好,但是如果运行第二个容器,尽管我使用了不同的循环设备,但我无法在那里装载任何东西

如果我回到第一个容器并执行
umount
装载,我可以毫无问题地装载到第二个容器中

我观察到有两种行为,mount命令永久挂起或立即失败:

mount: /tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/NGFW-Fresh-72x-Box.flp: failed to setup loop device: No such file or directory
有没有办法解决这个问题,以便我能够通过环回接口在多个容器上装载图像?

其他详细信息:

容器概述并尝试在第二个容器中装入软盘映像:

CONTAINER ID IMAGE命令创建的状态端口名称
4181a8e5e8c7 10.0.0.201:5000/jenkins_autotest_slave:latest“/usr/local/bin/setu…”40小时前上升40小时127.0.0.1:32800->22/tcp gallant_saha
0218fdce8ed7 10.0.0.201:5000/jenkins_autotest_slave:最新“/usr/local/bin/setu…”47小时前47小时127.0.0.1:32798->22/tcp Revert_feistel
[qa@jenkins-staging~]$docker exec-ti 4181 bash
[root@4181a8e5e8c7/]#sudo/usr/bin/mount-o loop=/dev/loop1,uid=1000/tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/NGFW-Fresh-72x-Box.flp/tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/mp
mount:/tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/NGFW-Fresh-72x-Box.flp:设置循环设备失败:没有这样的文件或目录
[root@4181a8e5e8c7/]#退出
现在在第一个容器上卸载

[qa@jenkins-暂存~]$docker exec-ti 0218fdce8ed7 bash
[root@0218fdce8ed7/]#sudo umount/tmp/ng-blabla-NGFW-Fresh-72x-Box/mp##umount以便其他合作伙伴可以安装
[root@0218fdce8ed7/]#退出
现在可以安装第二个容器了

[qa@jenkins-staging ~]$ docker exec -ti 4181 bash
[root@4181a8e5e8c7 /]# sudo /usr/bin/mount -o loop=/dev/loop1,uid=1000 /tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/NGFW-Fresh-72x-Box.flp /tmp/ng-mmi7Ao-NGFW-Fresh-72x-Box/mp
[root@4181a8e5e8c7 /]# exit ### MOUNT WAS SUCCESSFULL IN SECOND CONTAINER
请在第一个容器中重试:

[qa@jenkins-暂存~]$docker exec-ti 0218fdce8ed7 bash
[root@0218fdce8ed7/]#日期
2019年4月16日星期二13:50:28 UTC
[root@0218fdce8ed7/]#sudo/usr/bin/mount-o loop=/dev/loop0,uid=1000/tmp/ng-blabla-NGFW-Fresh-72x-Box/NGFW-Fresh-72x-Box.flp/tmp/ng-blablabla-NGFW-Fresh-72x-Box/mp#mount现在一直挂在第一个容器上
^C
[root@0218fdce8ed7/]#日期
2019年4月16日星期二13:57:21 UTC
Docker和操作系统版本:

[qa@jenkins-登台~]$docker-v
Docker版本18.09.5,内部版本e8ff056
[qa@jenkins-分期付款~]$uname-a
Linux jenkins staging 3.10.0-957.5.1.el7.x86_64#1 SMP Fri Feb 1 14:54:57 UTC 2019年x86_64 x86_64 GNU/Linux
[qa@jenkins-登台~]$cat/etc/redhat发布
CentOS Linux 7.6.1810版(核心版)
Docker运行命令:

docker run--privileged--device cgroup rule=“b7:*rmw”-p:22 10.0.0.201:5000/jenkins\u autotest\u slave:latestqa@jenkins-登台“

虽然我不知道为什么docker/linux/mount的行为如此愚蠢,但我找到了一个解决方案(或者说,更好的解决方案)来解决我的问题,它允许在不安装软盘映像的情况下创建软盘映像

此外,这样做的好处是,它不需要任何额外的权限,因此我可以执行
docker运行
,而无需
--privileged--device cgroup rule=“b 7:*rmw”