Docker On Win10
简介¶
- WSL 2 是对WSL基础体系结构的一次重大改造,它使用虚拟化技术和 Linux 内核来实现其新功能。
- docker是基于linux内核运行
- WSL 2 加入了linux内核为docker在windows上运行铺平了道路
系统要求¶
开启虚拟化 + Hyper-V¶
- BIOS开启虚拟化
- 查看是否开启:任务管理器 -> 性能 -> CPU 虚拟化:开启
- Control Panel(控制面板) -> Programs and Features(程序和功能) -> Turn Windows Features on or off(启用或关闭Widnows功能)勾选三项
- Windows Hypervisor Platform(Windows虚拟机监控程序平台)
- Hyper-V
- 虚拟机平台
- 管理员Powershell运行
bcdedit /set hypervisorlaunchtype auto - 重启
WSL 2¶
参考教程安装 WSL和旧版 WSL 的手动安装步骤
# 查看当前版本
❯ wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 1
❯ wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间。
操作成功完成。
E:/PowerShell via v14.17.3 via 🐍 v3.9.7 took 59s
❯ wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 2
docker on Windows¶
注意:用命令行运行来修改默认安装路径(重命名install.exe),参考教程
安装完之后运行设置 * 开启开机启动 * 在Resources里修改image保存路径使用问题¶
image下载失败¶
网络问题,clash开TUN模式
read-only file system¶
Error response from daemon: container df6ee73697883e8e09edd65404e1fcc19a2b4bfb49212c754a8b3ef9741d7bda: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/475c350b02589ce2cb5ef30f0619ed3aeaba409c56d87191b8cbbd00ef618fe3: read-only file system
C盘没空间¶
WSL还是超级占用C盘
端口问题¶
(HTTP code 500) server error - ports are not available: exposing port TCP 0.0.0.0:5432 -> 127.0.0.1:0: listen tcp 0.0.0.0:5432: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Windows 系统(特别是启用了 Hyper-V、WSL2 或 Docker Desktop 时)会动态保留一段端口范围供内部网络服务使用。一旦端口被列入这个“排除范围(Excluded Range)”,即使没有任何程序正在监听该端口,其他应用程序(包括 Docker)也无法绑定它,从而报错 access permissions。
(finance_env) PS D:\PowerShell\github\AQTP> netsh interface ipv4 show excludedportrange protocol=tcp
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
5314 5413
5414 5513
5601 5700
5701 5800
5801 5900
6001 6100
6101 6200
6201 6300
6342 6441
6503 6602
6603 6702
6726 6825
6826 6925
50000 50059 *
* - Administered port exclusions.
示例:¶
安装 PostgreSQL 15 + TimescaleDB
docker run -d `
--name autotrader-db `
-p 5432:5432 `
-e POSTGRES_PASSWORD=yahaha `
-v H:/AutoTraderDB:/var/lib/postgresql/data `
timescale/timescaledb:latest-pg18
docker run -d `
--name autotrader-db-bk `
-p 5555:5432 `
-e POSTGRES_PASSWORD=yahaha `
-v H:/AutoTraderDB:/var/lib/postgresql/data `
timescale/timescaledb:latest-pg18
磁盘要在docker启动前插好,不然wsl识别不到移动磁盘
# 没插好前, wsl会分配临时空间
(finance_env) PS D:\PowerShell\github\AQTP> docker run --rm -v /h/AutoTraderDB:/data alpine df -h /data
Filesystem Size Used Available Use% Mounted on
/dev/sdd 136.0M 112.5M 12.9M 90% /data
# 插好后
(finance_env) PS D:\PowerShell\github\AQTP> docker run --rm -v /h/AutoTraderDB:/data alpine df -h /data
Filesystem Size Used Available Use% Mounted on
H:\ 931.1G 602.1G 329.0G 65% /data
参考文献¶
https://blog.csdn.net/Antarctic_Bear/article/details/123489609