【问题标题】:Running .Net Core in Docker in Windows Subsystem for Linux在适用于 Linux 的 Windows 子系统中的 Docker 中运行 .Net Core
【发布时间】:2017-04-25 11:15:37
【问题描述】:

实际上我想在 Docker 中使用 .NET Core。

我从this post 了解到,为了给自己最大的灵活性,我会安装“Docker For Windows”。意味着我最终可以将我的 .Core 应用程序部署到 Windows 或 Linux 容器的容器中。但是,Linux 容器仍然是 Hyper-V 托管的 Linux 容器。

1) 有没有办法在 Windows 10 创意者更新中改用适用于 Linux 的 Windows 子系统 (WSL) 来执行此操作?与让 Windows/Docker 为我管理单独的 Linux VM 相比,开销似乎更少?

【问题讨论】:

    标签: docker .net-core windows-subsystem-for-linux


    【解决方案1】:

    不,running Docker containers in WSL is not supported(链接我的):

    docker 引擎在短期内不是一个受支持的场景。如果您希望运行 docker 引擎,我建议您点击我们的用户语音页面和upvoting Docker

    不过,docker 客户端应该在 build 14342 中运行。我已经能够运行 docker 客户端并连接到在 VM 中运行的 docker 引擎。

    至于why it's not supported

    WSL 是一个干净的内核重新实现。因此,出于技术和法律原因,它不能简单地采用 Docker 的内核组件并“使其工作”。他们需要对多年持续的内核开发进行逆向工程并重新实现它。 (或者采取其他一些重要的方法。)

    【讨论】:

    • "take the Kernel components" - 希望blog.docker.com/2016/09/docker-microsoft-partnership 能让他们克服这个问题。并在 2016 年 5 月发布“...短期内不支持...”。一年后,WSL 的第二个“主要”版本以及网络子系统的改进被吹捧,我希望我们已经接近了。在我看来,只有文件系统支持才是需要做的事情。请注意,这不是一件小事,但事情会很接近。
    • @TheEdge 我不明白合作伙伴如何能够克服无法将 GPL 许可代码(来自 Linux 内核)合并到闭源产品 (Windows) 中的事实。 (除非所有相关贡献者都同意,我认为这远非简单。)
    • 那么 MS 是如何克服将 Ubuntu 合并为 WSL 的呢?
    • @TheEdge 他们没有。 WSL 是通用的,不包含 Linux 代码,它只是模拟 Linux 的界面。在 WSL 之上运行的 Ubuntu on Windows 会在您首次启动时下载实际的开源 Ubuntu。因此,Windows 的任何部分都不包含取自 Linux 的任何代码。
    • 那么在不违反 GPL 的情况下,“Docker for Windows”可以与 WSL 通信,WSL 将与 Ubuntu 容器通信,进而与 Linux 内核通信。我们最终达到了我想成为的“Docker for Windows”使用 Ubuntu(通过 WSL)作为容器主机并消除了拥有不必要的 Hyper-V 托管 Linix VM 的需要。由于 MS 和 Docker 有商业关系,我认为 Docker 很乐意与 MS 合作与 WSL 对话。
    猜你喜欢
    • 2018-06-09
    • 2021-05-27
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    相关资源
    最近更新 更多