Windows + WSL2 的 docker 安装方法,以及配置 python 环境、传输文件并执行 .py 脚本

1 写在前面

1.1 docker 是什么 ?

众所周知,代码复现最头疼的莫过于 运行环境 问题,明明按照 README 配置好了环境,却因为库版本、系统、硬件层面等的差异,出现一些莫名其妙的错误。

docker 平台的出现改变了这一现状,它通过创造一个容器 (container),技术人员在其中安装开发环境、完成代码开发并打包,使用者下载镜像 (image) 后即可复现这个自带开发环境的容器,从而顺利使用上程序,即口号 “build, share and run”。

1.2 WSL2 是什么 ?

WSL2 (Windows Subsystem for Linux 2) 是微软自带的 Linux 子系统,最早发布于 2021 年的 Windows 10 中,目前在 Windows 10 和 Windows 11 中都可以安装和运行。

docker 必须运行在 Linux 系统下,因此 Windows 系统需要调用 WSL2 来实现 docker。

2 安装

2.1 检查 windows 的子系统功能是否开启

  • 左下角搜索 “启用或关闭 windows 功能”
  • 找到 “适用于 Linux 的 Windows 子系统”
  • 确保前面的框打勾即可

2.2 更新 WSL2

wsl --set-default-version 2

更多关于 WSL2 的安装问题请见:

https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package

2.3 安装 Docker

更多关于 WSL2 的安装问题请见:

https://docs.docker.com/desktop/install/windows-install/

3 Docker 平台功能简介

3.1 容器、镜像和数据卷

打开 Docker Desktop,可以看到左侧有三个主要功能:

在这里插入图片描述

  • 容器 (Containers):正在运行的容器
  • 镜像 (Images):环境文件,可以通过右上角 Search 找到你所需要的环境
  • 数据卷 (Volumes):给容器挂载的硬盘,方便和 Windows 系统交换数据

3.2 从 Windows Powershell 控制 Docker

Docker Desktop 允许方便地查看和删除最近的活动,但是操作起来并不清晰和明确,因此更推荐在命令行执行指令,以下列举了最常见的指令:

  • 镜像:docker pull xxx (下载) / docker run xxx (安装) / docker image ls (列表)

  • 容器:docker start xxx (启动) / docker stop xxx (停止) / docker container ls (列表)

  • 数据卷:docker volume create xxx (创建) / docker volume ls (列表)

3.3 正确的使用姿势

  1. 下载所需的 image (环境,譬如 python 3)
  2. 准备一个 volume (数据盘)
  3. 把将要执行的代码和数据放在 volume 里面
  4. 创建 container (容器) ,安装环境,并挂载 volume
  5. 在容器复现的环境内运行代码

4 复现一个自带 python 环境的容器并运行代码

4.1 准备 python 镜像文件

回到 Docker Desktop,右上角搜索 python,然后选择所需的版本,再点击 Pull 即可

完成后,将看到 images 中多了一个 python

在这里插入图片描述

4.2 创建数据盘

打开 Windows Powershell,输入以下指令

完成后可以在 Docker Desktop 的 Volumes 中看到新增的数据盘

docker volume create --name disk

4.3 传输代码文件

该数据盘的实际位置可以通过 Windows 文件浏览器访问:

\wsl.localhost\docker-desktop-data\data\docker\volumes\disk_data

此时可以在该位置新建或者复制进来一个 test.py,内容如下:

print('Hello World!')

答疑:这个奇怪的路径是怎么回事?

请回忆一下 docker 平台的原理,它运行在 Windows 利用 WSL2 创建的 Linux 环境中, 换句话说,以上路径可以理解成:

  1. WSL2 创造了 Linux 系统,位于网络位置 \wsl.localhost
  2. docker 平台安装在该系统中,因此位于 docker-desktop-data 文件夹
  3. docker 创建了一个硬盘,因此位于 \data\docker\volumes 内

4.4 创建容器、安装镜像文件并挂载数据盘

打开 Windows Powershell,输入以下指令

docker run -it --name test -v disk:/mnt python

此时看到进入了容器的 python 环境中,容器的系统是 Linux 系统

Python 3.11.0 (main, Nov 15 2022, 19:58:01) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

答疑:run 里面的参数是怎么回事?

  • -it:以可交互形式创建容器,否则 Powershell 无法进入 Linux 子系统
  • –name test:容器的名字起作 test
  • -v disk:/mnt:把创建的 disk 硬盘挂载到容器的 /mnt 文件夹中
  • python:安装并进入 python 环境

4.5 执行数据盘中的代码

此时,我们已经为 Linux 子系统准备好了 Docker 带来的容器 test,该容器内安装好了 python 环境,同时该容器的 /mnt 文件夹挂载了系统的 disk 文件夹,内含有传输过来的代码,等待进一步执行。

我们首先进入这个容器:

在这里插入图片描述
接着和 Linux 一样,切换容器的工作目录到 /mnt 中,然后执行代码:

cd mnt
python test.py

大功告成:

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以按照以下步骤在 Windows安装 WSL 2 和 Docker: 1. 首先,请确保你的 Windows 版本为 Windows 10 版本 2004 或更高版本,并启用了虚拟化功能。 2. 打开 PowerShell 作为管理员,并运行以下命令以启用 WSL 功能: ``` dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart ``` 3. 下载并安装 WSL 2 更新包: - 从 https://aka.ms/wsl2kernel 下载 WSL 2 Linux 内核更新包。 - 安装该更新包。 4. 设置 WSL 默认版本为 2: - 打开 PowerShell 作为管理员,并运行以下命令: ``` wsl --set-default-version 2 ``` 5. 安装适用于 WSL 的 Linux 发行版: - 打开 Microsoft Store 应用商店。 - 在搜索栏中搜索你选择的 Linux 发行版(如 Ubuntu、Debian、Fedora 等)。 - 选择一个发行版并安装。 6. 配置 WSL 2: - 在 PowerShell 中运行以下命令,将 WSL 2 设置为默认发行版的版本 (将 "YOUR_DISTRO_NAME" 替换为你安装的发行版名称): ``` wsl --set-version YOUR_DISTRO_NAME 2 ``` 7. 下载并安装 Docker Desktop for Windows: - 访问 Docker 官方网站:https://www.docker.com/products/docker-desktop - 下载 Docker Desktop for Windows 并运行安装程序。 8. 在 Docker Desktop 中启用 WSL 2 后端: - 打开 Docker Desktop,点击系统托盘中的 Docker 图标。 - 选择 "Settings"。 - 在 "General" 选项卡下,勾选 "Use the WSL 2 based engine"。 - 选择你所安装的 Linux 发行版作为默认的 WSL 发行版。 现在,你已经成功在 Windows安装WSL 2 和 Docker。你可以在 WSL 中运行 Docker 命令并使用容器了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值