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 容器文档

相关推荐
Antonio9151 小时前
【音视频】HLS简介与服务器搭建
运维·服务器·音视频
kfepiza2 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
无妄-20242 小时前
软件架构升级中的“隐形地雷”:版本选型与依赖链风险
java·服务器·网络·经验分享
R.X. NLOS2 小时前
VS Code远程开发新方案:使用SFTP扩展解决Remote-SSH连接不稳定问题
运维·服务器·ssh·debug·vs code
轩情吖6 小时前
Qt的第一个程序(2)
服务器·数据库·qt·qt creator·qlineedit·hello world·编辑框
世事如云有卷舒6 小时前
Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
linux·服务器·gitlab
Little-Hu7 小时前
QML TextEdit组件
java·服务器·数据库
riverz12277 小时前
TCP backlog工作机制
服务器·网络·tcp/ip
2401_858286117 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
c30%009 小时前
内网渗透——红日靶场五
运维·服务器