Windows server 2022安装配置——安装docker,内核切换解决方案
  2HEoRN7cP1l9 2023年11月02日 41 0

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 版本

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 安装版本,出现版本信息表示已经安装成功

docker version

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

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

重启系统

Restart-Computer -Force # 手动重启也行

安装可视化 UI

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

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 之前的切换指令:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")
Restart-Service Docker

指令切换回 windows 内核:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", $null, "Machine")
Restart-Service Docker

实际切换均无效

lcow 方案

Github 地址:https://github.com/linuxkit/lcow

但该方案已经不再支持。

image.png

WSL 安装 Docker

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

  1. 安装 WSL

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

wsl --install

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

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

  1. 更新 apt 索引
sudo apt-get update
  1. 安装必须的功能
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. 添加 Docker 的官方 GPG 密钥
# 创建存放文件夹
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. 设置存储库
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动 docker,并测试 docker 版本

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

sudo service docker start
sudo docker version

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

博主最终效果如下图:

image.png

参考文章

Windows 容器文档

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  bifOjSxj34Bv   2023年12月07日   29   0   0 nginxDockerdockernginx
2HEoRN7cP1l9