Windows Server 2022 安装配置——安装 Docker

前言

Docker是一种容器化平台,用于开发、部署和运行应用程序。它采用容器技术,允许你将应用程序及其依赖项打包到一个可移植的容器中,这个容器可以在不同的环境中运行,而不需要担心依赖问题或环境差异。

且windows server 2022 已经支持 wsl2 了,可以将 wsl2 设为默认版本。

安装基础

确认系统要求

确保安装的 Windows Server 2022 系统满足 Docker 的最低系统要求。博主安装的 Windows Server 2022 版本为Windows Server 2022 Datacenter

安装 windows server 2022 系统后最好先将系统进行更新。网卡驱动安装可以参考上一篇文章Windows server 2022安装配置------网卡驱动配置

开启 Hyper-V 服务

Windows server 系统默认是禁用该功能的,开启方式如下:

  1. 打开【服务器管理器】,在【仪表板】选择【添加角色和功能】
  2. 下一步跳到【服务器角色】勾选上【Hyper-V】
  3. 在【功能】中勾选【容器】
  4. 在【确认】中点击【安装】,安装完成后重启系统

也可以通过命令开启,需要在管理员权限下运行。

安装 Hyper-V 命令

复制代码
Install-WindowsFeature -Name Hyper-V

安装容器功能命令

复制代码
Install-WindowsFeature -Name containers

重启命令

复制代码
Restart-computer

安装 Docker

安装 docker ce 版本

PowerShell 复制代码
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
.\install-docker-ce.ps1

查看 docker 安装版本,出现版本信息表示已经安装成功

bash 复制代码
docker version

【可选】还可以安装 docker-compose,极大可能因网络问题下载失败,可以尝试手动下载

PowerShell 复制代码
Invoke-WebRequest -UseBasicParsing "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-windows-x86_64.exe" -o $Env:ProgramFiles\docker\docker-compose.exe

docker-compose --version

重启系统

bash 复制代码
Restart-Computer -Force # 手动重启也行

安装可视化 UI

Windows server 的 docker 没有可视化 UI,可安装第三方的工具,比如 portainer:

bash 复制代码
docker run -d --name portainer --restart always -p 9000:9000 -v \\.\pipe\docker_engine:\\.\pipe\docker_engine portainer/portainer

切换内核

通过指令安装好 docker,此时 docker 运行在 windows 内核下,可以运行windows内核的容器,但是是不能加载 Linux 内核容器的,如果此时run一个linux内核的容器会出现no matching manifest for windows/amd64错误。

如果你需要运行 Linux 内核的容器即需要将 docker 的内核切换成 linux。但这里极其不友好,由于 windows server 安装的 docker 版本没有 Desktop,官方文档给的指导中又不存在 dockercli 指令,踩坑无数,现记录如下。

若是看官着急寻找方案,可直接跳至下文的解决方案继续阅读。

!\[imgs/docker的wndows内核.png]

擦坑记录------该操作方案可能过时

指令切换方案

官方文档中提到使用$Env:ProgramFiles\Docker\Docker\DockerCli.exe -SwitchDaemon .命令切换 docker 内核,但并不存在该路径和 DockerCli 文件,

Windows server 2019 之前的切换指令:

css 复制代码
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service Docker

指令切换回 windows 内核:

csharp 复制代码
[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", $null, "Machine")
Restart-Service Docker

实际切换均无效

lcow 方案

Github 地址:github.com/linuxkit/lc...

但该方案已经不再支持。

WSL 安装 Docker

既然已经安装的 WSL,那就可以在 linux 子系统中直接安装 docker 使用。

  1. 安装 WSL

该指令只支持 windows server 2022 版本,2019 及以下是不支持的,但可采用手动安装方式安装。

powershell 复制代码
wsl --install

若是指令只出现 howto 帮助信息,也采用手动安装方式吧。

具体可以参考上一篇文章Windows Server 2022 安装 WSL 子系统

  1. 更新 apt 索引
bash 复制代码
sudo apt-get update
  1. 安装必须的功能
bash 复制代码
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 添加 Docker 的官方 GPG 密钥
bash 复制代码
# 创建存放文件夹
sudo mkdir -p /etc/apt/keyrings
# curl下载密钥,并存放至刚创建的文件夹下
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. 设置存储库
bash 复制代码
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新 apt 索引,并安装 docker
bash 复制代码
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动 docker,并测试 docker 版本

出现 docker 版本信息表示已经安装成功啦

bash 复制代码
sudo service docker start
sudo docker version

此时就可以在windows server 2022上同时运行linux内核或windows内核的容器了。

博主最终效果如下图:

参考文章

Windows 容器文档

相关推荐
Championship.23.245 小时前
Linux 3.0 锁机制与故障排查详解
linux·运维·服务器
风123456789~6 小时前
【Linux专栏】ls 排除某个文件
linux·运维·服务器
其实防守也摸鱼7 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
玖玥拾8 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
土星云SaturnCloud9 小时前
边缘计算驱动绿氢生产过程智能寻优:电解槽级实时优化技术解析
服务器·人工智能·ai·边缘计算
Web极客码10 小时前
突破并发瓶颈:云端高性能架构如何赋能海外 AI Agent 矩阵的高效产出
服务器·人工智能·架构
一个有温度的技术博主10 小时前
【VulnHub 实战】DC-1 靶机渗透测试笔记(一):信息收集与主机发现
服务器·网络·笔记
pt104313 小时前
思科网络自动化-API常用数据编码格式(JSON/XML/YAML)课程与实践
linux·服务器·网络
ZXXstarstar13 小时前
2026年电池安全使用年限的量化决策:什么时间到期最需要替换?
linux·运维·服务器·电池
网络小白不怕黑14 小时前
httpd监控
linux·运维·服务器