其实 Docker 是可以在 WSL 里用的哦=-=
似乎有许多人不知道怎样在 WSL 里使用 Docker ,阅读这篇文章之后你就会用啦。
其实非常简单,只要照着下面的步骤做就可以了。
首先安装 Docker Toolbox 或者 Docker For Windows
从官网上下载安装程序,然后一路下一步就好了。
后者需要先安装Hyper-V,完成后需要重启。如果你会安装WSL的话,一定知道怎么安装Hyper-V。
然后在WSL里安装Docker,根据官方文档添加软件源,刷新然后安装即可。
官方文档链接:https://docs.docker.com/install/linux/docker-ce/ubuntu/
完成后执行
sudo usermod -aG docker $USER
接下来到重点部分了。
进入 WSL,编辑 ~/.bashrc
vim ~/.bashrc
写上这些内容:
# 适用于 Docker For Windows
export DOCKER_HOST=tcp://127.0.0.1:2375
# 适用于 Docker Toolbox
#export DOCKER_TLS_VERIFY=1
#export DOCKER_HOST=tcp://192.168.99.100:2376
#export DOCKER_CERT_PATH=/mnt/c/Users/Nya/.docker/machine/certs
# 挂载 /mnt 下的目录到根目录下,让 WSL 和 Docker 的文件路径一致
if [ ! -d "/c" ] || [ ! "$(ls -A /c)" ]; then
sudo mkdir -p /c
sudo mount --bind /mnt/c /c
fi
if [ ! -d "/d" ] || [ ! "$(ls -A /d)" ]; then
sudo mkdir -p /d
sudo mount --bind /mnt/d /d
fi
# 根据实际情况补充……
# 判断当前是否位于 /mnt/*/ 目录下,如果是,则跳转到 /*/,同样根据实际情况补充……
if [ "$(pwd | cut -c -7)" == "/mnt/c/" ] || [ "$(pwd | cut -c -7)" == "/mnt/d/" ]; then
cd "$(pwd | cut -c 5-)"
fi
因为这里用了 sudo,所以以后启动的时候都要输入一次密码……
所以可以设置一下 sudo 免密码:
sudo visudo
然后在文件末尾加上:
您的用户名 ALL=(ALL) NOPASSWD:ALL
输入 [ESC]ZZ 保存退出即可。
最后,如果用的是 Docker For Windows 的话,需要打开 Expose daemon on tcp://localhost:2375 without TLS 这个选项。
如果你用 Volume 的话,可别忘了共享磁盘。
到这里就结束了,这时候你已经可以在 WSL 里像 Linux 一样使用 Docker 了。
问答:
-
为什么不使用不需要权限的符号链接,而是 mount 呢?
答:因为 Docker Volume 不支持符号链接。 -
是否可以使用 Docker Compose 之类的?
答:当然。 - 是否可以使用相对路径?
答:只要是能在Linux里做的,其实都可以> <