我的理解是,在其他操作系统上运行 docker 的主要限制是使其成为可能的 Linux 网络容器。(当然适用于 Mac)。
最近微软宣布了一个在 Windows 10 上本地运行的Ubuntu linux用户模式的测试版。这可以在 Windows 上运行以 ELF 格式编译的二进制文件(与需要编译的 cygwin 不同。)
我的问题是:你能在新的 Windows 10 (Ubuntu) bash 用户空间上本地运行 Docker 吗?
我的理解是,在其他操作系统上运行 docker 的主要限制是使其成为可能的 Linux 网络容器。(当然适用于 Mac)。
最近微软宣布了一个在 Windows 10 上本地运行的Ubuntu linux用户模式的测试版。这可以在 Windows 上运行以 ELF 格式编译的二进制文件(与需要编译的 cygwin 不同。)
我的问题是:你能在新的 Windows 10 (Ubuntu) bash 用户空间上本地运行 Docker 吗?
在 Windows 上的 Ubuntu / Debian 上,您可以使用 Docker Desktop for Windows 作为引擎,将 Docker for Linux 作为客户端。通过 TCP 连接它们。
为 Windows 安装 Docker 桌面:https ://hub.docker.com/editions/community/docker-ce-desktop-windows 如果你想使用 Windows 容器而不是 Linux 容器,这两种类型的容器都可以由 Linux docker 客户端在bash 用户空间。
从版本 17.03.1-ce-win12 (12058) 开始,您必须选中Expose daemon on tcp://localhost:2375 without TLS以允许 Linux Docker 客户端继续通过 TCP 与 Windows Docker 守护程序通信
按着这些次序:
或者
使其永久化:
将对应的变量添加到.bashrc
当然也可以安装 docker-compose
或者使用 python pip
和 Bash 完成。最好的部分:
我已经使用 Hyper-V 使用 Docker Desktop 的 2.1.0.1 (37199) 版本对其进行了测试:
卷
添加卷时要小心。该路径
C:\dir
将/mnt/c/dir
在 WSL 和/c/dir/
docker 引擎上可见。您可以永久克服它:对 wsl.conf 进行更改后,您必须退出并重新加载 WSL,以便 WSL 在启动时读取您的更改。
更新
来自:Windows 10 版本 1803 中命令行的新增功能
更新
该脚本和 Unix 套接字的使用包含在Pengwin的 pengwin-setup 中。
问候
截至目前(2016 年 4 月),答案是:
我们还不知道(但可能不知道)。
事实
猜测
所以问题是 Docker 需要的系统调用(用于 chroot 和命名空间等)是否已实现。答案很可能是“不”。Docker 需要相当复杂的(和特定于 Linux 的)功能来进行进程和资源管理以及进程隔离。虽然可能可以在 Windows 上复制所有这些,但这将需要大量工作,并且由于此 Windows 功能的目标似乎是运行 Linux 用户空间程序,他们似乎不太可能完成所有工作(并保密) .
但是,据我所知,这两种方式都没有确定的信息。
现有的 Docker 端口
当然,如果微软决定他们希望在 Windows 10 中支持 Docker,他们可能会提供它。将 Docker 移植到不同的内核有一些先例:
不,这是不可能的。
Docker 需要多个东西才能运行容器:
这些都是在 Linux 中实现的内核特性。不幸的是,它们中的大多数在 Windows 中没有类似的功能可用作替代品(在微软在 Windows 内核中实现的 Linux 子系统中也没有)。所有这些都需要由操作系统提供。
昨天发布了第一个内幕预览。我尝试安装 docker,但失败并显示以下内容:
所以看起来,对于第一个预览,它目前不起作用。然而,正如许多人推测的那样,它可能会在未来的版本中使用。
从Creator 更新(2017 年 6 月 13 日公开发布)开始,您可以直接在 WSL 中运行本机 Windows 可执行文件。这意味着如果您已经安装了Docker for Windows,您可以简单地调用
docker
安装在C:\Program Files
. 由于它们以.exe
最简单的选择结束,因此创建别名。您.bashrc
应该可以使用以下内容:这将为
DOCKER_BIN
目录中的所有文件创建别名:一个警告:如果从 Linux 目录运行,您将收到类似“无法翻译当前工作目录”的错误消息。只需
cd
进入 Windows 目录(例如/mnt/c/Users/YourUsername
),您应该会很好。一旦 Docker 1.12 发布并分离了 Linux Docker 客户端,您应该能够在 Windows 10 bash 中 运行 docker客户端。
考虑到你有一个 Docker Windows 客户端,这听起来可能并不多,但如果你有包含 docker 的 Linux 工具链来实现它的客户端功能,它会很有用。
在 Windows 10 版本 1607 Build 1493.10 中,您可以在 Ubuntu Bash 上成功安装它,但它不起作用:(
一个简单的“docker 版本”会告诉你:
如果您随后运行“sudo docker -d”,则会收到以下错误:
所以这绝对是 bash 方面的一个障碍。
不过,您可以安装Docker for Windows,它就像一个魅力,您显然可以部署 Linux 服务器和您需要的一切。
截至 2016 年 9 月,第
Windows 上的所有当前 Docker 实现都使用虚拟化,Docker 1.12 在 Windows 中使用虚拟机管理程序 - 因此消除了容器化相对于虚拟化的优势。
Docker 需要的不仅仅是使用 Linux 系统调用。
它需要进程控制组 (cgroups)、可堆叠文件系统 (aufs) 以及内核之外的其他基于 Linux 的系统。
cgroups 和 aufs 都不是原生的 Windows 10 内核。
这里有一个 Windows Server 2016 的实现:https: //msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server ..但这只会运行一些 Windows 服务,例如 IIS,而不是 Ubuntu
Docker 目前在当前版本 (14316) 中不工作 - 假设您可以安装它。
来自:https ://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/