我不认识您,但是有时您需要快速执行测试,玩库或什至没有所有的麻烦来再次安装所有内容。
为此,我希望您想象您在家开发调查甚至要在大学展示的软件的情况。您想向老师和您的同学介绍自己创造的内容。但是您还记得,您立即为在大学机器上安装图书馆所做的所有工作感到难过,测试以查看一切是否正在运行以及其他几件事。为了进一步改善这种情况,您的演讲是在星期四晚上,您在星期三去准备一切。但是,但是,在学院工作的人必须在定于星期四早上的大学机器上进行格式。只有你知道吗?当然。您不在大学工作以了解这些事情。在星期四晚上到达无效的事情,你们所有人都无法出席。所有这些努力都是徒劳的。
本文我专注于为数据科学开发开发一个容器,当然可以是您想要的任何东西。但是利用大学创造的情况,我们在那里展示了一项工作。本文的开发将使您了解何时要在大学或去任何地方展示工作,只需使用容器或查找您创建的图像,该图像将如下所示。因此,您只需要在使用它的位置,然后将容器与您的库和应用程序一起运行。我不会专注于机器学习概念,但我旨在展示容器及其使用的准备。
好吧,这就是为什么我带来的解决方案无法解决100%,但我认为这是99.8%的原因。哈哈哈。让我们走。
出于任何疑问,我在具有Linux操作系统的机器上开发,整个文章将使用此类型的环境开发。我什至不知道Windows的工作原理,我强烈建议您查看本文适合您操作系统的工具的文档。另一个观察结果是,我写的大多数文章都可以在某些版本传播平台上提供该项目,最后您可以找到链接。
。大家,我想请您不要忘记离开一个,它可以帮助我看看您是否喜欢内容。也要吸引更多的人
警告我离开始终检查工具的文档。
要求:
- Computer
- 视觉代码(IDE) - 可以是任何一个。
- Docker已安装
- 安装在机器上的git
- gitlab-我使用了gitlab,因为我喜欢它足以使用CI/CD文件。这对这一发展有很大帮助。
毫无疑问,您必须在个人机器和我们要开发的大学的机器上安装Docker。我不会详细介绍安装细节,因为我认为每天的文档更改是不必要的,并且在您甚至可以思考之前都会出现版本。我将离开链接:
第一步准备开发环境
我将使用GitLab开发这个项目。因此,如果您不知道Gitlab,请不要担心,您将需要拥有一个GitLab帐户。这些步骤将得到很好的解释。
创建帐户后,您将创建一个项目。
这样,您将命名您的项目。通过项目路径定义用户。私人或公共由您决定。利用优势,也已经创建了一个readme.md。那是为了进步。
他将我的项目称为数据科学环境。这是您的选择。现在,让我们将项目克隆到机器上。您保存的地方取决于您。我喜欢保存到〜/documents/projects_gitlab 。保持井井有条和实用。
现在您将克隆您的项目。
git clone git@gitlab.com:public-dev-projects-1/data-science-environment.git
那个点 public-dev-projects-1 应该是您的用户名,我的用户是不同的,因为我喜欢为我正在从事的项目创建组,Gitlab为我提供了一个更大的组织我与之合作,但也可以自行决定。
在终端中运行命令:
cd <name_your_project>
要能够访问您的项目,您的路径必须看起来像〜/documents/projects_gitlab/your_project 。好吧,现在让我们开始做生意。
选择您习惯于使用并打开刚克隆的存储库的IDE。
步骤2-创建Docker映像
现在您将创建一个Docker映像,使用您的IDE,我创建了一个名为 dockerfile.jupyterlab 的新文件。点之后,它不需要 .jupyterlab 它可能只是 dockerfile 也可以正常工作。
如果您不知道太多的Dockerfile基本上是奶奶的食谱。但是,它不是巧克力蛋糕,而是容器的配置。
在您的 dockerfile.jupyterlab 文件中,您将添加:
- 来自Python:3.10-Slim:这将是我们要使用容器的图像。当我们要使用笔记本时,我们需要一个python映像,所以我选择了3.10 slim版本,因为它已经使用了一段时间了,到目前为止,我感到最舒适,而且更轻。 li>
- workdir /笔记本:这将是我们的工作目录,我放了笔记本,因为它将是笔记本的地方。但是可以根据您的选择进行更改,此外,还有一个码头卷将在以后进行解释。
- 复制需求_lab.txt /笔记本:现在有必要复制我们的需求_lab.txt,请放心,尚未创建文件,我们将尽快到达那里。我们的蛋糕的需求和成分清单,哎呀,我们的容器哈哈哈,我在这里渴望。我们将有面粉,鸡蛋,巧克力,我们将有大熊猫,numpy,jupyterlab,这是我们的图书馆,能够在jupyter笔记本中发展我们的想法。
- 运行-mount = type =缓存,target =/root/.cache/pip \ pip3 install -r unignts_lab.txt:此步骤将安装我们需求中的所有库。
- 运行RM Euncess_lab.txt:安装后不需要要求,因此让我们删除它们。那是因为在创建容器之后,您不会仅在需要的情况下更改Dockerfile,您将继续使用该容器。
- entrypoint [“ jupyter”,“ lab”,“ - notebookapp.token =''”,“ - ip = 0.0.0.0”,“ - port = 8888”,“ - -NO-BROWSER”, “ - hall-wall-root”]:这是能够启动jupyter笔记本电脑的最终命令。我选择了Jupyterlab,但这也取决于您。在我的要求中,我添加了两者,查看文档,您可以看到您最好使用的命令。
您的Dockfile应该看起来像这样:
FROM python:3.10-slim
WORKDIR /notebooks
COPY requirements_lab.txt /notebooks
RUN --mount=type=cache,target=/root/.cache/pip \
pip3 install -r requirements_lab.txt
RUN rm requirements_lab.txt
ENTRYPOINT ["jupyter", "lab", "--NotebookApp.token=''","--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]
如果您缺少某些东西,您可以咨询我将提供的存储库。
第三步:创建需求文件
现在,您将创建一个名为 unignts_lab.txt 的新文件,通常您会发现它为unignts.txt。但这也取决于您,在Dockerfile中只需添加正确的名称即可。创建文件后,您将添加要在数据科学项目中使用的库。所需的两个是笔记本和 jupyterlab 。如果我们无法在容器中启动Jupyter笔记本。
scikit-learn==1.2.2
pandas==2.0.3
numpy==1.25.0
jupyterlab==4.0.2
notebook==6.5.4
现在,我们完成了所有步骤,以拥有数据科学容器。我们继续进行命令。
在您的终端中,如果您有一个,它甚至可以在IDE终端中。到目前为止,您一直在执行以下命令。
docker build -f Dockerfile.jupyterlab -t env_ds .
此命令从通过的设置中构建我们的容器。观察我将标志 -f 传递给我的dockerfile名称。然后,我通过另一个 -t 标志,将名称添加到我的图像和点,以指示我的dockerfile在哪里。
现在构造将开始,如果有错误,您错过了您在码头中添加某些东西,甚至路径可能是错误的。
施工没有问题,让我们运行我们的容器。
docker container run --rm -p 8888:8888 -v "${PWD}/notebooks:/notebooks" -d --name containerlab env_ds
使用此命令,我们将指示容器的 -p 端口,请注意它必须与Dockerfile中定义的入口点相同。您还记得您提到的是我们的 workdir 被称为笔记本。在我们的目录中,我们将创建一个称为笔记本的文件夹。创建的请注意,我们将创建一个从本地文件夹到容器的 WorkDir 的 -v 。它必须是两者的同名吗?但是您可以选择,但不要忘记正确地传递到此命令中的卷。我们将其设置为Dipach -d 。因此,我们看不到终端中的执行,但是如果您愿意,只需删除 -D ,就会看到执行。我通常会创建一个文件来执行命令以在另一个终端中查看。我们还给我们的容器一个名字,然后让我们传递图像的名称,以获取所有这些设置的容器。
如果您选择离开二线 -d ,将执行您的容器。让我们运行以下命令。该命令将介绍我们的容器的执行。
docker logs containerlab -f
然后单击链接:
它将在您的浏览器中打开一个选项卡。
boommmmm !!!!我们有我们的环境。现在,让我们创建一个笔记本以测试,然后查看创建卷是否有效。另请注意,因为我创建了 workdir ,我从该工作区开始。
请注意,我们可以使用。和卷?
在那里看着他,完成,开发和创新?请记住,我们在GitLab中创建了一个存储库。刚刚保存您的更改并将其发送到您的存储库。如果您与团队合作,他们只需遵循相同的步骤运行容器,他们将能够使用笔记本。另外,如果您将作品发送给老师,则发送存储库,他还执行了容器的步骤,将维护相同的设置,并且由于某些环境问题而不会损害您所做的工作。但是冷静下来,哈哈哈哈哈还有更多。我花了一段时间才能在Dev.to上发布某些内容,但是当它出来时,很多内容都会出来。
奖金
因为我们已经在gitlab中创建了我们的项目,所以我们可以创建一个CI配置文件,并共同创建要使用的图像的版本。然后,您可以使用库x或y创建图像。感到自由。
,让我们走。在同一项目中,创建一个称为 .gitlab-ci.yml 的文件。我不会详细介绍。但是,该文件将具有我们的定义,可以在我们开发的项目的Gitlab中创建我们的容器注册表。
- 阶段:将执行我们的命令的阶段。
- 图像:为此,我们需要一个docker映像来运行将立即出现的docker注册表命令。
- 脚本:它们与我们在计算机上的命令相同,但是它不会在此阶段过程中执行它们。
- Docker登录名:要连接到Docker注册表,您需要environment variables。这将在平台上进行身份验证。拥有Gitlab帐户已经很有帮助。
- Docker Build:如果您的Dockerfile有任何错误,我们将需要再次构建图像。管道将通知您无法成功继续。
- Docker Push:最后将发送到我们的Gitlab容器注册表。
- 唯一:要在我们的执行分支中选择。例如,如果您在另一个分支中,则不会执行此步骤。
stages:
- build
build image docker:
stage: build
image: docker:23.0.6
services:
- docker:23.0.6-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -f Dockerfile.jupyterlab -t registry.gitlab.com/public-dev-projects-1/data-science-environment/jupyterlab:v1.0 .
- docker push registry.gitlab.com/public-dev-projects-1/data-science-environment/jupyterlab:v1.0
only:
- main
添加了设置后,只需将更改发送到Gitlab。
现在转到您的GitLab存储库,单击“构建”,然后单击管道。使用我们创建的配置文件,我们的管道将开始,我们将能够执行这些命令。
之后,查找容器注册表标签,请注意我们成功了。
现在让我们来看看是否可以使用我们的容器。
一个注意事项,我将项目公开留下,但我仍然需要创建一个令牌才能吸引我的图像。要创建令牌,请转到您的个人资料设置并启用阅读选项。复制提供的令牌并将其添加到下面的命令中。
docker login registry.gitlab.com -u <YOUR_USER_NAME> -p <YOUR_PASSWORD_OR_TOKEN>
如果您有两因素身份验证,则会失败,您将需要创建一个令牌。我已经建议创建令牌,更实用。任何东西,如果您不想再使用它,请删除它。
它将返回此消息:
输出:登录成功
现在,让我们使用以下命令下载图像:
docker image pull "registry.gitlab.com/public-dev-projects-1/data-science-environment/jupyterlab:v1.0"
现在运行以下命令以验证我们的docker映像:
docker images
我们已经准备好了图像,让我们再次运行笔记本,但是在创建一个笔记本文件夹以创建卷之前,我在文档中创建了卷。我的终端与此文件夹在同一位置开放,但我不在其中。
让我们运行以下命令。
docker run -it --rm -p 8888:8888 -v "${PWD}/notebook:/notebooks" registry.gitlab.com/public-dev-projects-1/data-science-environment/jupyterlab:v1.0
再次单击链接以在浏览器中打开。
查看我们的笔记本,直到现在才从注册的图像开始。很酷。
评论:
感谢您阅读这篇文章。希望我能帮助您理解。任何代码或文本错误,请随时返回。不要忘记离开这样的人,以便您可以吸引更多的人。