VScode + WSL2 + Docker



1, Docker容器概述

Docker 是一种工具,用于创建、部署和运行应用程序(通过使用容器)。 容器使开发人员可以将应用与需要的所有部件(库、框架、依赖项等)打包为一个包一起交付。 使用容器可确保此应用的运行与之前相同,而不受任何自定义设置或运行该应用的计算机上先前安装的库的影响(运行应用的计算机可能与用于编写和测试应用代码的计算机不同)。 这使开发人员可以专注于编写代码,而无需操心将运行代码的系统。

Docker 容器与虚拟机类似,但不会创建整个虚拟操作系统。 相反,Docker 允许应用使用与运行它的系统相同的 Linux 内核。 这使得应用包能够仅要求主计算机上尚未安装的部件,从而降低包大小以及提高性能。

将 Docker 容器与 Kubernetes 等工具结合使用以实现持续可用性是容器普及的另一个原因。 这样就可以在不同的时间创建应用容器的多个版本。 并且每个容器(及其特定的微服务)均可以动态更换,而无需停止整个系统进行更新或维护。 你可以准备一个包含所有更新的新容器,将该容器设置用于生产,并在新容器准备就绪后直接指向该容器。 你还可以使用容器对不同版本的应用进行存档,如有需要,还可将其作为安全回退保持运行。

2, 先决条件

  • 确保计算机运行的是 Windows 10(已更新到版本 2004 的内部版本 18362 或更高版本)。
  • 安装 WSL,并为在 WSL 2 中运行的 Linux 发行版设置用户名和密码。
  • 安装 Visual Studio Code(可选)。 这将提供最佳体验,包括能够在远程 Docker 容器中进行编码和调试并连接到 Linux 发行版。

3, 安装 Docker Desktop

借助 Docker Desktop for Windows 中支持的 WSL 2 后端,可以在基于 Linux 的开发环境中工作并生成基于 Linux 的容器,同时使用 Visual Studio Code 进行代码编辑和调试,并在 Windows 上的 Microsoft Edge 浏览器中运行容器。

若要安装 Docker(在已安装 WSL 之后):

  1. 下载Docker Desktop 并按照安装说明进行操作。

  2. 安装后,从 Windows 开始菜单启动 Docker Desktop,然后从任务栏的隐藏图标菜单中选择 Docker 图标。 右键单击该图标以显示 Docker 命令菜单,然后选择“设置”。
    在这里插入图片描述

  3. 确保在“设置”>“常规”中选中“使用基于 WSL 2 的引擎”。

在这里插入图片描述

  1. 通过转到“设置”>“资源”>“WSL 集成”,从要启用 Docker 集成的已安装 WSL 2 发行版中进行选择。
    在这里插入图片描述
  2. 若要确认已安装 Docker,请打开 WSL 发行版(例如 Ubuntu),并通过输入 docker --version 来显示版本和内部版本号

4, 拉取Docker镜像

开启WSL终端,输入nvidia-smi,查看自己的cuda版本号
在这里插入图片描述
进入下述连接官方docker镜像库

按如下图的操作拉取docker官方提供的深度学习镜像。

可能网速有些慢,不过网上有换源加速的方法,需要的话自行参考。

在这里插入图片描述
在这里插入图片描述
完成后输入命令 docker images 就可以看到刚刚拉到本地的镜像了。

5,Docker的终端使用快速入门

5.1镜像的使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

下面我们来学习:

1、管理和使用本地 Docker 主机镜像
2、创建镜像

5.1.1列出镜像列表

我们可以使用 docker images 来列出本地主机上的镜像。
在这里插入图片描述
各个选项说明:

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

5.1.2获取一个新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。下载完成后,我们可以直接使用这个镜像来运行容器。

5.1.3删除镜像

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world

5.1.4创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1、从已经创建的容器中更新镜像,并且提交这个镜像
2、使用 Dockerfile 指令来创建一个新的镜像

这里只详细介绍第一种:

第一步,在运行的容器内使用 apt-get update 命令进行更新。 在完成操作之后,输入 exit 命令来退出这个容器。 此时,下面示例中 ID 为 e218edb10161 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

上述代码中,各个参数说明:

  • -m: 提交的描述信息

  • -a: 指定镜像作者

  • e218edb10161:容器 ID

  • diantou/ubuntu:v1: 指定要创建的目标镜像名和标签

完成后,我们可以使用 docker images 命令来查看我们的新镜像 diantou/ubuntu:v1
可以使用我们的新镜像 diantou/ubuntu:v1 来启动一个容器

docker run -t -i runoob/ubuntu:v2 /bin/bash            

设置镜像标签
此外,我们可以使用 docker tag 命令,为镜像添加一个新的标签。

5.2容器的使用

5.2.1启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

docker run -it --gpus all --shm-size 128G -v /data1:/data1 -v /data2:/data2 -d --name arwin_cv IMAGE /bin/bash

参数说明:

–gpus all:参数指定使用所有gpu
–shm-size: 参数允许您指定可供容器使用的共享内存。它提供了更高的分配内存访问权限,从而让内存密集型容器能够更快地运行。
-v:挂载目录,这个一般是将宿主机的代码目录及一些配置文件,挂载到容器内部。
-i: 交互式操作。
-t: 终端。
IMAGE: 替换为ubuntu 镜像名称。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

其他参数具体含义见链接参数解释

启动已停止的容器使用命令:

docker start <容器 ID>

5.2.2进入容器

进入容器,可以通过以下指令进入:

docker attach

docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。

下面演示了使用 docker attach 命令。

docker attach 1e560fca3906 

下面演示了使用 docker exec 命令。

docker exec -it <容器 ID> /bin/bash

更多参数说明请使用 docker exec --help 命令查看。

5.2.3退出/停止/删除容器

要退出容器终端,直接输入 exit:

root@ed09e4490c57:/# exit

若要停止容器,命令如下:

docker stop <容器 ID>

停止的容器可以通过 docker restart 重启:

docker restart <容器 ID>

删除容器使用 docker rm 命令:

docker rm -f  <容器 ID>

5.2.4导出/导入容器

如果要导出本地某个容器,可以使用 docker export 命令。

docker export 1e560fca3906 > ubuntu.tar

以上命令的含义是导出容器 1e560fca3906 到本地文件 ubuntu.tar。

如果要导入可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1 再用此镜像开启一个新的容器就可以了。

cat docker/ubuntu.tar | docker import - test/ubuntu:v1

5,VScode使用Docker的快速入门

1, 先决条件

  • 按照上述流程完成Docker安装。
  • 安装完成 WSL,并在WSL中完成了docker镜像的拉取和容器的创建。
  • 安装 Visual Studio Code 。 并下载了插件Python,Docker和Remote Develpment

2, 连接顺序

  • step1:打开VScode,如完成先决条件2,应自动连接到WSL中了,如下图所示:
    在这里插入图片描述
    如果没有自动连接,参考我之前的博文传送门配置并手动连接WSL

  • step2:在WSL环境下,打开插件库,检查Python,Docker和Remote Develpment 是否安装,没有的话重新安装(ps,先决条件3是按照在本地,不是WSL,所以要再装一遍)。安装后,点击Docker入口,如下图所示:
    在这里插入图片描述
    上图的c433 arwin_cv是我自己创建的docker容器,根据个人,名字会不同。开启容器后,点击Attach Visual Studio Code即可进入到Docker容器中,进行编程开发。

在这里插入图片描述
到此,大功告成~

猜你喜欢

转载自blog.csdn.net/qq_39297053/article/details/126881340