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 容器,就像它们是本地应用程序一样。
方法(2),Docker Toolbox的安装配置方法,参考文档《K8S入门篇》。
方法(3),虚拟机中安装使用Docker的方法,和Linux中安装使用Docker的方法没有区别,参考文档《Docker入门篇》。
本文中,我们学习方法(1)Docker Desktop安装配置方法,以及方法(4)Win10中安装Linux并在Linux中安装Docker的方法。
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。
参考文档:
安装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 |
安装配置Docker Desktop
安装Docker
下载Docker Desktop for Windows,双击安装。
安装时勾选使用WSL2 backend,在Windows上运行一个真正的Linux环境,但是无需传统虚拟机或双系统的额外负担,性能更好。
进入根路径的方法
方法一:打开文件资源管理器,点击左侧Linux
方法二:Windows资源管理器路径中输入
1 | \\wsl.localhost\docker-desktop-data |
使用示例
以安装MySQL为例:
1 | docker pull mysql:8.0.28 |
注意:这里挂载宿主机目录使用的是Win10中的目录D:\DockerData\mysql
,方便查找文件。
如果依然使用/opt/mysql
,那么文件很难找到(我没找到,捂脸)。
更多内容参考文档:《使用Docker安装配置MySQL》
更改Docker数据盘到D盘
参考文档:WSL2下修改Docker Desktop镜像存放路径
WSL发行版默认安装在C盘,在%LOCALAPPDATA%/Docker/wsl
目录。
Docker的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx
中。
更改Docker数据盘方法:
1、关闭docker
2、关闭所有linux发行版
1 | wsl -l --all |
3、导出docker-desktop-data到D盘(原有的docker images不会一起导出)
只需要迁移docker-desktop-data一个发行版就行,docker-desktop不用管,它占用空间很小。
手动创建目录D:\DockerData\docker-desktop-data\
,然后执行导出命令
1 | wsl --export docker-desktop-data D:\DockerData\docker-desktop-data\docker-desktop-data.tar |
4、注销 docker-desktop-data
1 | wsl --unregister docker-desktop-data |
5、导入 docker-desktop-data
1 | wsl --import docker-desktop-data D:\DockerData\docker-desktop-data\ D:\DockerData\docker-desktop-data\docker-desktop-data.tar --version 2 |
6、启动docker
Win10中安装Ubuntu18
参考文档:
安装Ubuntu18
打开Microsoft Store,搜索Ubuntu,选择Ubuntu18版本,获取
或者直接打开Ubuntu 18.04 LTS,获取
首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 发行版创建用户帐户和密码。
设置WSL2默认发行版
1 | wsl -l -v |
设置默认WSL2默认发行版之后,就不用使用指定-d
指定发行版了。
登录Ubuntu18
方法一:搜索Ubuntu,打开Ubuntu 18.04.5 on Windows,会直接登录到发行版内部
方法二:PowerShell中执行wsl命令登录进入发行版内部
1 | wsl -l -v |
PS:docker-desktop-data 发行版是不支持 wsl -d 登录的。
磁盘路径说明
C盘对应Ubuntu18路径/mnt/c
,D盘对应Ubuntu18路径/mnt/d
配置SSH登录
参考文档:Win10安装Ubuntu
配置远程登录
Ubuntu18支持SSH登录了,但是只能从Win10宿主机上登录,相同局域网的其他主机还不能访问到Ubuntu18。
本节配置使局域网其他主机也可以访问到Ubuntu18。
参考文档:
固定IP地址(无效)
每次重启WSL2 Ubuntu18重启后,IP地址都会发生变化,无法固定路由规则,因此需要配置固定IP。
1、查看当前IP配置
1 | ifconfig |
查看到IP地址为172.29.132.34,网关为172.29.128.1(Win10虚拟网卡的IP)。
2、编辑网卡配置文件
1 | vim /etc/netplan/01-network-manager-all.yaml |
如下修改:
1 | # Let NetworkManager manage all devices on this system |
3、使配置生效
1 | netplan apply |
报错:System has not been booted with systemd as init system (PID 1). Can’t operate.
固定IP地址(有效)
参考文档:
1、编写 setip.bat 脚本
1 | @echo off |
2、以管理员身份运行脚本
3、登录到Ubuntu18,查看IP
配置路由规则
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 命令
关闭防火墙
搜索“防火墙”,选择Windows Defender 防火墙,启用或关闭Windows Defender防火墙,关闭防火墙。
或者操作开放端口,参考文档:WIN10电脑怎么开放可访问端口
关闭防火墙之后,使用局域网内的其他主机尝试远程登录Ubuntu18进行测试。
开机自动初始化
1、编写Win10开机自启动脚本 ubuntu18-init.bat
功能包括:自动设置固定IP地址、配置路由规则、启动SSH
1 | @echo off |
2、ubuntu18-init.bat 脚本放入指定目录
脚本如果放入启动目录中,开机后会自动执行C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
但是,因为我们需要以管理员身份执行,所以放入目录C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
3、创建快捷方式
右键 ubuntu18-init.bat,创建快捷方式,放入到 Startup 目录中
右键快捷方式,属性,高级,勾选用管理员身份运行。
4、重启机器测试
重启机器后,打开任务管理器,详细信息,启动,可以看到ubuntu18-init.bat被调用了。
但是,并没有生效。
开机自动初始化v2.0
1、打开任务计划程序
按键盘上的Windows + R
键以打开运行,然后键入taskschd.msc
,回车。
2、创建任务
点击创建任务,进行任务配置。
常规参数:
- 名称:ubuntu18-init
- 勾选不管用户是否登录都要运行
- 勾选不存储密码。该任务将只有访问本地计算机资源的权限。
- 勾选使用最高权限运行。
触发器,新建,开始任务选择启动时,延迟任务时间选择1分钟,勾选已启用,确定。
操作,新建,操作选择启动程序,程序或脚本通过浏览选中ubuntu18-init.bat,添加参数空白,起始于空白(在哪个路径中执行),确定。
3、查看任务
右键任务计划程序库,刷新,即可看到新增的任务。
4、重启机器测试
参考文档:Windows开机启动bat文件
Ubuntu18中安装Docker
安装方法参考文档:《Docker入门篇》
启动Docker
使用service命令启动Docker
1 | service docker start |
使用示例
以安装MySQL为例:
1 | docker pull mysql:8.0.28 |
更多内容参考文档:《使用Docker安装配置MySQL》
更改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 |