Install Docker With WSL2

方式一:Docker Desktop+WSL2 运行 Docker

Docker DesktopDocker CEDocker ComposeKubernets 等软件整合在了一起进行安装,省去了一一安装的烦恼。

下载安装Docker Desktop运行 Docker,可以让你在Windows中方便的管理配置Docker

傻瓜式安装即可!

配置Docker Desktop使用WSL2运行Docker engine

Use the WSL 2 based engine

Configure which WSL 2 distros you want to access Docker from

现在你就可以在对应的子系统中玩 Docker 了,打开安装好的子系统,输入docker info就可以查看到对应的系统信息了.

方式二:WSL2子系统中安装Docker

安装最新Docker CE

curl -fsSL get.docker.com -o /tmp/get-docker.sh && sudo /bin/sh /tmp/get-docker.sh --mirror Aliyun && rm -f /tmp/get-docker.sh

启动并检验安装是否成功

# 启动 docker 服务
sudo service docker start # 注意:有的Linux系统时通过`systemctl start docker`启动

# 打印docker系统详细信息
docker info

docker info

看到以上信息证明已经安装完成并成功启动了服务!

踩坑预警

使用docker info打印信息时可能会遇到下述信息,提示/var/run/docker.sock权限不足

Client:
 Debug Mode: false

Server:
ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/info: dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info

/var/run/docker.sock connect permission denied

通过ls -al /var/run/docker.sock查看该文件权限信息,发现文件是root用户或docker组用户才能进行读写

ls -al show files info

可以通过idgroups ${USER}查看当前用户所在的组信息,发现当前用户的附加组信息里并没有docker,那么问题就好解决了:只需将当前用户加入到docker组即可.

id show ${USER} groups

  1. 创建 docker
sudo groupadd docker
  1. 将当前用户加入到docker
sudo usermod -aG docker ${USER}
  1. 刷新用户的用户组信息

你需要先登出再重新登录一次,这样当前系统会重新刷新你的身份信息。或者,使用下列方式不用退出即可刷新当前进程的用户身份信息:

exec su -l ${USER}

此时再运行docker info应该就正常打印信息了!

安装最新Docker Compose

可参考:https://docs.docker.com/compose/install/#install-compose-on-linux-systems

# 下载当前最新版本是:1.27.4

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予 docker-compose 可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 刷新当前进程信息
exec $SHELL -l

# 检查docker-compose是否安装成功
docker-compose --version

设置Docker Server镜像源加速

  • Docker 官方中国区镜像地址:https://registry.docker-cn.com
  • 网易镜像地址:http://hub-mirror.c.163.com
  • ustc镜像地址:https://docker.mirrors.ustc.edu.cn
  • 阿里云镜像地址设置参考文章底部:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

如果想使用阿里云镜像地址需要有阿里云账号,但我在广州试用了上述的镜像地址,确实设置了阿里云的镜像加速是效果最好的

通过Docker Desktop配置registry-mirrors

如果是使用 Docker Desktop+WSL 方式安装 Docker 直接使用面板即可修改!

set registry-mirrors for Docker Desktop

配置 WSL2 中的 Docker 镜像加速地址

当你的docker版本较新(Docker Version >= 1.10)时,建议直接通过 /etc/docker/daemon.json 进行配置(若没有该文件则直接新建,写入下述配置即可)

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

Docker版本比较旧,则需根据系统的不同而修改不同位置的配置文件,详细参考此处

修改完成后,执行sudo service docker restart重启docker

 update setting registry-mirrors

遗留问题

在安装之后,留下了两个问题:

  1. 设置开机自启服务异常

WSL2中设置开机docker服务自启,我尝试了使用注册列表、通过VBScript启动服务、创建文件夹,但是失败了!

问题已解决,参考文章:解决 WSL 开机启动服务

  1. 访问容器服务不方便

由于每次重启WSL的网卡都会被重置,在公司的网络环境中Docker的IP网段也会不断的变化。 因此,通过直接在WSL2中直接安装docker的方式,若在网络复杂的环境中在宿主机访问WSL内部容器服务需要自己手动变更IP-Domain绑定信息。 如果通过Docker Desktop+WSL2的方式则不会有这样的问题,因为该方式WSL2内部访问的daemom服务仍然是Windows中,但该方式安装的docker文件挂载异常,偶尔会出现挂载目录为空的情况。

问题已解决,参考文章:解决 WSL 开机网卡信息变动问题

转载请声明出处: MinsonLee的博客:https://minsonlee.github.io

扫描下方二维码,关注公众号,接收更多实时内容

新猿呓码

打赏一个呗

取消

感谢客官打赏,您的打赏使我动力十足!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦