在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

在Docker中获取Windows MobyLinuxVM 的Shell

Docker 清风 203℃ 0评论

使用Docker for Windows时,我们实际上正在使用在特殊Hyper-V VM中运行的小型(自定义)LinuxKit Linux。使用了相当多的方式使在Windows中使用Docker更加便利,似乎容易让人忘记它还在在Linux内核上运行。

请注意,这是关于默认的“Linux容器”模式。它不适用于“Windows容器”模式。

这只是一个可以访问Linux VM的容器,因此您可以执行诸如ps aux查看在VM中运行的守护程序之类的操作。这不是一个完整的操作系统。

首先需要创建一个具有完全root访问权限的容器,然后从那里访问文件系统。

  • 获取可访问Docker守护程序的容器
  • 运行具有完全root访问权限的容器
  • 切换到主机文件系统

构建镜像

使用Docker构建一个镜像,Dockerfile如下所示:


FROM  ubuntu
RUN set -xe \
                && echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
        && echo 'exit 101' >> /usr/sbin/policy-rc.d \
        && chmod +x /usr/sbin/policy-rc.d \
                && dpkg-divert --local --rename --add /sbin/initctl \
        && cp -a /usr/sbin/policy-rc.d /sbin/initctl \
        && sed -i 's/^exit.*/exit 0/' /sbin/initctl \
                && echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
                && echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
        && echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
        && echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
                && echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
                && echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes \
                && echo 'Apt::AutoRemove::SuggestsImportant "false";' > /etc/apt/apt.conf.d/docker-autoremove-suggests
RUN rm -rf /var/lib/apt/lists/*
RUN sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list
RUN mkdir -p /run/systemd && echo 'docker' > /run/systemd/container
CMD ["/bin/bash"]
RUN apt-get update && \
    apt-get install -y --no-install-recommends apt-utils docker.io

通过以上 Dockerfile来构建一个镜像

docker build -t skyfinder/accessdockerdesktopvm:v1 .

镜像构建完成以后依次执行以下操作:

docker run --privileged -it -v /var/run/docker.sock:/var/run/docker.sock skyfinder/accessdockerdesktopvm:v1 
docker run --net=host --ipc=host --uts=host --pid=host -it --security-opt=seccomp=unconfined --privileged --rm -v /:/host alpine /bin/sh
chroot /host
以上处理方式仅仅运行查看MobyLinuxVM中的信息内容。

转载请注明:清风博客 » 在Docker中获取Windows MobyLinuxVM 的Shell

喜欢 (0)or分享 (0)
支付宝扫码打赏 微信打赏
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址