Win10上操作Docker,一样可以纵享丝滑!

在Linux上安装Docker非常简单,我之前的文章中有详细说明,本文是在Win10 WSL2的基础上进行Docker安装操作。

如果你对Docker还不是很熟悉,建议可以先看看这篇文章:史上最详细的docker学习手册,请查收!

当然,如果你对Win10的WSL2感兴趣,也可以通过下面这篇文章了解:

https://docs.microsoft.com/zh-cn/windows/wsl/about

安装过程


版本要求

基于WSL2的Docker Desktop 需要系统内核满足如下条件:

Windows 10 64-bit: Home or Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or higher.

可以通过右键 我的电脑 -> 属性 查看Windows规格

c76e6ee4ca50b36f5ec5e1d3221a9a17.png

如果使用Windows Update自动更新到2004版本。如果没有检测到更新,可以去微软官网下载“易升”工具并安装运行。工具会检测到更新并安装。

安装

  1. 下载安装

通过 https://docs.docker.com/desktop/windows/install/下载后直接进行安装

  1. 下载 Linux 内核更新包并安装

此时打开Docker Desktop后会提示安装WSL,如果不安装,则启动不了应用程序。所以根据提示通过https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载直接后安装

  1. 将WSL 2 设置为默认版本

打开 PowerShell,执行如下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

启动异常:System.InvalidOperationException

这时候打开Docker Deskstop 大概率会出现如下异常:

System.InvalidOperationException

Failed to set version to docker-desktop: exit code: -1

fd653914ec7613a797b78750a78866e0.png

在PowerShell中使用wsl命令会提示  “参考的对象类型不支持尝试的操作。”

17073cf39e80d07ae8288ae397c1a22e.png

解决办法
  1. 下载NoLsp

可以通过连接 http://www.proxifier.com/tmp/Test20200228/NoLsp.exe进行下载,需要使用VPN。

或者点击下方的公众号名片,输入【nolsp】下载

  1. 配置

将下载的文件建议放在 C:\Windows\System32下,也可以放在任何你指定的位置,通过管理员运行CMD,执行如下命令

NoLsp.exe C:\Windows\System32\wsl.exe

Success!

如果出现异常,请检查文件路径。

  1. 启动wsl

1cb873c3c61ed3e715a9efb2d4a88809.png

  1. 重启Docker Desktop

f0ef143ab0a2964a8d8aead2b078be6d.png

  1. 测试

打开powershell终端,输入命令

docker run -d -p 80:80 docker/getting-started

启动后,通过浏览器访问http://localhost/出现以下页面则表示安装成功,后面就可以安心使用Docker带来的便利了。

a49bcff2687c129523d7543773338b92.png

配置加速器

Docker默认情况下使用的是DockerHub仓库,可以在终端通过Docker info命令查看:

1ea8c8102f648ea6f92dc5dec9d625fd.png

但是国内从DockerHub拉取镜像有时会很慢,此时可以配置国内加速器服务,例如:

  • 科大镜像:https://docker.mirrors.ustc.edu.cn/

  • 网易:https://hub-mirror.c.163.com/

  • 七牛云加速器:https://reg-mirror.qiniu.com

  • 百度:https://mirror.baidubce.com

配置过程如下:

b01ff2a05c0074488a205a4eedb82698.png

通过Setting -> Docker Engine 在右侧配置文件中通过registry-mirrors配置镜像加速器。

“registry-mirrors”: [

“https://hub-mirror.c.163.com”,

“https://mirror.baidubce.com”

]

配置完成后重新启动Docker Desktop,而后通过docker info再次查看,可以发现镜像加速器已经生效。

2c506ff2a22d71782d8402c9903d3a4a.png

镜像存储位置迁移


使用WSL2安装Docker后,默认存储位置是放在C盘。考虑到很多人C盘作为系统盘空间可能不太够,所以我们这里将存储位置迁移到其他盘里。

按照以下说明可以在保留现有镜像数据的情况下进行数据迁移,请严格按顺序执行,错了不要怪我!

  1. 停止Docker Desktop

右键单击Docker Desktop图标,选择 Quit Docker Desktop。退出完成后通过终端输入wsl -l -v,此时应该可以看到两个状态都已停止。

c15c7fcfed1159821d72e141ef606445.png

默认情况下,Docker Desktop for Window 会创建如下两个发行版(distro) C:\Users\javadaily\AppData\Local\Docker\wsl docker-desktop (对应distro/ext4.vhdx) docker-desktop-data (对应data/ext4.vhdx)

可以看到导出前目录属性

1964987b662a1a4e1cdc81ac83e2046a.png

  1. 备份docker数据

通过下面指令可以将Docker Images及相关文件导出到 E盘

wsl --export docker-desktop-data “E:\docker-desktop-data.tar”

  1. 从wsl取消注册docker-desktop-data

请注意C:\Users\javadaily\AppData\Local\Docker\wsl\data\ext4.vhdx文件将被自动删除。

wsl --unregister docker-desktop-data

  1. 将导出的docker-desktop-data再导入回wsl,并设置成我们想要的路径,即新的镜像及各种docker使用的文件的挂载目录,我这里设置到E:\\docker\\wsl

wsl --import docker-desktop-data “E:\docker\wsl” “E:\docker-desktop-data.tar” --version 2`

执行完成后我们就可以在E:\docker\wsl 下看到docker数据了

4a290844b22be80b155cf2b323693e6f.png

  1. 验证测试

迁移完成后启动Docker并拉取 elasticearch 和kibana 后再次查看docker目录大小

47cbf745579336d1f49270748afc737f.png

小结

好了,至此你已经在Windows安装好Docker了,赶紧去体验享受Docker带来的便利吧!


Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。 Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。 一款开源软件能否在商业上成功,很大程度上依赖三件事 - 成功的 user case(用例), 活跃的社区和一个好故事。 dotCloud 自家的 PaaS 产品建立在docker之上,长期维护且有大量的用户,社区也十分活跃,接下来我们看看docker的故事。 环境管理复杂 - 从各种OS到各种中间件到各种app, 一款产品能够成功作为开发者需要关心的东西太多,且难于管理,这个问题几乎在所有现代IT相关行业都需要面对。 云计算时代的到来 - AWS的成功, 引导开发者将应用转移到 cloud 上, 解决了硬件管理的问题,然而中间件相关的问题依然存在 (所以openstack HEAT和 AWS cloudformation 都着力解决这个问题)。开发者思 路变化提供了可能性。 虚拟化手段的变化 - cloud 时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需使用的需求以及保证可用性和隔离性。然而无论是KVM还是Xen在 docker 看来,都在浪费资源,因为用户需要的是高效运行环境而非OS, GuestOS既浪费资源又难于管理, 更加轻量级的LXC更加灵活和快速 LXC的移动性 - LXC在 linux 2.6 的 kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可迁移性,决定其构建出的环境难于迁移和标准化管理(相对于KVM之类image和snapshot的概念)。docker 就在这个问题上做出实质性的革新。这是docker最独特的地方。 VM技术和容器技术对比 VM技术和容器技术对比 面对上述几个问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值