我在OSX上,我已经安装了Docker for Mac。
在OSX上,Docker在一个小管理程序中运行它的容器,我们可以从流程列表中看到这个
❯ ps awux | grep docker
bryanhunt 512 1.8 0.2 10800436 34172 ?? S Fri11am 386:09.03 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 8 -m 6144M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=s50,uuid=c0fac0ff-fb9a-473f-bf44-43d7abdc701d -U 05c2af3a-d417-43fd-b0d4-9d443577f207 -s 2:0,ahci-hd,/Users/bryanhunt/Library/Containers/com.docker.docker/Data/vms/0/Docker.raw -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,virtio-rnd -s 7,virtio-9p,path=s51,tag=port -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,
bryanhunt 509 0.0 0.1 558589408 9608 ?? S Fri11am 0:30.26 com.docker.driver.amd64-linux -addr fd:3 -debug
注意它是如何从ISO映像/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso
运行VM的 - 这可能是一个好主意,因为如果用户篡改了VM映像,事情会变得棘手,但是,在这种情况下,这正是我想要的做。
我可以通过运行特权容器进入Docker VM,该容器执行nsenter
实用程序以进入主机进程空间。
docker run --rm -it --privileged --pid=host walkerlee/nsenter -t 1 -m -u -i -n sh
所以一切都很好。我现在可以进入下一个阶段,安装并运行plotnetcfg。
plotnetcfg创建了非常好的网络配置graphviz图表,这就是我想要做的,分析Docker VM内部的网络配置(它是Alpine Linux BTW)。
以下是plotnetcfg可以生成的图表示例:
这是我的实际目标 - 为黑客马拉松可视化Docker网络配置。
现在终于问题的描述。
根文件系统是iso9660安装。
/ # mount |grep iso
/dev/sr0 on / type iso9660 (ro,relatime)
有没有办法重新安装root,使用aufs堆叠文件系统或任何其他方式,以便我可以更新系统包,下载,编译和执行plotnetcfg实用程序,最后,导出生成的graphviz点文件并渲染它别处?
答案 0 :(得分:1)
问题:root mounted as ro iso9660 filesystem how can I remount as rw overlay ?
答案是:无法将其重新安装为rw,但是如果您确实想临时添加某些内容,则可以写入tmpfs / tmp或shm / dev / shm。
对于您想做的事情:
使用docker run
,您已经可以访问docker vm的网络。
您无需修改主机即可更改网络,只需添加--privileged -v /dev:/dev
即可运行docker,然后只需将软件包安装在容器中,创建所需的接口即可即可。
docker run --rm -it --privileged -v /dev:/dev wener/base ifconfig
例如,您可以在容器中创建tap或tun dev,我在容器中使用tinc创建主机vpn。