docker启动报错 虚拟化_wsl教程:如何让docker跟随系统启动

前言:

此前,微软发布的wsl不支持运行docker,启动服务时会报错“Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”虽然当时网上有一些解决办法,但都需要搭配Docker for Windows运行。我认为这样的话为何不直接使用Docker for Windows,所以这并不是一个令人满意的解决方案。

Win10创意者更新后,在WSL中原生运行Docker Engine成为可能,不再需要安装多余的Docker for Windows,这显然是一个令人振奋的消息。新发布的wsl2也可以使用docker,不过wsl2使用的是Hyper-V虚拟化技术,带来真正内核的同时也带来了一些不便。例如wsl2不再跟宿主机共用同一个ip地址,而且启用wsl2后其他虚拟化工具无法使用(Wmware和Virtual Box),好在微软正在尝试解决这些问题。不过目前为止wsl1在使用上仍然占据一席之地。

虽然现在的wsl1可以成功运行docker,但并不会跟随windows系统启动,每次开机都需要手动开启,十分麻烦。本教程旨在以最简便的方式实现docker服务跟随系统自动启动。

前提条件:在本机的WSL中已成功安装和运行docker。

安装docker:https://www.lance.moe/post-330.html

开启ssh服务(可选):https://www.jianshu.com/p/cd4d604e0b44

PS:若开启ssh服务请修改默认端口以免跟windows系统冲突。

由于脚本需要以管理员身份运行,所以本教程使用任务计划而不是直接将脚本拖到启动文件夹。

正式开始:

1、首先在任意目录下新建一个vbs脚本,里面定义了要启动的服务,内容为:

set ws=wscript.createobject("wscript.shell")
ws.run "wsl -d ubuntu -u root /etc/init.d/ssh start",vbhide
ws.run "wsl -d ubuntu -u root /etc/init.d/cgroupfs-mount start",vbhide
ws.run "wsl -d ubuntu -u root /etc/init.d/docker start",vbhide

c58f6d94198abba7099ad58f2ace8e73.png
1

2、然后打开“任务计划程序”,在控制面板→管理工具→任务计划程序。

或者直接按下win+s搜索程序名称(推荐)。

3、创建一个任务:

3.1、在任务里设置新建一个触发器,规则为在系统启动时触发。

d7c423585a486ed56374e72ea712ab4a.png
3.1

3.2、然后新建一个操作,里面填入脚本的路径。

fe6fcab12f9bf36da41dae14534f022d.png
3.2

3.3、在条件里关闭电源选项。

17c65b067d3cddae16626943bc31ec49.png
3.3

3.4、在常规中给当前任务命名、勾选“不管用户是否登录都要运行”和“使用最高权限运行”。

bd20c8c6dd3090b14ed3d51bdd299060.png
3.4

3.5、确定并保存,这样在下次系统启动时,脚本就会被自动运行。

需要注意的是,若要让容器跟随docker服务启动,请在创建容器时添加--restart=always--restart=on-failure 参数,已创建的容器可以使用 docker update 修改参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值