wsl2docker的简单介绍
本篇文章给大家谈谈wsl2docker,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、WSL2中安装docker 并开机启动
- 2、【Windows Docker】docker挂载解决IO速度慢的问题
- 3、WSL2 子系统迁移(docker&ubuntu)
- 4、docker desktop win10挂载问题解决
- 5、Windows使用WSL2安装Docker
WSL2中安装docker 并开机启动
win10 安装 wsl2 的步骤可参考 :
依次执行以下几条命令
注意, 把 $USER换成你 安装wsl2时候取的 账号,
①
② 然后, 把以下内容添加到脚本中
③ 给脚本添加执行权限
1 如图, 我的登录名叫 ubuntu, 你把ubuntu改成你的登录名即可
2 NOPASSWD 冒号后面 ALL, 表示执行任何命令都不需要输密码 , 你也可以指定只有 /晌樱庆bin/sh /usr/颂老local/sbin/start_docker.sh 这个命令不需要密码, 自己根据宴握需求使用即可
点新建., 选择登录时, 所以用户
参数 :
把 只有计算机使用交流电.... 这个选项给去掉
这个时候就已经大功告成了, 保存好这个计划任务后, 就可以去 重启电脑试一下。
[img]【Windows Docker】docker挂载解决IO速度慢的问题
这个问题花了一天的时间来解决,在网上有一些参考,但是都不太满意。
我们使用WSL 2来运行Docker,通常会使用挂载的功能,把windows的文件挂在到Docker中,但是这种跨文件系统的操作败猛性能不佳。
把windows系统的文件挪到WSL系统下,然后在WSL子系统中(这里选择Ubuntu)启动docker(同时执行文件挂载),这样进入Docker后的IO操作不存在跨系统操作,速度会有较大提升。
为袭胡了达到上述目的,我们需要安拍枯拦装一个中介:Ubuntu(WSL的发行版),把windows系统的文件挪到wsl文件系统(Ubuntu)中,然后在Ubuntu中启动Docker。
网上很多人的方案给了我启发,但是看到很多方案并没有解决问题,抛砖引玉,希望能解决大家的问题。
WSL2 子系统迁移(docker&ubuntu)
(1)查看wsl子晌森系统发行版
(2)关闭docker-desktop
(3)关闭所有wsl子系统发行版
(4)将子系统导出到自己想要的地方 E:\Development\Docker\docker-desktop-data.tar
(5)注销 docker-desktop-data 子系宴信亩统发行版。
(6)重新导入docker-desktop-data(注意:要先写目录,然后再写文件名)
(7)迁移完成,重新打开docker
感觉步骤与上述差不多。尝试一下
(1)关闭所有的wsl子系统
(2)导出子系统到想要的地方
(3) 注销Ubuntu
(4)重新导入Ubuntu (注意要先写目录,再写目录下的文件)
(5)将Ubuntu设置为默认子系统
(6)成功将Ubuntu移到E盘,解放C盘
(7)有个问题,在没有迁移之前对wsl ubuntu设置的内容全部没了。 有什么办法将之前的设置给弄回来呢?网上查找一番,发现是用户的问题。wsl import之后的子系统,会默认 root 用户登录。但是我之前的用户是 win 。所以只要用户切换到win用户就可以了。坦昌
(8)还有一个小问题,如果重新打开wsl ubuntu,默认还是root用户。如何调整为默认普通用户呢?修改注册表
解放了C盘,将4G多的空间移到其他硬盘。
docker desktop win10挂载问题解决
更新于2020/8/13
此文章适用于安装完docker desktop install ,for windows10,并且是默认使用wsl2安装的docker。现在的win10家余册庭版也已经支持安装。
注意如果我们不把docker集成到已有的wsl2的linux发行版(如图),docker自己的发行版是没有bash(如果有进入docker发行版shell的方法请大佬告知)
在power shell输入(CMD 不支持将 UNC 路径作为当前目录)
最开始的想法是docker的分发版中是不是可以像Linux一样的挂载文件,可惜没有成功。
在docker-desktop-data会保存docker的iamge和容器数据,暂时不清楚docker-desktop分发版的作用,可能是docker实际运行的分发版?
通过查看官方的文档,发现docker wsl2安装的版本Settings已经没有Shared Devices选项,因为docker的文件挂载交给了wsl2的机制处理。
我们可以看到docker安装后wsl2默认的分发版是dockers-desktop-data,尝试使用sh或者bash进入这个竖毁宏分发版:
可以看到这个Linux分发版中没有sh和bash。我们切换为另一个分发版:
很明显,docker-desktop分发版中有sh和bash。但是这个分发版的根目录其实不是docker挂载时的根目录。
官方文余衫档介绍了挂载的方法
不报错但根本没有挂载成功。
可能是官方文档的失误,我又查找了wsl2的说明文档,找到了win系统磁盘在wsl2上的设置文件:
显然c盘映射到了/mnt/host/c,而不是/mnt/c。但是使用此路径挂载依旧无效。
最后在前辈的文章 上找到答案,此处记录一下正确的挂载命令:
注意盘符一定要小写。
挂载文件一定要注意windows的CRLF文件在Linux上有兼容问题,最好始终使用LF文件,windows上的IDE基本都可以正常读取LF文件。windows上的git默认选项会自动把项目的LF换为CRLF,取消方法
既然官方建议我们在linux文件系统下进行挂载,我最后找到了方法把挂载文件放在Linux文件系统中。通过文件资源管理器将挂载文件直接放入docker的运行时根目录下(开启docker后才可以访问)
比如我们要挂载下面的文件夹:(可以直接在windows文件资源管理器地址栏输入查看)
命令为
更新:注意这个目录是运行时目录,docker停止运行后会失去持久化,重启后还原为原目录。暂时没有找到其持久化的方法。
Windows使用WSL2安装Docker
当前版本的 docker-desktop 已经默认开启支持WSL2,安装时保持默认选项直接下一步,安装完毕之后重启电脑。之后docker会弹出WSL2尚未配置完毕,点击提示框中的链接,安装MSI扩展包,重启电脑即可愉快地使用docker。
想岩衫在Windows上运行docker,可谓是一言难尽。从最初的docker-toolbox到基于Hyper-v虚拟化的docker-desktop,无论是哪个方式,都有一堆一堆的坑点。
想要在windows上愉快地玩耍docker,难道就只能virtualbox装个linux再装docker?(或者docker-client配远程docker-daemon?)
于是,我决定换个坑踩。
以管理员运行Powershell(开启WSL,如已开启可跳过)
之后重新启动计算机。
以管理员身份打开 PowerShell 并运行:
启用这些更改后,需要重新启动计算机。
在 PowerShell 中运行:
打开Microsoft Store,搜索 ubuntu 并安装。
之穗枣此后启动刚刚安装的Ubuntu。
打开刚刚安装的Ubuntu,安装依赖:
信任 Docker 的 GPG 公钥:
对于 amd64 架构的计算机,添加软件仓库:
最后安装
安装大功告成了,运行
不出意外的话,大概率会报错。
将当前用户添加到docker用户组
之后重启 windows计算机 。
重启完成后,打开Ubuntu,运行
输出[OK]。
运行
没有报错,