问题描述
在Mac上,docker使用HyperKit来创建LinuxKit VM。例如,这意味着,由于虚拟机控制了所有这些操作,因此我无法在/var/lib/docker
之类的位置看到给定容器下拉的任何图像层。
是否有一种方法可以在该VM上实际获得外壳以进行这种自省?
解决方法
在Mac版Docker Desktop 2.4中,可以使用健全的制表符自动完成功能,将几乎完整的终端插入LinuxKit VM,并可以检查其内容。
例如,要查看下拉的docker映像的层,可以执行以下命令:
$ stty -echo -icanon && nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock && stty sane
/ # ls -al /var/lib/docker/overlay2/
nc -U ~/Library/Containers/com.docker.docker/Data/debug-shell.sock
可以单独运行,per the Docker release docs,但是如果按照上面的示例未将其与stty
结合使用,您将不会看到很好的输出,也不会看到在虚拟机中具有制表符补全。