docker - 在 Windows Server 2016 上构建 Docker 映像
问题描述
我们期待在 Windows Server 2016 Jenkins slave(虽然并不理想)上使用基础 openjdk 镜像为我们的微服务构建 docker 镜像。
我们确实在 Windows Server 2016 上安装了 Docker EE,并且正如预期的那样得到以下错误:
PS C:\> docker pull openjdk:8
8: Pulling from library/openjdk
no matching manifest for windows/amd64 in the manifest list entries
与 Windows 10 不同,我无法将守护进程设置为切换到 linux 容器。
- 可能吗?
- 如何才能做到这一点?
如果我们走这条路,我们会遇到什么问题?
Docker Version: PS C:\> docker version Client: Version: 18.03.1-ee-3 API version: 1.37 Go version: go1.10.2 Git commit: b9a5c95 Built: Thu Aug 30 18:42:35 2018 OS/Arch: windows/amd64 Experimental: false Server: Engine: Version: 18.03.1-ee-3 API version: 1.37 (minimum version 1.24) Go version: go1.10.2 Git commit: b9a5c95 Built: Thu Aug 30 18:56:49 2018 OS/Arch: windows/amd64 Experimental: true
Windows 构建:
操作系统名称:Microsoft Windows Server 2016 标准操作系统版本:10.0.14393 N/A Build 14393
解决方案
该错误是因为 openjdk:8 不是 Windows 容器。要检查这一点,您可以尝试拉“microsoft/nanoserver”,这会正常工作,因为它是一个 Windows 容器
您可以查看这些链接以在 Windows 2016 服务器中运行 linux 容器:
https://blog.docker.com/2017/09/preview-linux-containers-on-windows/
https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers
这是一个实验性功能,因此不推荐用于生产
另一种选择是使用 docker for windows:
https://store.docker.com/editions/community/docker-ce-desktop-windows并在安装配置窗口中未选中使用 Windows 容器
推荐阅读
- javascript - 使用 Image URL 训练 Tensorflowjs 程序
- css - grid-row: 1 是做什么的?
- python - 谷歌字典结果抓取
- python - 返回字符串和布尔值的递归函数
- powershell - PowerShell New-ADUser 仍然创建禁用用户
- swift - 即使用户未登录,应用程序也不显示登录页面
- node.js - 无法在 Postman 中为简单的 Node.js 应用程序获得响应
- django - 我的订单没有保存。django中的表格
- powershell - 函数第 3 行的代码是如何工作的?
- javascript - 如何在反应 nodejs 中授予在两个或多个 html 页面中包含相机的权限?