CHANSHIYU
GITHUBZERO
  • README
  • 時雨
    • 2017
      • 01 网站动态标题的两种方式
      • 02 RN App 外部唤醒踩坑记
    • 2018
      • 01 不一样の烟火
      • 02 Python 之禅
      • 03 Python 文件操作
    • 2019
      • 01 Aurora 食用指南
      • 02 Godaddy 域名找回记事
      • 03 一个接口的诞生
      • 04 SpringMVC 前后端传参协调
      • 05 主题集成友链访问统计
      • 06 Github Style 博客主题
      • 07 字符编码の小常识
      • 08 WSL 安装 Docker 实录
      • 09 Eriri comic reader
      • 10 Aurora 2.0
      • 11 jsDelivr 全站托管
      • 12 两年工作台变迁史
      • 13 春物
      • 14 一种优雅の笔记方式
    • 2020
      • 01 Telegram 电报机器人
      • 02 她的眼里有星辰
      • 03 文心雕龙
      • 04 软萌木子の有趣笔谈
      • 05 Telegram RSS 订阅频道
      • 06 水月雨银色飞船
      • 07 五年前旧照
    • 2021
      • 01 春宵苦短 2020
      • 02 风花
    • 2022
      • 01 小城新貌
      • 02 原神满级纪念
    • 2023
      • 01 2022 逆旅
      • 02 半透明背景图实现
      • 03 新年攒台海景房
  • 前端
    • JavaScript
      • 01 JavaScript 秘密花园
      • 02 JavaScript 正则技巧
      • 03 从浏览器解析 JS 运行机制
      • 04 Canvas 基础用法
      • 05 Blob Url And Data Url
      • 06 函数节流与函数防抖
      • 07 排序算法初探
      • 08 洗牌算法实现数组乱序
      • 09 正则匹配 match 和 exec
      • 10 正则匹配汉字
      • 11 JSX.Element vs ReactElement
      • 12 可选链与空值合并
      • 13 TypeScript 编码规范
      • 14 Typescript 中 interface 和 type 区别
      • 15 TypeScript 高级类型
      • 16 TypeScript 关键字
      • 17 TypeScript 映射类型
    • CSS
      • 01 Flex 弹性布局
      • 02 Position 定位
      • 03 CSS 逻辑属性
    • Node
      • 01 Node Tips
      • 02 七天学会 NodeJS
    • Note
      • 01 Note
      • 02 Code
      • 03 Snippets
      • 04 Git
    • React
      • 01 React Props Children 传值
      • 02 Use a Render Prop!
      • 03 React Hook
      • 04 React Hook 定时器
      • 05 Fetch data with React Hooks
      • 06 React 和 Vue 中 key 的作用
      • 07 useCallback 的正确使用方式
      • 08 useLayoutEffect 和 useEffect 的区别
      • 09 forwardRef 逃生舱
      • 10 React 条件渲染
    • Vue
      • 01 Vue Tips
      • 02 Vue 构建项目写入配置文件
      • 03 Vue 项目引入 SVG 图标
      • 04 Vue 一键导出 PDF
      • 05 动态可响应对象
      • 06 Vue 引入 SCSS
      • 07 Vue 路由权限控制
    • 实战系列
      • 01 WebSocket 心跳重连机制
      • 02 图片加解密二三事
      • 03 优雅实现 BackTop
      • 04 动态加载 JS 文件
      • 05 常用 DOM 方法比较
      • 06 AbortController 中断 fetch
      • 07 计算字符所占字节数
      • 08 Axios 自定义返回值类型
  • 后端
    • Java
      • 01 面向对象基本特征与原则
      • 02 Java 数据类型
      • 03 Java String
      • 04 Java 只有值传递
      • 05 Java final 与 static
      • 06 Java Object 通用方法
      • 07 Java 继承
      • 08 Java 反射
      • 09 Java 异常
      • 10 Java 容器
      • 11 Java 虚拟机
      • 12 Java IO
      • 13 Java HashMap
      • 14 Java List
      • 15 Java Stream
      • 16 Java 枚举
      • 17 Java 日期与时间
      • 18 Java fail fast
      • 19 Java BiFunction 和 BinaryOperator
    • 并发编程
      • 01 Java 并发
      • 02 synchronized
      • 03 volatile
      • 04 ReentrantLock
      • 05 ReadWriteLock
      • 06 StampedLock
      • 07 CompletableFuture
      • 08 ForkJoin
      • 09 ThreadLocal
      • 10 CountDownLatch
      • 11 ThreadPoolExecutor
      • 12 ExecutorService
      • 13 Atom 原子类
      • 14 BlockingQueue
    • 高效编程
      • 01 30 seconds of java8
      • 02 函数式替代 for 循环
      • 03 Java 字符串拼接
      • 04 单例模式的几种实现
      • 05 HashMap 排序
    • 理论概念
      • 01 Java Servlet
      • 02 Java 服务端分层模型
      • 03 经典排序算法
      • 04 LRU 缓存淘汰算法
      • 05 BloomFilter 判断元素存在
      • 06 Java HashMap 面试大全
      • 07 HTTP 状态码详解
      • 08 Cookie 和 Session
      • 09 基于消息队列的分布式事务解决方案
      • 10 微服务之所见
    • 实战系列
      • 01 AES CBC 加解密
      • 02 Magic 魔数获取文件类型
      • 03 获取请求 IP 地址
      • 04 Kaptcha 与数学公式验证码
      • 05 Netty 获取客户端 IP.md
      • 06 高性能无锁队列 Disruptor.md
      • 07 前后端接入阿里云盾
    • Linux
      • 01 Linux 文件权限系统
      • 02 Linux 常用软件安装
      • 03 CentOS 防火墙
    • MySQL
      • 01 MySQL
      • 02 SQL 语句 where 1=1
      • 03 truncate 和 delete
      • 04 事务
      • 05 关系模型
      • 06 Mybatis
      • 07 MySQL 查看数据库表详情
    • Nginx
      • 01 Nginx 指北
      • 02 nginx gzip 压缩
    • Note
      • 01 Vagrant
      • 02 Docker
      • 03 Lombok
      • 04 Swagger
      • 05 Redis
    • Spring
      • 01 Spring Boot
      • 02 Spring Validation
      • 03 Spring Data
      • 04 Spring 容器
      • 05 Spring AOP
      • 06 Spring Transactional 注解
      • 07 Spring Cloud Netflix
      • 08 Spring Cloud Alibaba
      • 09 Spring Security oAuth2
      • 10 Spring Boot 跨域解决方式
      • 11 Spring Boot 请求拦截
      • 12 Spring Boot 异步编程
      • 13 Spring Boot 定时任务
      • 14 Spring Boot 管理 bean
      • 15 Mybatis 逆向代码生成
      • 16 JWT
      • 17 JPA
      • 18 Apache Shiro
      • 19 Spring 异步请求
  • 书斋
    • ES6 标准入门
      • 01 变量声明与解构赋值
      • 02 语法的扩展
      • 03 数据类型与数据结构
      • 04 Proxy 和 Reflect
      • 05 异步编程 Promise
      • 06 Iterator 和 for of 循环
      • 07 Generator 函数
      • 08 Async 函数
      • 09 Class 类
    • JavaScript 设计模式
      • 01 基础知识
      • 02 设计模式(上)
      • 03 设计模式(下)
      • 04 设计原则和编程技巧
  • 纸函
    • 01 Interview
    • 02 Ceph
    • 03 动态规划
    • 04 Document.designMode
    • 2023-01-10
  • 万藏
    • 文档
      • 01 Git 文档
      • 02 Linux 命令大全
      • 03 七天学会 NodeJS
      • 04 Algorithms
    • 工具
      • 01 Nginx Config
      • 02 ProcessOn
      • 03 Flat Icon
      • 04 Regexper
      • 05 TempMail
      • 06 Carbon
由 GitBook 提供支持
在本页
  • WSL 环境安装
  • 准备工作
  • Docker 安装

这有帮助吗?

  1. 時雨
  2. 2019

08 WSL 安装 Docker 实录

上一页07 字符编码の小常识下一页09 Eriri comic reader

最后更新于1年前

这有帮助吗?

WSL(Windows Subsystem for Linux)是 win10 自带的适用于 Linux 的子系统。相比于虚拟机更为轻巧。启用 WSL 后配合 Win10 商店自带的 Ubuntu,便可在 Win10 上运行 Linux 系统。

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

本文是在自己在 Win10 WSL 环境下安装 Docker 的实录。

WSL 环境安装

启用 WSL

控制面板>程序和功能>启用或关闭 window 功能>勾选“适用于 Linux 的 Windows 子系统”,之后重启系统。

安装 Ubuntu

在 Microsoft Store 搜索 Ubuntu 并安装:

安装完成查看基本信息:

# 查看linux内核版本
uname -r

# 查看系统版本
cat /etc/lsb-release

# 查看本地磁盘内存情况
df -h

更新软件源(阿里云源)并更新软件

# 使用 root 权限登录,后续输入密码
sudo -i

# 接下来备份当前源,输入以下命令
cp /etc/apt/sources.list /etc/apt/sources.list.old

# 这个 sources.list 文件就是源文件,删除该文件,重新写一个
rm /etc/apt/sources.list
vim /etc/apt/sources.list

将以下内容 copy 过去并保存退出:

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

之后可以开始更新软件镜像源和软件包:

sudo apt update   # 更新软件源
sudo apt upgrade  # 更新软件包

安装必要工具

之后我们先安装一些必要的工具:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

准备工作

vim 美化

修改 vim 配色为 molokai:

mkdir .vim
cd .vim
git clone https://github.com/tomasr/molokai.git
cp -rf molokai/colors/ ./colors
vim vimrc
colorscheme molokai

启动 SSH

之后我们会在 win10 桌面上通过 SSH 远程连接 Ubuntu,所以先安装配置 SSH 服务:

# 设置 root 的口令(密码),用作后续登陆使用
sudo passwd root

# 安装 openssh-server(似乎 ubuntu 自带已安装)
sudo apt install openssh-server

# 备份很重要
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 使用 vim 进行编辑
sudo vim /etc/ssh/sshd_config

# 在 vim 中分别找到并对应修改四处,具体如下:
Port 8022
ListenAddress 0.0.0.0        # 如果需要指定监听的 IP 则去除最左侧的井号,并配置对应 IP,默认即监听 PC 所有 IP
PermitRootLogin yes           # 如果你需要用 root 直接登录系统则此处改为 yes
PasswordAuthentication yes    # 将 no 改为 yes 表示使用帐号密码方式登录

之后启动 SSH 并检查状态,输出 running 即正确:

sudo service ssh start             # 启动 SSH 服务
sudo service ssh status            # 检查状态
sudo systemctl enable ssh          # 开机自动启动 SSH 命令

之后便可在 win10 系统上通过 SSH 远程连接:

ssh root@127.0.0.1 -p 8022

可能会出现连接被拒绝 Connection closed by 192.168.50.179 port 8022,应该是之前启动 SSH 时未生成 key:

sudo service ssh start # 启动 SSH 报下面提示则说明 key 未生成
# * Starting OpenBSD Secure Shell server sshd                                                                         # Could not load host key: /etc/ssh/ssh_host_rsa_key
# Could not load host key: /etc/ssh/ssh_host_ecdsa_key
# Could not load host key: /etc/ssh/ssh_host_ed25519_key

需要执行以下命令,之后便可连接成功:

sudo dpkg-reconfigure openssh-server

使用 Jupyter 进行远程交互

通过远程交互,可以在浏览器上实现 win10 与 Ubuntu 文件共享:

sudo apt install python-pip # 安装的 python2 的 pip
sudo apt install python3-pip # 安装的 python3 的 pip
sudo pip3 install jupyter # 用 python2 安装 jupyter
pip3 install ipykernel # 使得 jupyter 内核可以同时拥有 python2 和 python3
jupyter notebook --allow-root

安装过程报错 ImportError: cannot import name 'sysconfig',按以下流程修复,之后重走上面安装流程即可:

# 修改 sources.list 源文件
vim /etc/apt/sources.list

# 添加以下内容
deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted universe

# 更新软件源
sudo apt update
# 更新软件包
sudo apt upgrade

安装过程报错 ImportError “No Module named Setuptools”,解决方式:

sudo apt-get install python-setuptools
sudo apt-get install python3-setuptools

Docker 安装

通过上面我们知道 docker 的架构设计分为三个组件:一个客户端,一个 REST API 和一个服务器(守护进程)。

这里我们守护进程使用 docker for windows,客户端在 ubuntu 安装。

安装 docker for windows

必须勾选最后一项,否则将不能在 wsl 中使用 docker。

安装 docker 客户端

apt install docker.io

配置 WSL

echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
source ~/.bashrc # 更新环境变量

文件共享

通过 docker for windows 可以实现共享磁盘 💽,以 c 盘为例,挂载后在 wsl 中路径为 /mnt/c。

以上就是自己在 WSL 里安装启用 Docker 的全流程。Just enjoy it.

参考文章:

【WSL+Docker】新手 Win10 下的 WSL Ubuntu18 并安装使用 Docker
Windows 10 bash & Windows docker 問題處理
启用 WSL
安装 Ubuntu
SSH配置
docker for windows