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,更改即可。