win10下的子系统ubuntu

218 阅读2分钟

我正在参加「掘金·启航计划」

子系统换存储位置

  • 在d盘创建一个文件夹D:\1-sub_ubuntu

  • 打开powershell管理员界面

  • 执行wsl -l -v看下ubuntu版本

    PS C:\WINDOWS\system32> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-18.04    Running         2
    
  • 导出分发版为tar文件到d盘
    wsl --export Ubuntu-18.04 d:\Ubuntu-18.04.tar

  • 注销当前分发版
    wsl --unregister Ubuntu-18.04

  • 重新安装已导出的发行版本

wsl --import Ubuntu-18.04 D:\1-sub_ubuntu D:\Ubuntu-18.04.tar --version 2
# wsl --import <安装发行版本名称> <安装发行版本路径> <已导出的发行版本> --version <wsl版本>
  • 执行完后,就可以删除D:\Ubuntu-18.04.tar了

【参考】:blog.csdn.net/qq_39683682…

wsl配置

  • 默认root用户登入设置

    • 启用cmd,输入如下命令 cd %HOMEPATH%\AppData\Local\Microsoft\WindowsApps
    • 执行如下命令,找到ubuntu实例目录
      dir image.png
    • 进入实例目录
      cd anonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc
    • 修改默认用户为root
      ubuntu1804.exe config --default-user root
    • 重启WSL子系统即可看到效果
  • 替换国内镜像源

    • 编辑/etc/apt/sources.list
      vim /etc/apt/sources.list

    • 将文件中的内容全部注释掉,替换如下内容

          deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
          deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
          deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
      
    • 编辑好保存后,执行如下命令更新源列表
      sudo apt update

    • 更新已安装的所有软件
      sudo apt upgrade

    • 命令执行完就可以了。

    wsl 安装docker

    WLS2下通过apt install docker-ce命令安装的docker无法启动,因为WSL2方式的ubuntu里面没有systemd。因此采用官方get-docker.sh安装的docker,dockerd进程是用ubuntu传统的init方式而非systemd启动的。

  • 下载get-docker.sh
    curl -fsSL https://get.docker.com -o get-docker.sh

  • 执行脚本 sudo sh get-docker.sh 需要等待20S

  • 启动docker
    sudo service docker start

  • 检查docker安装正常

    service docker status
    ps aux|grep docker
    
  • 检查拉取镜像等正常
    docker pull busybox

    image.png

【参考】 zhuanlan.zhihu.com/p/148511634

问题记录*

  • docker 无法启动,提示Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    翻看日志发现
    time="2022-08-23T22:31:38.413595000+08:00" level=warning msg="grpc: addrConn.createTransport failed to connect to {unix:///var/run/docker/containerd/containerd.sock  <nil> 0 <nil>}. Err :connection error: desc = \"transport: Error while dialing dial unix:///var/run/docker/containerd/containerd.sock: timeout\". Reconnecting..." module=grpc
    failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: iptables v1.6.1: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
    
    

解决办法: 以管理员身份启动terminal,再启动下docker就可以了。