0%

Win10安装配置Docker

Win10安装配置Docker的方法

在Win10中安装配置Docker,有四种方法:
(1)在Win10上安装Docker Desktop。Docker Desktop 利用了 Windows 10 的 Hyper-V 虚拟化技术,来创建一个轻量级的 Linux 虚拟机(VM),并在其中运行 Docker 引擎和容器。这样,用户就可以在 Windows 上享受到 Linux 上的 Docker 功能和性能。
(2)在Win10上安装Docker Toolbox。Docker Toolbox 是一种适用于不支持 Hyper-V 的旧版 Windows 系统的替代方案,它使用了 Oracle VirtualBox 来创建一个 Linux VM,并在其中运行 Docker 引擎和容器。Docker Toolbox 需要用户手动配置一些网络和存储设置,以便让 Windows 和 VM 之间进行通信和数据交换。
(3)使用VirtualBox等虚拟化工具启动一个Linux虚拟机(与方法(2)类似),然后在虚拟机中安装使用Docker。
(4)在Win10上安装一个WSL2 Linux系统,然后在Linux系统中安装Docker。

无论哪种方法,想要在 Windows 上运行 Docker,都需要一个 Linux VM 来托管 Docker 引擎和容器,因为 Docker 是基于 Linux 内核的技术,而不能直接在 Windows 内核上运行。但是,用户可以通过命令行或图形界面来操作和管理 Docker 容器,就像它们是本地应用程序一样。

方法(2),Docker Toolbox的安装配置方法,参考文档《K8S入门篇》
方法(3),虚拟机中安装使用Docker的方法,和Linux中安装使用Docker的方法没有区别,参考文档《Docker入门篇》

本文中,我们学习方法(1)Docker Desktop安装配置方法,以及方法(4)Win10中安装Linux并在Linux中安装Docker的方法。

WSL2简介

WSL全拼是Windows Subsystem for Linux,WSL2是适用于Linux的Windows子系统体系结构的一个新版本。
WSL2是基于Hyper-V虚拟化技术的,它在Windows上启动一个真正的Linux系统,使用一个定制的Linux内核。这个内核支持完整的Linux系统调用,所以可以在WSL2中运行任何Linux应用程序。

WSL2和Windows之间相当于两台处于一个网络中但分别独立的主机,我们称这个网络为WSL网络。我们可以在Windows主机上使用ipconfig命令来查看Windows主机在WSL网络中的地址,相应地,在WSL2中你可以使用ifconfig命令来查看WSL2在WSL网络中的地址2。这样我们就可以在两个系统之间进行网络通信,比如访问Web服务或数据库等。

WSL2还保留了WSL1的无缝集成特性,比如我们可以从Windows资源管理器中访问Linux文件系统,或者从Linux终端中运行Windows应用程序等。我们还可以通过wsl命令来管理和配置WSL2。

参考文档:

安装WSL2

1、打开PowerShell
搜索PowerShell,以管理员身份运行

2、启用适用于 Linux 的 Windows 子系统

1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

3、启用虚拟机功能

1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

4、下载 Linux 内核更新包
下载Linux 内核更新包,双击安装。

5、将WSL2设置为默认版本

1
wsl --set-default-version 2

安装配置Docker Desktop

安装Docker

下载Docker Desktop for Windows,双击安装。
安装时勾选使用WSL2 backend,在Windows上运行一个真正的Linux环境,但是无需传统虚拟机或双系统的额外负担,性能更好。

进入根路径的方法

方法一:打开文件资源管理器,点击左侧Linux

方法二:Windows资源管理器路径中输入

1
\\wsl.localhost\docker-desktop-data

使用示例

以安装MySQL为例:

1
2
3
docker pull mysql:8.0.28

docker run --name mysql -d -p 3306:3306 -v D:\DockerData\mysql\mysql-files:/var/lib/mysql-files -v D:\DockerData\mysql\conf.d:/etc/mysql/conf.d -v D:\DockerData\mysql\mysql:/var/lib/mysql -v D:\DockerData\mysql\log:/var/log/mysql -e MYSQL_ROOT_PASSWORD=voidking mysql:8.0.28

注意:这里挂载宿主机目录使用的是Win10中的目录D:\DockerData\mysql,方便查找文件。
如果依然使用/opt/mysql,那么文件很难找到(我没找到,捂脸)。

更多内容参考文档:《使用Docker安装配置MySQL》

更改Docker数据盘到D盘

参考文档:WSL2下修改Docker Desktop镜像存放路径

WSL发行版默认安装在C盘,在%LOCALAPPDATA%/Docker/wsl目录。
Docker的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中。

更改Docker数据盘方法:

1、关闭docker

2、关闭所有linux发行版

1
2
3
wsl -l --all
wsl -l -v
wsl --shutdown

3、导出docker-desktop-data到D盘(原有的docker images不会一起导出)
只需要迁移docker-desktop-data一个发行版就行,docker-desktop不用管,它占用空间很小。
手动创建目录D:\DockerData\docker-desktop-data\,然后执行导出命令

1
wsl --export docker-desktop-data D:\DockerData\docker-desktop-data\docker-desktop-data.tar

4、注销 docker-desktop-data

1
wsl --unregister docker-desktop-data

5、导入 docker-desktop-data

1
wsl --import docker-desktop-data D:\DockerData\docker-desktop-data\ D:\DockerData\docker-desktop-data\docker-desktop-data.tar --version 2

6、启动docker

Win10中安装Ubuntu18

参考文档:

安装Ubuntu18

打开Microsoft Store,搜索Ubuntu,选择Ubuntu18版本,获取
或者直接打开Ubuntu 18.04 LTS,获取

首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。 未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 发行版创建用户帐户和密码。

设置WSL2默认发行版

1
2
wsl -l -v
wsl --set-default Ubuntu-18.04

设置默认WSL2默认发行版之后,就不用使用指定-d指定发行版了。

详情参阅WSL 文档的基本 comands

登录Ubuntu18

方法一:搜索Ubuntu,打开Ubuntu 18.04.5 on Windows,会直接登录到发行版内部

方法二:PowerShell中执行wsl命令登录进入发行版内部

1
2
3
wsl -l -v
wsl -d Ubuntu-18.04
wsl -d Ubuntu-18.04 -u root

PS:docker-desktop-data 发行版是不支持 wsl -d 登录的。

磁盘路径说明

C盘对应Ubuntu18路径/mnt/c,D盘对应Ubuntu18路径/mnt/d

配置SSH登录

参考文档:Win10安装Ubuntu

配置远程登录

Ubuntu18支持SSH登录了,但是只能从Win10宿主机上登录,相同局域网的其他主机还不能访问到Ubuntu18。
本节配置使局域网其他主机也可以访问到Ubuntu18。

参考文档:

固定IP地址(无效)

每次重启WSL2 Ubuntu18重启后,IP地址都会发生变化,无法固定路由规则,因此需要配置固定IP。

1、查看当前IP配置

1
2
ifconfig
route -n

查看到IP地址为172.29.132.34,网关为172.29.128.1(Win10虚拟网卡的IP)。

2、编辑网卡配置文件

1
vim /etc/netplan/01-network-manager-all.yaml

如下修改:

1
2
3
4
5
6
7
8
9
10
11
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
eth0:
dhcp4: false # 禁止动态IP
addresses: [172.29.132.34/20] # IP地址和掩码
gateway4: 172.29.128.1 # 网关
nameservers:
addresses: [180.76.76.76,114.114.114.114] #DNS服务器

3、使配置生效

1
netplan apply

报错:System has not been booted with systemd as init system (PID 1). Can’t operate.

固定IP地址(有效)

参考文档:

1、编写 setip.bat 脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
setlocal enabledelayedexpansion

:: set windows ip
ipconfig | findstr "172.29.128.1" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 172.29.128.1 255.255.240.0
echo set windows ip success: 172.29.128.1
)

:: set wsl2 ip
wsl -d Ubuntu-18.04 -u root ip addr | findstr "172.29.132.34" > nul
if !errorlevel! equ 0 (
echo wsl2 ip has set
) else (
wsl -d Ubuntu-18.04 -u root ip addr add 172.29.132.34/20 broadcast 172.29.143.255 dev eth0 label eth0:1
echo set wsl2 ip success: 172.29.132.34
)

pause

2、以管理员身份运行脚本

3、登录到Ubuntu18,查看IP

配置路由规则

Win10中以管理员身份打开PowerShell,执行

1
2
3
4
5
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.29.132.34 connectport=22

netsh interface portproxy show v4tov4

#netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22

参考文档:Netsh interface portproxy 命令

关闭防火墙

搜索“防火墙”,选择Windows Defender 防火墙,启用或关闭Windows Defender防火墙,关闭防火墙。

或者操作开放端口,参考文档:WIN10电脑怎么开放可访问端口

关闭防火墙之后,使用局域网内的其他主机尝试远程登录Ubuntu18进行测试。

开机自动初始化

1、编写Win10开机自启动脚本 ubuntu18-init.bat
功能包括:自动设置固定IP地址、配置路由规则、启动SSH

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
setlocal enabledelayedexpansion

:: set windows ip
ipconfig | findstr "172.29.128.1" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 172.29.128.1 255.255.240.0
echo set windows ip success: 172.29.128.1
)

:: set wsl2 ip
wsl -d Ubuntu-18.04 -u root ip addr | findstr "172.29.132.34" > nul
if !errorlevel! equ 0 (
echo wsl2 ip has set
) else (
wsl -d Ubuntu-18.04 -u root ip addr add 172.29.132.34/20 broadcast 172.29.143.255 dev eth0 label eth0:1
echo set wsl2 ip success: 172.29.132.34
)

:: set portproxy
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.29.132.34 connectport=22
echo set set protproxy success: 22 -> 172.29.132.34:22

:: start sshd
wsl -d Ubuntu-18.04 -u root /usr/sbin/service ssh start
echo start sshd success: port 172.29.132.34:22

pause

2、ubuntu18-init.bat 脚本放入指定目录
脚本如果放入启动目录中,开机后会自动执行
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

但是,因为我们需要以管理员身份执行,所以放入目录
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

3、创建快捷方式
右键 ubuntu18-init.bat,创建快捷方式,放入到 Startup 目录中
右键快捷方式,属性,高级,勾选用管理员身份运行。

4、重启机器测试
重启机器后,打开任务管理器,详细信息,启动,可以看到ubuntu18-init.bat被调用了。

但是,并没有生效。

开机自动初始化v2.0

1、打开任务计划程序
按键盘上的Windows + R键以打开运行,然后键入taskschd.msc,回车。

2、创建任务
点击创建任务,进行任务配置。

常规参数:

  • 名称:ubuntu18-init
  • 勾选不管用户是否登录都要运行
  • 勾选不存储密码。该任务将只有访问本地计算机资源的权限。
  • 勾选使用最高权限运行。

触发器,新建,开始任务选择启动时,延迟任务时间选择1分钟,勾选已启用,确定。
操作,新建,操作选择启动程序,程序或脚本通过浏览选中ubuntu18-init.bat,添加参数空白,起始于空白(在哪个路径中执行),确定。

3、查看任务
右键任务计划程序库,刷新,即可看到新增的任务。

4、重启机器测试

参考文档:Windows开机启动bat文件

Ubuntu18中安装Docker

安装方法参考文档:《Docker入门篇》

启动Docker

使用service命令启动Docker

1
service docker start

使用示例

以安装MySQL为例:

1
2
3
4
5
6
7
8
9
10
docker pull mysql:8.0.28

docker run --name mysql -d \
-p 3306:3306 \
-v /opt/mysql/mysql-files:/var/lib/mysql-files \
-v /opt/mysql/conf.d:/etc/mysql/conf.d \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=voidking \
mysql:8.0.28

更多内容参考文档:《使用Docker安装配置MySQL》

更改Ubuntu18数据盘到D盘

参考文档:WSL2下修改Docker Desktop镜像存放路径

1、关闭Ubuntu18

1
2
3
wsl -l --all
wsl -l -v
wsl -t Ubuntu-18.04

2、导出Ubuntu18备份文件到D:\Ubuntu18(需要提前创建目录)

1
wsl --export Ubuntu-18.04 D:\Ubuntu18\Ubuntu-18.04.tar

3、注销Ubuntu18

1
wsl --unregister Ubuntu-18.04

5、导入Ubuntu18

1
wsl --import Ubuntu-18.04 D:\Ubuntu18\ D:\Ubuntu18\Ubuntu-18.04.tar --version 2

6、启动Ubuntu18

1
wsl -d Ubuntu-18.04
  • 本文作者: 好好学习的郝
  • 本文链接: https://www.voidking.com/dev-win10-docker/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!源站会及时更新知识点及修正错误,阅读体验也更好。欢迎分享,欢迎收藏~