1. Win10安装配置Docker的方法
在Win10中安装配置Docker,有四种方法:
(1)在Win10上安装Docker Desktop。Docker Desktop 利用了 Windows 10 的 Hyper-V 虚拟化技术,来创建一个轻量级的 Linux 虚拟机(VM),并在其中运行 Docker 引擎和容器。这样,用户就可以在 Windows 上享受到 Linux 上的 Docker 功能和性能。
(2)在Win10上安装Docker Toolbox。Docker Toolbox 是一种适用于不支持 Hyper-V 的旧版 Windows 系统的替代方案,它使用了 Oracle VirtualBox 来创建一个 Linux VM,并在其中运行 Docker 引擎和容器。Docker Toolbox 需要用户手动配置一些网络和存储设置,以便让 Windows 和 VM 之间进行通信和数据交换。
(3)使用VirtualBox等虚拟化工具启动一个Linux虚拟机(与方法(2)类似),然后在虚拟机中安装使用Docker。
(4)在Win10上安装一个WSL2 Linux系统,然后在Linux系统中安装Docker。
无论哪种方法,想要在 Windows 上运行 Docker,都需要一个 Linux VM 来托管 Docker 引擎和容器,因为 Docker 是基于 Linux 内核的技术,而不能直接在 Windows 内核上运行。但是,用户可以通过命令行或图形界面来操作和管理 Docker 容器,就像它们是本地应用程序一样。
方法(1),Docker Desktop的安装配置方法,参考文档《Win10安装配置Docker Desktop》
方法(2),Docker Toolbox的安装配置方法,参考文档《K8S入门篇》。
方法(3),虚拟机中安装使用Docker的方法,和Linux中安装使用Docker的方法没有区别,参考文档《Docker入门篇》。
本文中,我们学习方法(4),在Win10中安装Linux,并在Linux中安装Docker。
2. WSL2简介
WSL全拼是Windows Subsystem for Linux,WSL2是适用于Linux的Windows子系统体系结构的一个新版本。
WSL2是基于Hyper-V虚拟化技术的,它在Windows上启动一个真正的Linux系统,使用一个定制的Linux内核。这个内核支持完整的Linux系统调用,所以可以在WSL2中运行任何Linux应用程序。
WSL2和Windows之间相当于两台处于一个网络中但分别独立的主机,我们称这个网络为WSL网络。我们可以在Windows主机上使用ipconfig命令来查看Windows主机在WSL网络中的地址,相应地,在WSL2中你可以使用ifconfig命令来查看WSL2在WSL网络中的地址2。这样我们就可以在两个系统之间进行网络通信,比如访问Web服务或数据库等。
WSL2还保留了WSL1的无缝集成特性,比如我们可以从Windows资源管理器中访问Linux文件系统,或者从Linux终端中运行Windows应用程序等。我们还可以通过wsl命令来管理和配置WSL2。
参考文档:
3. 安装WSL2
1、打开PowerShell
搜索PowerShell,以管理员身份运行
2、启用适用于 Linux 的 Windows 子系统
1 | dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart |
3、启用虚拟机功能
1 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
4、下载 Linux 内核更新包
下载Linux 内核更新包,双击安装。
5、将WSL2设置为默认版本
1 | wsl --set-default-version 2 |
4. Win10中安装Ubuntu18
参考文档:
4.1. 安装Ubuntu18
打开Microsoft Store,搜索Ubuntu,选择Ubuntu18版本,获取
或者直接打开Ubuntu 18.04 LTS,获取
首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 发行版创建用户帐户和密码。
4.2. 设置WSL2默认发行版
1 | wsl -l -v |
设置默认WSL2默认发行版之后,就不用使用指定-d
指定发行版了。
4.3. 登录Ubuntu18
方法一:搜索Ubuntu,打开Ubuntu 18.04.5 on Windows,会直接登录到发行版内部
方法二:PowerShell中执行wsl命令登录进入发行版内部
1 | wsl -l -v |
PS:docker-desktop-data 发行版是不支持 wsl -d 登录的。
4.4. 磁盘路径说明
C盘对应Ubuntu18路径/mnt/c
,D盘对应Ubuntu18路径/mnt/d
4.5. 配置SSH登录
参考文档:Win10安装Ubuntu
4.6. 配置远程登录
Ubuntu18支持SSH登录了,但是只能从Win10宿主机上登录,相同局域网的其他主机还不能访问到Ubuntu18。
本节配置使局域网其他主机也可以访问到Ubuntu18,操作步骤如下:
1、固定Ubuntu18的IP地址
2、配置端口转发,发往Win10特定端口的请求转发给Ubuntu18
3、关闭Win10防火墙
参考文档:
4.6.1. 固定IP地址
每次重启WSL2 Ubuntu18重启后,IP地址都会发生变化,无法固定路由规则,因此需要配置固定IP。
参考文档:
1、编写 setip.bat 脚本
1 | @echo off |
2、以管理员身份运行脚本
3、登录到Ubuntu18,查看IP和网关
1 | ifconfig |
正常的话,可以查看到IP地址为172.29.132.34,网关为172.29.128.1(Win10虚拟网卡的IP)。
注意:不能使用常规的在Ubuntu18中配置固定IP的方法。
1、编辑网卡配置文件
1 | vim /etc/netplan/01-network-manager-all.yaml |
如下修改:
1 | # Let NetworkManager manage all devices on this system |
2、使配置生效
1 | netplan apply |
会报错:System has not been booted with systemd as init system (PID 1). Can’t operate.
4.6.2. 配置端口转发
Win10中以管理员身份打开PowerShell,执行
1 | netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.29.132.34 connectport=22 |
参考文档:Netsh interface portproxy 命令
配置路由规则之后,本地访问本机IP:22
端口,会自动转发到172.29.132.34:22
。
如果局域网中其他主机也想要访问到172.29.132.34:22
,那么本机还需要关闭局域网防火墙(专有网络防火墙)。
4.6.3. 关闭防火墙
搜索“防火墙”,选择Windows Defender 防火墙,启用或关闭Windows Defender防火墙,关闭防火墙。
或者操作开放端口,参考文档:WIN10电脑怎么开放可访问端口
关闭防火墙之后,使用局域网内的其他主机尝试远程登录Ubuntu18进行测试。
5. 配置开机自启动
5.1. 配置开机自启动概述
配置开机自启动的常用方法包括:
- Startup目录中放入快捷方式,快捷方式可能链接到bat脚本或者exe程序
- Startup目录中放入vbs脚步
- 任务计划程序中添加要执行的程序,配置触发器
- 使用第三方配置开机自启动的程序,例如NSSM和FireDaemon
5.2. 启动ssh
参考文档:
方法一:使用 vbs 脚本
1、创建 vbs 脚本
在 Windows 中,开始-运行,输入shell:startup
,进入Startup目录
创建 ubuntu18.vbs 脚本,内容为:
1 | Set ws = CreateObject("Wscript.Shell") |
2、重启机器测试
重启机器后,打开任务管理器,详细信息,启动,可以看到 ubuntu18.vbs 被调用了。
方法二:使用快捷方式
1、创建快捷方式
在 Windows 中,开始-运行,输入shell:startup
,进入Startup目录
新建快捷方式,起始位置为D:\Windows\System32
,目标为wsl.exe -d Ubuntu-18.04 -u root /etc/init.d/ssh start
2、重启机器测试
重启机器后,打开任务管理器,详细信息,启动,可以看到 wsl.exe 被调用了。
5.3. 配置固定IP地址
方法一:使用启动目录
1、编写Win10开机自启动脚本 ubuntu18-init.bat
功能包括:自动设置固定IP地址、配置路由规则
1 | @echo off |
2、创建快捷方式
右键 ubuntu18-init.bat,创建快捷方式。
右键快捷方式,属性,高级,勾选用管理员身份运行。
3、设置开机自启动
ubuntu18-init.bat 的快捷方式,放入到 Startup 目录中,开机后会自动执行它。
win+R
打开运行,输入shell:startup
,进入Startup目录。
Startup 目录全路径为 C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
4、重启机器测试
重启机器后,打开任务管理器,详细信息,启动,可以看到 ubuntu18-init.bat 被调用了。
PS:这个设置开机自启动的方法,不止适用于 bat 脚本,对于常见的应用程序也是可行的,比如QQ、微信等。
方法二:使用计划任务
参考文档:Windows开机启动bat文件
1、打开任务计划程序
按键盘上的Windows + R
键以打开运行,然后键入taskschd.msc
,回车。
2、创建任务
点击创建任务,进行任务配置。
常规参数:
- 名称:ubuntu18-init
- 勾选不管用户是否登录都要运行
- 勾选不存储密码。该任务将只有访问本地计算机资源的权限。
- 勾选使用最高权限运行。
触发器,新建,开始任务选择启动时,延迟任务时间选择1分钟,勾选已启用,确定。
操作,新建,操作选择启动程序,程序或脚本通过浏览选中ubuntu18-init.bat,添加参数空白,起始于空白(在哪个路径中执行),确定。
3、查看任务
右键任务计划程序库,刷新,即可看到新增的任务。
4、重启机器测试
手动测试计划任务:
1、在powershell或者cmd中执行计划任务中定义的命令和参数
2、单击计划任务,点击右侧开始
6. Ubuntu18中安装Docker
安装方法参考文档:《Docker入门篇》
6.1. 启动Docker
使用service命令启动Docker
1 | service docker start |
6.2. 使用示例
以安装MySQL为例:
1 | docker pull mysql:8.0.28 |
更多内容参考文档:《使用Docker安装配置MySQL》
7. 更改Ubuntu18数据盘到D盘
参考文档:WSL2下修改Docker Desktop镜像存放路径
1、关闭Ubuntu18
1 | wsl -l --all |
2、导出Ubuntu18备份文件到D:\Ubuntu18
(需要提前创建目录)
1 | wsl --export Ubuntu-18.04 D:\Ubuntu18\Ubuntu-18.04.tar |
3、注销Ubuntu18
1 | wsl --unregister Ubuntu-18.04 |
5、导入Ubuntu18
1 | wsl --import Ubuntu-18.04 D:\Ubuntu18\ D:\Ubuntu18\Ubuntu-18.04.tar --version 2 |
6、启动Ubuntu18
1 | wsl -d Ubuntu-18.04 |
8. 服务探活
8.1. 交互式探活
1 | @echo off |
8.2. 一键探活
假设 Ubuntu-18.04 中安装了MySQL和Redis,想要在Win10中一键探活,那么可以使用下面的脚本。
1 | @echo off |