前言
Docker 是一组平台即服务(PaaS) 产品,它使用操作系统级虚拟化以称为容器的包形式交付软件。托管容器的软件称为Docker Engine -- Wiki (Docker)
Docker 的最佳环境是Linux, 但在实际工作场景中,我们并不能总是渴求你的公司能给你一台Linux,如果恰巧你拿到的 Windows 还带有虚拟化的能力,那是最好不过的了,你可以使用基于 Hyper-V 的全功能的 Docker, 但如果你很不凑巧,既没有拿到Linux, 也没有得到 Windows 的虚拟化,那么本篇将帮助你在没有启用虚拟化的 Windows 中得到 90% 的 Docker 能力。
系统要求
只要你的操作系统版本高于以下系统,那么你就可以在你的环境中搭建 Docker
- Windows Server 2016
- Windows 10 20H2
系统的不同的发行版本例如 Standard
Enterprise
Datacenter
Web
Core only
都不会影响你部署Docker , 请尽情选择版本,在对Windows 进行最基本的配置之后,我们将全程使用 SSH Bash
操作, 不会再对系统进行更多的操作,所以桌面不是必须的
本篇示例基于 Windows Server 2022
Step 1 - 安装 Git
Git 的网站在这里,本文并不想做过多的解释。
下一步...
下一步......
下一步.........
恭喜你完成了 Git 的安装
Step 2 - 安装 OPEN SSH
安装
我们希望尽可能的实现于 Linux 下的 Docker 一致的体验,那么Powershell 自然不是我们的首选。使用 Powershell 执行下面这段命令为你的服务器启用 ssh 的能力
#安装 OpenSSH 客户端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
#安装 OpenSSH 服务端
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 启动 OpenSSH 服务
Start-Service sshd
# 将 OpenSSH 服务设置为开机启动
Set-Service -Name sshd -StartupType 'Automatic'
# 配置防火墙允许 22 端口的连接
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
默认情况下Windows的 openssh 服务端不允许
含有管理员权限的账户
通过常规方式添加连入的 SSH 公钥,你需要将你的公钥添加到__PROGRAMDATA__/ssh/administrators_authorized_keys
文件中,如果你想去掉这个规则,需要注释%programdata%\ssh\sshd_config
文件中的Match Group administrators
内容
配置默认命令行程序
我们将之前安装的 Git Bash
设置为默认的SSH命令行工具
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\bin\bash.exe" -PropertyType String -Force
Step 3 - 安装 Docker CE
安装 Docker 是这里面最简单的一步了,只需要简单执行它
注意,此安装脚本可能会重启你的电脑,请保存好资料再执行它
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
Hello, World!
现在我们可以直接使用 ssh 连接我们的 Windows. 来体验一下基于 Windows Continer 的 Docker
第一个 Image
docker run -d --name hello-world -it mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd.exe
docker ps
芜湖~
结语
Docker 在 Windows 下已经走过了 9 年时间, 然而它仍然有不少值得注意的问题。
本文撰写时,我就遇到了一个有关于 Windows Continer 版本的 Docker 无法正确处理信号的问题
它导致我们在执行 docker stop [ContinerID]
时可能会杀掉你的程序而不触发正确的关机指令
虽然坑还有很多,期待我的下一篇内容
这篇博客介绍了如何在 Windows 上使用 Windows Container 使用 Docker。作者提供了清晰的步骤和代码示例,使得读者可以轻松地在 Windows 上部署 Docker。作者还提到了 Docker 在 Windows 下的一些问题,这对读者来说是非常有用的。总体而言,这篇博客非常实用,适合初学者和有经验的用户。
然而,我认为这篇博客可以进一步改进。作者可以在介绍 Docker 时提供更多的详细信息,例如 Docker 的优点和缺点,以及 Docker 在不同操作系统中的使用情况。此外,作者可以在介绍每一步时提供更多的解释,以帮助读者更好地理解每一步的目的和意义。最后,如果有可能,作者可以提供更多的示例和案例,以便读者更好地了解 Docker 在 Windows 上的使用。
总体而言,这篇博客是一篇非常有用的文章,可以帮助读者在 Windows 上使用 Docker。作者可以通过提供更多的解释和示例来进一步改进这篇博客。
点赞,太需要了