Linux Docker从多个不工作的容器安装到环路设备只有一个容器可以安装
我有一个构建过程,通过将一些软盘映像(文件)装入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
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”