当前位置: 首页 > news >正文

docter的使用、vscode(cursor)和docker的连接,详细分析说明

目录

一、基本命令

二、用案例来学习使用方法

🚀 Pull Python 3.11 镜像并创建命名容器

📋 其他有用命令

在容器中安装依赖

三、直接在镜像中安装依赖(创建自己定制的镜像)

四、在 cursor 中选用容器作为编译器

五、对于整个开发项目,可以同改镜像的 .json 配置文件,更好地管理项目。


一、基本命令

参考视频:40分钟的Docker实战攻略,一期视频精通Docker_哔哩哔哩_bilibili


安装桌面端部分可参考视频:官网安装

先打开docker的桌面版本,一直开着。

打开命令行窗口,

查看版本命令:docker --version


加速配置;

"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.1panel.live","https://hub.rat.dev"]

复制到:docker桌面端.设置->Docker Engine:

粘贴上,粘贴结果如下:


列出所有镜像

docker images

删除镜像

docker rmi 镜像ID

拉取特定cpu架构的镜像:

拉取镜像:

docker pull python:3.11


使用镜像创建并运行容器:(用模具做糕点)

docker run 镜像名字/镜像ID
docker run -d 镜像名字/镜像ID


查看正在运行的容器:

docker ps

宿主机与容器端口映射:(端口绑定)

docker run -p 80:80 镜像名字/镜像ID

挂载卷 ( 目录绑定)联系宿主机与容器的目录

docker run -v 80:80 镜像名字/镜像ID

删除容器:

docker rm 容器ID

下载镜像命令:docker pull

docker pull python:3.11




二、用案例来学习使用方法

在cursor中使用docker

🚀 Pull Python 3.11 镜像并创建命名容器

1. 拉取Python 3.11镜像:

docker pull python:3.11

2. 创建并运行名为camel_env的容器:

docker run -it --name camel_env -v ${PWD}:/app -w /app python:3.11 bash

其中的 -v ${PWD}:/app 表示将当前目录和容器中的 app 目录进行捆绑。

3. 或者一步完成(推荐):

docker run -it --name camel_env -v ${PWD}:/app -w /app python:3.11 bash

📋 其他有用命令

停止正在运行的容器:

exit

启动已存在的camel_env容器:

docker start -i camel_env

这种方式启动的容器,使用exit后容器就直接停止运行了

进入运行中的camel_env容器:

docker exec -it camel_env bash

(这个地方我测试了一下,在docker桌面端run容器后,在命令行窗口可以使用这个命令进入容器,其实上面那个命令就包含了运行容器并进入,但如果使用桌面端启动容器,再使用此命令进入容器的话,使用exit退出容器的时候容器不会停止运行)

在camel_env中运行Python脚本:(这个命令是没进入容器时使用的)

docker exec camel_env python /app/test.py

进入容器后可直接用如下命令来运行脚本:

python /app/test.py

删除容器(如需重新创建):

docker rm camel_env

查看容器状态:

docker ps -a

这样您就有了一个基于Python 3.11的Docker环境,命名为camel_env!

在容器中安装依赖

进入容器后(就相当于linux的命令行窗口了),安装依赖:

pip install -r requirements.txt

这里的依赖是安装到了容器中,原镜像环境并没有依赖。

三、直接在镜像中安装依赖(创建自己定制的镜像)

首先创建文件 Dockerfile,下面是一个示例:

# 使用Python 3.11作为基础镜像
FROM python:3.11# 设置工作目录
WORKDIR /app# 复制requirements.txt并安装依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt# 复制项目文件到镜像
COPY . .# 设置环境变量
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1# 默认运行test.py(可以在运行时覆盖)
CMD ["python", "test.py"]

基于上述文件创建镜像命令:

docker build -t camel_env_custom .

此时这个镜像名叫 camel_env_custom ,用它创建出来的容器,都已经包含依赖了。

使用上面创建的镜像可创建有依赖的容器:

# 基于这个镜像创建的每个容器都有依赖
docker run -it --name container1 camel_env_custom bash
docker run -it --name container2 camel_env_custom bash
docker run -it --name container3 camel_env_custom bash

将自己的镜像push到官网:

# 需先登录docker,直接在桌面端push即可

拉取指定镜像

docker pull <用户名>/<镜像名>:<标签>
# 例如 docker pull username/myapp:latest   

四、在 cursor 中选用容器作为编译器

使用上述方法先创建一个包含依赖的镜像,然后创建容器,将当前项目挂在到容器中的/app文件夹

docker run -v .:app -it --name container2 camel_env_custom bash

法一:

        随后在已安装的扩展(containers)界面,选中刚才创建的镜像,右击,选择 Attach cursor,这会新开一个窗口,在新开的窗口中点击 open folder(注意是左侧 connected to remote中的 open floder,选择容器中的/app文件夹,不要再打开本地文件夹),打开后,这里的工作目录是容器中,这个工作目录和原目录(另一个cursor窗口中的)是挂载着的,同删同改,注意原cursor窗口不要停止容器,否则第二个cursor窗口将断开。

要想第一个窗口exit到本地环境后,第二个窗口仍能正常连接容器,就得让容器不停止,可用使用在docker桌面端run容器的方法(这里如果载桌面端docker中打开的容器的话,在第一个cursor窗口的shell中 exit 退出容器的话,容器仍然不会停止,这样的话第二个cursor窗口就不会断开)

法二:

        或在扩展 dev containers 界面,右击将要使用的容器,选择 Attach in current windows ,同样地打开容器中的 /app 文件夹,这个可用在当前窗口就连接到容器,不会有第二个窗口

注:一个新的容器需要新安装python扩展和debugger扩展(我也不知道为什么,为什么扩展会和环境有绑定呢?)

五、对于整个开发项目,可以同改镜像的 .json 配置文件,更好地管理整个项目的环境。

主要是下面的四个文件:

\Dockerfile

.devcontainer\devcontainer.json

.devcontainer\docker-compose.yml

\start-dev-container.ps1

待深入探索~

windows系统,默认docker是安装在C盘的,

拉取的镜像保存在:C:\Users\Administrator\AppData\Local\Docker\wsl\disk ,非常占用空间,可通过下面方法将镜像放在其他盘:

在桌面端,设置-->Resources-->Disk image location,更改即可。

http://www.lryc.cn/news/617116.html

相关文章:

  • Django Request 与 DRF Request 的区别
  • 低代码开发实战案例,如何通过表单配置实现数据输入、数据存储和数据展示?
  • 智能双行框!百度全量上线AI搜索,是革新浪潮还是昙花一现?
  • ECCV 2024 论文解读丨具身智能、机器人研究最新突破创先点分享合集
  • SQL刷题
  • 使用行为树控制机器人(三) ——通用端口
  • 想冲华为AI认证,怎么选方向?
  • 疯狂星期四文案网第36天运营日记
  • 【Docker-Day 13】超越默认Bridge:精通Docker Host、None与自定义网络模式
  • IDE认知革命:JetBrains AI Assistant插件深度调教手册(终极实战指南)
  • 随身WiFi技术军备赛白热化:WiFi6架构下放中端市场,格行中兴华为三足鼎立;从芯片到场景的 10 款标杆产品深度解析
  • 标准IO详解(fgets、gets、fread、fwrite、fseek 等应用)
  • 面试题-----微服务业务
  • 【PRML】分类
  • VSCode编辑器常用24款基础插件
  • HRM分层推理模型在医疗AI上的应用探析
  • word的正则替换
  • FlinkSql(详细讲解二)
  • 时序数据库选型指南:Apache IoTDB为何成为工业物联网首选?
  • Apache IoTDB 全场景部署:基于 Apache IoTDB 的跨「端-边-云」的时序数据库 DB+AI
  • “底层闭源 + Lua 脚本” 开发模式
  • 鸿蒙Des 加密解密 C++版本
  • vscode的wsl环境,怎么打开linux盘的工程?
  • 第十六届蓝桥杯大赛青少组 C++ 省赛真题解析(2025年8月10日)
  • 未来物联网大模型:物联网硬件+底层驱动+AI 自动生成和调优LUA脚本,
  • 【排序算法】⑤冒泡排序
  • 编程技能:递归
  • 【Lua】XLua加载lua文件
  • (一)vscode搭建espidf环境
  • Linux Web服务器与WordPress部署笔记