windows server 2022 安装 Linux Docker

我的小站:Ean7的小站

为什么不选择windows安装

TimescaleDB 的一些高级工具(例如 TimescaleDB Toolkit)在 Windows 上支持有限,官方建议某些场景使用 Docker/Linux。

项目 Windows原生 Ubuntu Docker
安装 ⭐⭐⭐ ⭐⭐⭐⭐⭐
维护 ⭐⭐⭐ ⭐⭐⭐⭐
升级 稍麻烦 方便
备份迁移 一般 方便
工业服务器长期运行 可以 更常见

1. 打开服务器管理器

进入:

bash 复制代码
服务器管理器
 ↓
添加角色和功能
 ↓
下一步

选择:

bash 复制代码
基于角色或基于功能的安装

2. 选择服务器

选择当前 Windows Server。


3. 添加角色

勾选:

bash 复制代码
☑ Hyper-V

想·弹出:

bash 复制代码
需要添加管理工具?

选择:

bash 复制代码
添加功能

继续。

然后都默认设置,只是

默认存储

点击:

bash 复制代码
Hyper-V
 └── 默认存储

会看到两个路径:

虚拟硬盘文件位置

默认一般:

bash 复制代码
C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks

建议改:

例如:

bash 复制代码
D:\Hyper-V\Virtual Hard Disks

虚拟机配置文件位置

默认:

bash 复制代码
C:\ProgramData\Microsoft\Windows\Hyper-V

建议改:

bash 复制代码
D:\Hyper-V\Virtual Machines

最后点击安装后重启

1. 打开Hyper-V管理器

在搜索框中搜索Hyper-V管理器


2. 创建虚拟交换机

右侧:

bash 复制代码
虚拟交换机管理器

选择:

bash 复制代码
外部

绑定你的物理网卡。(注意一定要选对宿主机上的网卡)

例如:

bash 复制代码
Intel Ethernet Adapter

保存。


3. 新建虚拟机

右侧:

bash 复制代码
新建
 ↓
虚拟机

名称:

例如:

bash 复制代码
ubuntu-docker

代数:

选择:

bash 复制代码
第二代

内存:

你的服务器128GB:

建议:

bash 复制代码
16384 MB

即:

16GB

后面可调整。


网络:

选择:

bash 复制代码
刚才创建的外部交换机

硬盘:

建议:

bash 复制代码
200GB

动态扩展即可。


安装:

选择:

bash 复制代码
从可启动的映像文件安装操作系统

挂载

例如:

(下载地址)

bash 复制代码
ubuntu-22.04.5-desktop-amd64.iso

完成创建。


启动虚拟机:

bash 复制代码
启动

进入安装界面。

如果报错

bash 复制代码
The signed image's hash is not allowed (DB)

意思:

UEFI Secure Boot 拒绝加载当前 ISO 的启动文件。


解决方法

1. 关闭虚拟机

在 Hyper-V 管理器:

右键你的 Ubuntu 虚拟机:

bash 复制代码
关闭

2. 打开设置

右键:

bash 复制代码
Ubuntu虚拟机
  ↓
设置

3. 找到:

bash 复制代码
安全

取消:

bash 复制代码
☐ 启用安全启动

安装时一直默认,直到最后

设置用户名和密码

以及选择安装openssh


网络:

一般自动:

bash 复制代码
DHCP

安装后查看:

bash 复制代码
ip addr

例如:

bash 复制代码
192.168.0.20

记录。


创建用户:

例如:

bash 复制代码
用户名:
docker

密码:
******

建议勾选:

bash 复制代码
Install OpenSSH Server

这样以后SSH管理。

Hyper-v的终端太难用了,使用其他的ssh远程终端


SSH进入Ubuntu:

先更换镜像源

bash 复制代码
sudo nano /etc/apt/sources.list



deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

更新:

bash 复制代码
sudo apt update
sudo apt upgrade -y

1. 添加阿里云 Docker GPG 密钥

bash 复制代码
sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

检查:

bash 复制代码
ls -l /etc/apt/keyrings/docker.gpg

应该存在。


2. 添加 Docker 软件源

bash 复制代码
sudo tee /etc/apt/sources.list.d/docker.list <<EOF
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable
EOF

查看:

bash 复制代码
cat /etc/apt/sources.list.d/docker.list

应该显示:

bash 复制代码
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable

3. 更新 apt

bash 复制代码
sudo apt update

正常应该看到:

bash 复制代码
Hit: https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease

如果看到:

bash 复制代码
Err: https://download.docker.com

说明旧源还存在,需要删除:

bash 复制代码
sudo rm -f /etc/apt/sources.list.d/docker.sources

或者:

bash 复制代码
ls /etc/apt/sources.list.d/

看看有没有其他 docker 源。


4. 安装 Docker

bash 复制代码
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5. 启动 Docker 服务(建议加)

安装完成后:

bash 复制代码
sudo systemctl enable docker
sudo systemctl start docker

查看:

bash 复制代码
systemctl status docker

应该:

bash 复制代码
Active: active (running)

6. 测试 Docker

bash 复制代码
sudo docker run hello-world

成功会看到:

bash 复制代码
Hello from Docker!
This message shows that your installation appears to be working correctly.

如果在 拉取镜像阶段失败:

错误:

bash 复制代码
failed to resolve reference "docker.io/library/hello-world:latest"

dial tcp 199.59.148.7:443: connect: connection refused

说明:

  • ✅ Docker daemon 正常运行
  • ✅ Docker 命令正常
  • ❌ 访问 Docker Hub (registry-1.docker.io) 被拒绝

这是国内访问 Docker 官方服务的问题。


解决方法:配置 Docker 镜像加速器

编辑 Docker 配置:

bash 复制代码
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

填入:

bash 复制代码
{
 "registry-mirrors": [
   "https://docker.m.daocloud.io",
   "https://dockerproxy.com",
   "https://mirror.ccs.tencentyun.com"
 ]
}

保存。


重启 Docker:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

查看是否生效:

bash 复制代码
docker info

找到:

bash 复制代码
Registry Mirrors:
https://docker.m.daocloud.io/
https://dockerproxy.com/
https://mirror.ccs.tencentyun.com/

再次测试:

bash 复制代码
sudo docker run hello-world

正常会输出:

bash 复制代码
Hello from Docker!
This message shows that your installation appears to be working correctly.

7. (可选)免 sudo 使用 Docker

默认每次需要:

bash 复制代码
sudo docker ps

如果希望普通用户直接:

bash 复制代码
docker ps

执行:

bash 复制代码
sudo usermod -aG docker $USER

然后重新登录:

bash 复制代码
exit

重新 SSH 登录即可。

验证:

bash 复制代码
docker ps
相关推荐
xiaoye-duck1 小时前
《Linux 网络编程》深入理解 IP 协议(二):网段划分、私有 IP 与 NAT 地址转换
linux·网络·ip
zx_741484812 小时前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Zenova EdgeOS2 小时前
Linux dmesg 工业边缘实战:内核日志过滤、持久化与故障定位
linux·运维·边缘计算·工业边缘·dmesg·内核日志
九皇叔叔2 小时前
K8S 资源菜单
docker·容器·kubernetes·k8s
金士顿2 小时前
System.Text.Json Source Generator 深度解析:为什么 Native AOT 不喜欢反射
linux·asp.net core·arm64·net·native aot
wdfk_prog3 小时前
ROS教程08:从 TransportTCP::connect() 追到 TCPROS Connection Header、序列化与 Socket 数据传输
运维·缓存·docker·容器·ros
做运维的阿瑞3 小时前
Python 标准库汇总:分类速览与常用模块清单
linux·运维·python
kakakahahahaha3 小时前
Windows Steam 游戏存档在哪里?定位和恢复排查流程
windows·其他·电脑·笔记本电脑·内容运营·软件需求
Xy-unu3 小时前
Windows 开启外接显示器 HDR 后外接显示器无信号、无法扩展模式故障记录
windows
百万蹄蹄向前冲3 小时前
密码都对Node.js却连不上Linux数据库
linux·mysql