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 的手动安装步骤
1 | # 查看当前版本 |
docker on Windows
注意:用命令行运行来修改默认安装路径(重命名install.exe),参考教程
1 | .\Docker.exe install --installation-dir="E:\commonSoftware\Docker" |
安装完之后运行设置
- 开启开机启动
- 在Resources里修改image保存路径
使用问题
image下载失败
网络问题,clash开TUN模式
read-only file system
1 | Error response from daemon: container df6ee73697883e8e09edd65404e1fcc19a2b4bfb49212c754a8b3ef9741d7bda: driver "overlay2" failed to remove root filesystem: unlinkat /var/lib/docker/overlay2/475c350b02589ce2cb5ef30f0619ed3aeaba409c56d87191b8cbbd00ef618fe3: read-only file system |
需要管理员运行docker
C盘没空间
WSL还是超级占用C盘
端口问题
1 | (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。
1 | (finance_env) PS D:\PowerShell\github\AQTP> netsh interface ipv4 show excludedportrange protocol=tcp |
示例:
安装 PostgreSQL 15 + TimescaleDB
1 | docker run -d ` |
参考文献
https://blog.csdn.net/Antarctic_Bear/article/details/123489609