在Windows10中基于WSL的Docker 安装

系统要求

  • Windows 10 64位:Pro、Enterprise或Education(内部版本16299或更高版本)。对于Windows 10 Home,请参阅Docker Desktop on Windows Home
  • 必须启用Hyper-VContainers Windows功能。
  • 在Windows 10上成功运行客户端Hyper-V需要以下硬件前提条件:

步骤一:安装WSL

适用于 Linux 的 Windows 子系统(WLS)安装指南

步骤二:安装Docker Desktop for Windows

  • Docker Desktop for WindowsDocker for Microsoft Windows的社区版本。点击下载Docker Desktop for Windows
  • 下载完成后,双击文件进行安装。

步骤三:迁移Docker镜像文件

Docker镜像文件默认存储在C盘,为了避免占用C盘,对Docker镜像文件进行迁移。

  1. 退出Docker桌面版,确认所有wsl应用都已退出;
wsl -l -v
  1. 导出docker镜像文件;
wsl --export docker-desktop-data D:\\WSL\\docker-data\\docker-desktop-data.tar
wsl --export docker-desktop D:\\WSL\\docker-data\\docker-desktop.tar
  1. 注销docker-desktop-data;
wsl --unregister docker-desktop-data
wsl --unregister docker-desktop
  1. 重新创建wsl子系统:
wsl --import docker-desktop-data D:\\WSL\\docker\\desktop-data "D:\\WSL\\docker-data\\docker-desktop-data.tar" --version 2
wsl --import docker-desktop D:\\WSL\\docker\\desktop "D:\\WSL\\docker-data\\docker-desktop.tar" --version 2

配置镜像加速器

在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:

{
  "registry-mirrors": ["https://q14p4dcc.mirror.aliyuncs.com"],
  "insecure-registries": [],
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

在终端命令行执行如下命令查看 Docker 版本:

docker version

结果如下:

D:\MyDocker>docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.2
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:00:27 2020
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:07:04 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Docker 引擎(Engine)升级

升级 Docker 引擎的关键步骤如下:

  • 需要重视升级操作的每个前置条件,包括确保容器配置了正确的重启策略;
  • Swarm Mode 模式下使用服务时,需要确保正确配置了 draining node

当完成了上述前置条件的检查之后,可以通过如下步骤完成升级操作:
(1)停止 Docker 守护程序。
(2)移除旧版本 Docker
(3)安装新版本 Docker
(4)配置新版本的 Docker 为开机自启动。
(5)确保容器重启成功。

Docker 存储驱动的选择

每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统。默认情况下,容器的所有读写操作都发生在其镜像层上挂载的文件系统中,所以存储是每个容器的性能和稳定性不可或缺的一个环节。

以往,本地存储是通过存储驱动(Storage Driver) 进行管理的,有时候也被称为 Graph Driver 或者 GraphDriver。虽然存储驱动在上层抽象设计中都采用了栈式镜像层存储和**写时复制(Copy-on-Write)**的设计思想,但是 DockerLinux 底层支持几种不同的存储驱动的具体实现,每一种实现方式都采用不同方法实现了镜像层和写时复制。虽然底层实现的差异不影响用户与 Docker 之间的交互,但是对 Docker 的性能和稳定性至关重要。

  • Linux 上,Docker 可选择的一些存储驱动包括 AUFS(最原始也是最老的)、Overlay2(可能是未来的最佳选择)、Device MapperBtrfsZFS
  • Windows 操作系统上,Docker 只支持一种存储驱动,即 Windows Filter

存储驱动的选择是节点级别的。这意味着每个 Docker 主机只能选择一种存储驱动,而不能为每个容器选择不同的存储驱动。在 Linux 上,大家可以通过修改 /etc/docker/daemon.json 文件来修改存储引擎配置,修改完成之后需要重启 Docker 才能够生效。下面的代码片段展示了如何将存储驱动设置为 overlay2

{
  "storage-driver": "overlay2"
}

如果修改了正在运行 Docker 主机的存储引擎类型,则现有的镜像和容器在重启之后将不可用,这是因为每种存储驱动在主机上存储镜像层的位置是不同的(通常在/var/lib/docker/ /...目录下)。修改了存储驱动的类型,Docker 就无法找到原有的镜像和容器了。切换到原来的存储驱动,之前的镜像和容器就可以继续使用了。

如果希望在切换存储引擎之后还能够继续使用之前的镜像和容器,需要将镜像保存为 Docker 格式,上传到某个镜像仓库,修改本地 Docker 存储引擎并重启,之后从镜像仓库将镜像拉取到本地,最后重启容器。

在终端命令行执行 docker info 命令即可查看存储引擎信息:

D:\MyDocker>docker info
Client:
 Debug Mode: false
 Plugins:
  scan: Docker Scan (Docker Inc., v0.3.4)

Server:
 Containers: 12
  Running: 1
  Paused: 0
  Stopped: 11
 Images: 12
 Server Version: 19.03.13
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175
 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
 init version: fec3683
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.19.128-microsoft-standard
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 6.064GiB
 Name: docker-desktop
 ID: WN22:KFRM:3WJL:BHOC:IAUN:PLCR:7JBS:VGIN:DQZX:RWLS:QEEI:QXKW
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
 Product License: Community Engine

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

great-wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值