个人学习所用,有错误和不足之处欢迎指出和补充。
官方手册供参考:https://docs.docker.com/desktop/windows/
一:什么是Docker?
以下是百科的解释:
Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
个人的理解:
1.可以快速搭建起程序运行所需要的环境。
2.可以打包程序和运行环境,避免因为缺乏某些库、或是环境变量设置的问题等导致程序无法运行。也就是说,解决了为什么在我的电脑上可以运行而在其他人电脑上不行的问题。
3.Docker只有需要的环境,比虚拟机占用的资源更少,操作也比虚拟机更简单。
二:安装Docker
(一)安装WSL2
WSL,即Windows Subsystem on Linux,中文叫“适用于 Linux 的 Windows 子系统”。可以在windows里,直接启动一个linux系统。因为docker依赖linux内核,只能在linux下使用,windows就需要安装linux虚拟机来运行,而微软已经在win10内置了一个轻量级虚拟机,WSL2 便是运行在虚拟机上的一个完整的 linux 内核,所以需要利用WSL2安装docker。
微软要求 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11
设置->更新和安全->操作系统内部版本信息
下载wsl2需要的linux内核:
网址: https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel
点击下载最新的更新包,下好后双击运行安装即可。
打开系统虚拟机平台和WSL
控制面板->程序->启用或关闭Windows功能->向下滑
将WSL2设置为默认版本:管理员身份运行Windows PowerShell,运行下面的命令。
wsl --set-default-version 2
(二)安装Docker Desktop for Windows
网上有的教程是先在WSL2里面安装了linux,然后再装docker。我暂时还没有很多实际使用需求,所以我认为应该直接安装windows版就可以了。
官网下载安装程序:https://www.docker.com/get-started/
下好后直接双击运行安装即可(建议安装时不要使用校园网,不然有可能会出现一些问题,我放在后面解释)。
设置里勾选基于wsl2的引擎(我的默认勾选了)
用PowerShell运行 wsl -l -v会发现已经创建了两个发行版了
到这儿安装就完成啦
(三)更改镜像源
在国内从官方的DockerHub拉取镜像经常会比较感人,所以我们需要利用国内的镜像源或者加速器
科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}
也可以用阿里云,需要到阿里云官网获取。
当配置某一个镜像源地址之后,若发现拉取不到镜像,切换一个地址就行。
(四)更改数据存储位置
Windows下的docker默认安装在C盘,所以为了拯救我们可怜的C盘,就需要把数据存储到其他盘。
1.停止docker服务
2.备份数据到另一个文件夹
PowerShell运行
wsl --export docker-desktop-data "E:\DockerData\docker-desktop-data.tar"
3.删除原有数据
wsl --unregister docker-desktop-data
4.更改数据存储盘并恢复数据
wsl --import docker-desktop-data "E:\DockerData" "E:\DockerData\docker-desktop-data.tar" --version 2
即将备份数据导入到新的虚拟盘,且指定虚拟盘的存放路径为E:\DockerData,导入完成后在该目录下会存在一个ext4.vhdx的虚拟磁盘路径
然后启动docker就可以啦
此处的操作借鉴于一位大佬,原文地址:https://www.cnblogs.com/shanyou/p/14284309.html
三:Hyper-v与校园网的纠缠
在装好docker正准备体验一下的时候,可爱的校园网上来就给我一个大嘴巴子:
它似乎还很“贴心”地告诉了我断网的原因是Hyper-V的网卡和它产生了冲突。
但是为了网络,也想保留Hyper-V(所有的安装教程都会告诉你docker的运行依赖于它)的同时,想着是否能删除此网关来解决这个问题,在尝试了网上的在Hyper-V中移除或是卸载,甚至是删除了注册表,但是这个网关还是会在重启或者使用Hyper-V服务的时候恢复。
网上关于这个问题的解决方案也极少(难道就我一个人遇到了),我在网上搜索说docker依赖于Hyper-V,WSL2也依赖于Hyper-V,所以我一直觉得Hyper-V是绝对核心不可缺少。但在多番尝试后,我发现docker
单独依赖WSL能启动,但是功能不全
单独依赖Hyper-V能使用,但是会断网
单独依赖WSL2能使用,也不会断网
而在控制面板中看到使用的网卡为:
虽然上面也写着Hyper-V,但是应该就是个具有精简功能的虚拟机,各种尝试、重启后发现当手动禁用这个网卡后,校园网能正常连接了,docker也能运行。
本以为问题解决了,结果发现在恢复电脑后docker又不能运行了(重启网卡后能恢复正常,但校园网又连不了了),而且在每次重启电脑后这个网卡都会重启。每次重启电脑都要手动关闭网卡并且每隔一段时间重启一下网络确实也挺让人头疼的。
好吧,折腾了这么多,并没有找到非常有效的解决办法,实在不行,以后去linux虚拟机里面用吧。
版权归原作者 m0_68988603 所有, 如有侵权,请联系我们删除。