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 hub:

docker login

將鏡像先打成 tag :

docker tag camel_env_mirror tianhaoyan/docker_camel_env_mirror:camel_env_mirror

然后將 tag pull 到 hub

拉取指定鏡像

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.pswp.cn/diannao/95308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95308.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用AI大語言模型解決生活中的實際小事情?

我們總以為AI是遙不可及的未來科技&#xff0c;卻忽視了它早已成為生活中最實用的“隱形助手”。在信息爆炸的今天&#xff0c;我們每天被無數生活瑣事包圍&#xff1a;一封專業郵件反復修改措辭、孩子突如其來的數學難題、冰箱里僅剩的食材如何搭配、旅行行程的繁瑣規劃……這…

關于微信小程序的筆記

1.需要獲取demo素材圖片方法&#xff08;2,3&#xff09;2.使用逆向工具進行解包沒有安裝node的需要安裝一下安裝npm i -g wedecode0.8.0-beta.3獲取小程序文件存放路徑/Users/lin/Library/Containers/com.tencent.xinWeChat/Data/.wxapplet/packages/wx060ecb4f74eac0da根據具…

課堂筆記:吳恩達的AI課(AI FOR EVERYONE)-W2 AI項目工作流程

課堂筆記&#xff1a;吳恩達的AI課&#xff08;AI FOR EVERYONE&#xff09;-W2 AI項目工作流程 一、如何開始一個AI項目&#xff1f; 1、建設項目工作流程 2、選擇合適的AI項目 3、為這個項目收集數據和組織團隊二、AI項目的工作流程 &#xff08;1&#xff09;機器學習項目的…

逐際動力開源運控 tron1-rl-isaacgym 解讀與改進

文章目錄概覽基礎框架解讀線速度估計觀測結構仿真實驗點足式步態設計步態相位與接觸狀態建模步態接觸獎勵動作延遲我的改進Point-goal Locomotion觀測修改獎勵修改預訓練地形編碼器Sliced Wasserstein AutoEncoder模型訓練與結果參考材料概覽 這篇博客記錄了我參加逐際動力創學…

人工智能-python-機器學習-線性回歸與梯度下降:理論與實踐

文章目錄線性回歸與梯度下降&#xff1a;理論與實踐1. 引言2. 回歸分析2.1 什么是回歸&#xff1f;2.2 線性回歸2.3 損失函數2.4 多參數回歸3. 參數求解&#xff1a;最小二乘法3.1 最小二乘法 MSE3.2 最小二乘法的優缺點優點&#xff1a;缺點&#xff1a;4. 梯度下降4.1 梯度下…

前端,elment-plus組件:表格,分頁,對話框,表單

Element Plus 核心特性組件體系&#xff1a;表單、表格、彈窗、導航等高頻組件設計理念主題定制&#xff1a;Sass 變量覆蓋與暗黑模式無縫切換國際化支持&#xff1a;多語言動態切換的實現機制TypeScript 支持&#xff1a;完整的類型定義與開發友好性快速上手指南安裝與基礎配置…

【LeetCode】6. Z 字形變換

文章目錄6. Z 字形變換題目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a;解題思路算法分析問題本質分析Z字形排列過程詳解Z字形排列可視化方向控制策略數學規律法詳解各種解法對比算法流程圖邊界情況處理時間復雜度分析空間復雜度分析關鍵優化點…

spring文件下載的方式

spring文件下載的方式方式一:通過ResponseEntity<Resource> 方式來下載方式二:通過ResponseEntity<StreamingResponseBody> 方式來下載方式三:通過Servlet原生下載方式四:通過ResponseEntity<byte[]> 方式來下載四種下載方式的對比1、核心特性對比2、典型場景…

寫一個redis客戶端軟件,參考 Another Redis Desktop Manager 的設計風格。

一個基于 Electron 開發的現代化 Redis 桌面客戶端&#xff0c;參考 Another Redis Desktop Manager 的設計風格。 github倉庫地址 https://github.com/henkuoai/redis-man-pc

Web3: DeFi借貸的安全基石, 了解喂價與清算機制的原理與重要性

今天我們要聊一個DeFi世界里至關重要&#xff0c;但又時常被誤解的話題&#xff1a;為什么DeFi協議需要定期更新喂價和執行清算&#xff1f; 如果大家參與過DeFi借貸&#xff0c;大家可能看到過“清算”這個詞&#xff0c;甚至會有點談虎色變。但實際上&#xff0c;清算和為其提…

「iOS」————響應者鏈與事件傳遞鏈

iOS學習響應者鏈和事件傳遞鏈傳遞鏈&#xff1a;hitTest:withEvent**pointInside:withEvent**響應鏈第一響應者和最佳響應者觸摸事件&#xff08;UITouch&#xff09;UIGestureRecognizer&#xff08;手勢識別器&#xff09;響應者鏈和事件傳遞鏈 iOS事件的主要由&#xff1a;…

修復圖像、視頻和3D場景的AI工具–Inpaint Anything

TL; DR&#xff1a;用戶可以通過單擊來選擇圖像中的任何對象。借助強大的視覺模型&#xff0c;例如SAM、LaMa和穩定擴散 (SD)&#xff0c;Inpaint Anything能夠順利地移除對象&#xff08;即Remove Anything&#xff09;。此外&#xff0c;在用戶輸入文本的提示下&#xff0c;I…

java -jar xxx.jar 提示xxx.jar中沒有主清單屬性報錯解決方案

xxx.jar 中沒有主清單屬性 &#xff08;no main manifest attribute&#xff09;解決方案 java -jar xxx.jar 提示xxx.jar中沒有主清單屬性報錯解決方案 這個錯通常出現在你用 java -jar xxx.jar 啟動&#xff0c;但 JAR 的 META-INF/MANIFEST.MF 里沒有 Main-Class 條目&#…

Myqsl建立庫表練習

目錄 一、windows中選擇一種方式安裝Mysql8.0 二、新建產品庫mydb6_product 1. 新建3張表如下&#xff1a; 1&#xff09;employees表 2&#xff09;orders表 3&#xff09;invoices表 三、新建員工庫mydb8_worker&#xff0c;添加自定義表內容并插入數據 1. 新建庫表 2. 插…

STM32 輸入捕獲,串口打印,定時器,中斷綜合運用

實驗目的 使用定時器 2 通道 2 來捕獲按鍵 2 按下時間&#xff0c;并通過串口打印。 計一個數的時間&#xff1a;1us&#xff0c;PSC71&#xff0c;ARR65535 下降沿捕獲、輸入通道 2 映射在 TI2 上、不分頻、不濾波輸入捕獲原理定時器輸入捕獲實驗配置步驟測量按鍵按下時長思路…

Nacos-2--Nacos1.x版本的通信原理

在Nacos 1.x版本中&#xff0c;客戶端長輪詢&#xff08;Long Polling&#xff09;和服務端UDP主動推送是兩種不同的機制&#xff0c;分別用于配置管理和服務發現場景。它們的核心目標都是實現動態更新的實時感知&#xff0c;但實現方式、數據內容和適用場景完全不同。 1、長輪…

機器學習——09 聚類算法

1 聚類算法聚類算法&#xff1a; 是一種無監督學習算法&#xff0c;它不需要預先知道數據的類別信息&#xff0c;而是根據樣本之間的相似性&#xff0c;將樣本劃分到不同的類別中&#xff1b;不同的相似度計算方法&#xff0c;會得到不同的聚類結果&#xff0c;常用的相似度計算…

生成式AI應用生態的爆發與專業化演進:從零和博弈到正和共贏

2025年,生成式AI產業規模已突破7000億元,全球生成式AI市場規模預計在2028年達到2842億美元(IDC數據)。在這場技術革命中,AI基礎模型的分化已證明:差異化競爭而非同質化替代,才是推動產業發展的核心邏輯。如今,這一規律正從基礎模型層向應用生成平臺層蔓延——Lovable、…

Mysql——Sql的執行過程

目錄 一、Sql的執行過程流程圖解 二、Sql的執行過程流程 1.2.1、建立連接 1.2.2、服務層(緩存、解析器、預處理器、優化器、執行器) 1.2.2.1、緩存 1.2.2.2、解析器 1.2.2.3、預處理器 1.2.2.4、優化器 1.2.2.5、執行器 1.2.3、引擎層 一、Sql的執行過程流程圖解 Sql的執行過…

【Axure高保真原型】地圖路線和定位

今天和大家分享地圖路線和定位的原型模版&#xff0c;載入后&#xff0c;可以查看汽車行進路線和所在定位 提供了停靠和不停靠站點兩個案例&#xff0c;具體效果可以打開下方原型地址體驗或者點擊下方視頻觀看 【Axure高保真原型】地圖路線和定位【原型預覽含下載地址】 https…