如何在WSL中使用docker
一直不太习惯在Windows系统进行研发工作,而且生产环境也都是Linux服务器,在Windows下写的代码迁移到Linux系统中运行时难免会遇到各种各样的小问题。所以最近尝试了在WSL中写代码,感觉很舒服。 前段时间刚解决了实用Git时,Linux和Windows换行符不同导致的问题。而docker技术已经非常普及,那么如何在WSL中运行docker呢?
死守WSL
- 首先需要在Windows中装好docker,具体操作流程非常简单,从 docker官网下载Docker Desktop.exe,然后安装官网的教程运行安装就可以。在Windows中运行docker需要系统开启Hyper-V,具体方法不再赘述。
- WSL的安装好后需要在系统中开启“适用于Linux的Windows子系统”功能。
- 从Microsoft Store选择一个自己喜欢的Linux发行版,然后在Linux中安装docker。
- 在Linux中安装docker后会发现无法启动docker服务,接下来就是本文的最重要的步骤。
- 在Windows中打开docker的设置,开启“Expose deamon on tcp://localhost:2375 without TLS”
- 在Linux中指定docker服务的地址为Windows的docker服务,“export DOCKER_HOST=tcp://localhost:2375”
- 在Linux中再次运行"docker run hello-world"就可以发现docker服务已经正常了
- 为了让每次启动Linux都能正常使用docker,可以在/etc/profile.d/路径下创建一个“dockerwsl.sh”文件,文件内容为“export DOCKER_HOST=tcp://localhost:2375”,具体操作方法如下,需要使用root权限才能正常运行
echo "export DOCKER_HOST=tcp://localhost:2375" > /etc/profile.d/dockerwsl.sh
但是这种方法可能存在一定的安全风险, 微软官网的一篇文章介绍了另外一种方法。
转投WSL2
WSL2似乎可以直接支持运行docker,但是笔者还在使用WSL,尚未升级到WSL2,所以提供几篇文章以供参考:
参考
Setting Up Docker for Windows and WSL to Work Flawlessly
Installing the Docker client on Windows Subsystem for Linux (Ubuntu)