记录WSL2安装docker过程,以及自动启动
Windows版的 Docker Desktop
支持使用 Wsl2
内核来运行。但是最近的版本貌似抽风似的,不停的嘣溃,无奈,直接卸载了它。而且它的那个GUI
界面平常好像也用不到,最多是看看哪个容器有没有蹦。反正desktop版本我觉得很拉垮,尤其是 Mac
版的我从来无法正常更新过。
安装docker-server版
官网文档一进去就是清一色的提供三大系统平台的 desktop 版本下载。想要安装命令行版的docker,要选择左侧的Docker Engine
(点我进入官网安装文档)
这里说下我的WSL2
版本为 Ubuntu-22.04
- 更新软件包索引并安装软件包,以允许通过 HTTPS 使用存储库
$ sudo apt-get update $ sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
- 添加docker官方GPG密钥
$ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 使用以下命令设置存储库
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装docker引擎
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 顺便安装docker-compose
这里安装过程就完成了。按照这个操作是没有任何问题的,所以也不用再拉取什么hello-world镜像了$ sudo apt install docker-compose
配置docker
WSL2是不支持
systemctl
命令的,所以要使用service
管理docker
这个时候的docker
是无法启动的,要做以下处理:
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
打开powershell
wsl --shutdown
自启动docker
$ sudo vim /etc/init.wsl
复制并粘贴以下内容:
#! /bin/sh
service docker start
按Esc
退出编辑,并输入 :wq
,回车即可
为文件赋予权限
$ sudo chmod +x /etc/init.wsl
回到Windows操作
- 按
win+R
输入shell:startup
,并回车 - 在这个目录创建
wsl.vbs
文件 - 复制并粘贴以下内容到 wsl.vbs里
上面代码中的Set ws = WScript.CreateObject("WScript.Shell") ws.run "wsl -d Ubuntu-22.04 -u root /etc/init.wsl"
Ubuntu-22.04
是你自己的wsl发行版,不要写得跟我一样。
至此,安装完成、自启动完成
如果你不会搭建php的docker开发环境,没关系,我为你准备好了。
Laradocker
我直接用的dnmp :joy:,装了一个docker desktop
项目是映射到宿主机,还是就放在ubuntu的
你项目文件放在wsl 系统里,phpstorm打开wsl 项目,没法保存怎么解决的