目录
![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/3171762952c59c9c03ec57ef25961c54.png)
一 什么是Ducker
Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。
Docker容器与虚拟机类似,但二者在原理上不同。容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。另外,Docker也为容器提供更强的业界的隔离兼容。
二 安装Ducker
1 window for Linux子系统环境搭建
1.1 打开系统虚拟机平台和WSL(适用于Linux的window子系统)
控制面板->程序->启用或关闭Windows功能->向下滑 勾选以下两项功能。
在安装完成后系统会提示你重启计算机
开启以上功能后查看windows相关配置
打开任务管理器(CTRL+ALT+DELETE)-> 选择性能 -> CPU ->虚拟化,确认是否已启用
1.2安装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
设置->更新和安全->操作系统内部版本信息查询操作系统版本信息
1.3为什么用wsl2,不用wsl1
1.4 下载集成支持linux内核的wsl2
网址: https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel
点击下载最新的更新包,下好后双击运行安装即可。这时你的wsl就为wsl2了
1.5 设置WSL默认版本
打开cmd输入以下命令,指定wsl版本
wsl --set-default-version 2
二、安装Ubuntu20.04LTS
1 打开Microsoft Store安装Ubuntu —Linux发行版
找到Ubuntu 20.04LTS点击安装即可,直接点击启动就行
.打开后设置初始的用户名和密码即可,如果出现参考的对象类型不支持尝试的操作,请重置下网络net winsock reset
以后我们就可以直接在端口打开ubuntu使用Linux命令了
然后打开cmd窗口输入命令查看本机的Linux的发行版了
wsl -l -v
wsl -l -v
Name STATE VERSION
Ubuntu-20.04 Running 2
2 常见问题解决
2.1 安装失败并出现错误 0x80070003
适用于 Linux 的 Windows 子系统只能在系统驱动器(通常是 C: 驱动器)中运行。 请确保分发版存储在系统驱动器上:打开“设置”->“系统”–>“存储”-> “更多存储设置”: 更改新内容的保存位置”
2.2 WslRegisterDistribution 失败并出现错误 0x8007019e
未启用“适用于 Linux 的 Windows 子系统”可选组件:
打开“控制面板” -> “程序和功能” -> “打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”,或使用本文开头所述的 PowerShell cmdlet。
2.3 安装失败,出现错误 0x80070003 或错误 0x80370102
请确保在计算机的 BIOS 内已启用虚拟化。 有关如何执行此操作的说明因计算机而异,并且很可能在 CPU 相关选项下。WSL2 要求 CPU 支持二级地址转换 (SLAT) 功能,后者已在 Intel Nehalem 处理器(Intel Core 第一代)和 AMD Opteron 中引入。 即使成功安装了虚拟机平台,旧版 CPU(例如 Intel Core 2 Duo)也无法运行 WSL2。
2.4 尝试升级时出错:Invalid command line option: wsl --set-version Ubuntu 2
请确保已启用适用于 Linux 的 Windows 子系统,并且你使用的是 Windows 内部版本 18362 或更高版本。 若要启用 WSL,请在 PowerShell 提示符下以具有管理员权限的身份运行此命令:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux。
2.5 由于虚拟磁盘系统的某个限制,无法完成所请求的操作。虚拟硬盘文件必须是解压缩的且未加密的,并且不能是稀疏的
取消选中“压缩内容”(如果已选中“加密内容”,请一并取消选中),方法是打开 Linux 发行版的配置文件文件夹。 它应位于 Windows 文件系统上的一个文件夹中,类似于:USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited…
在此 Linux 发行版配置文件中,应存在一个 LocalState 文件夹。 右键单击此文件夹可显示选项的菜单。 选择“属性”>“高级”,然后确保未选择(未勾选)“压缩内容以节省磁盘空间”和“加密内容以保护数据”复选框。 如果系统询问是要将此应用到当前文件夹还是应用到所有子文件夹和文件,请选择“仅此文件夹”,因为你只是要清除压缩标志。 完成此操作后,wsl --set-version 命令应正常工作。
2.6 无法将词语“wsl”识别为 cmdlet、函数、脚本文件或可运行程序的名称
请确保已安装“适用于 Linux 的 Windows 子系统”可选组件。 此外,如果你使用的是 ARM64 设备,并从 PowerShell 运行此命令,则会收到此错误。 请改为从 PowerShell Core 或从命令提示符运行 wsl.exe。
2.7 错误:此更新仅适用于装有适用于 Linux 的 Windows 子系统的计算机
若要安装 Linux 内核更新 MSI 包,需要 WSL,应先启用它。 如果失败,将看到以下消息:This update only applies to machines with the Windows Subsystem for Linux。
出现此消息有三个可能的原因:
你仍使用旧版 Windows,不支持 WSL 2。 有关版本要求和要更新的链接,请参阅步骤 #2。
未启用 WSL。 需要返回到步骤 #1,并确保在计算机上启用了可选的 WSL 功能。
启用 WSL 后,需要重新启动才能使其生效,请重新启动计算机,然后重试。
2.8 错误:WSL 2 要求对其内核组件进行更新
如果 %SystemRoot%\system32\lxss\tools 文件夹中缺少 Linux 内核包,会遇到此错误。 若要解决此问题,请在安装说明的步骤 #4 中安装 Linux 内核更新 MSI 包。 可能会需要从添加或删除程序卸载 MSI,然后重新安装。
三 安装Ducker for window
安装Ducker之前建议先看下文章底部-------Windows中更改Docker默认安装路径方法(C盘够用可以直接忽略)
ducker官网访问较慢,这是中文官网:https://docker.p2hp.com/
下好后直接双击运行安装即可设置里勾选基于wsl2的引擎(我的默认勾选了)
安装docker后,docker会自动创建2个发行版:
docker-desktop docker-desktop-data
用PowerShell运行 wsl -l -v会发现已经创建了两个docker发行版了(这边我把docker已经停了,所以显示Stopper)
更改镜像源
在国内从官方的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 打开cmd 关闭所有发行版
wsl --shutdown
打开cmd窗口。查看停止情况:
wsl --list -v
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
# 镜像名 要导入的路径 存放镜像的路径 wsl2
即将备份数据导入到新的虚拟盘,且指定虚拟盘的存放路径为E:\DockerData,导入完成后在该目录下会存在一个ext4.vhdx的虚拟磁盘路径
然后启动docker就可以啦
Windows中更改Docker默认安装路径方法
一个docker 起码占用2G,跑起来5G多,安装C盘真来不了。。。
安装流程没有显示安装地址修改路径的,只能用这样软连接的方法了!!!~~~~
1、先创建 D:\Program Files\Docker 目录。
注意:如果C盘Program Files 如果有Docker,需要先删除
2、用管理员身份打开 cmd 窗口,然后,再运行如下命令:
mklink /j “C:\Program Files\Docker” “D:\Program Files\Docker”
运行结果:
为 C:\Program Files\Docker <<===>> D:\Program Files\Docker 创建的联接
3、现在去安装docker就可以了,docker默认安装路径已经更改成功了。
四 Ducker 简单使用
1 查看docker是否安装成功
docker -v
# 查看docker版本号
2.docker 安装 redis
(1)拉取redis镜像
docker pull redis
(2)查看本地镜像
docker images
(3)运行容器
把子系统中的redis的端口6379映射到主机(本机)端口的6379 这样我们就能在本机访问到子系统中的redis了()
docker run -d --name myredis -p 6379:6379 redis
myredis:自定义的容器名 6379:6379 端口映射 redis 镜像名
(4)安装成功 查看容器的运行信息
docker ps
(5)连接测试进入redis终端
docker exec :在运行的容器中执行命令
# 语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
redis-cli表示运行一个redis客户端。
docker exec -it myredis redis-cli
然后我们就可以在本机上访问redis客户端了。
(6)退出
exit