目錄
一、基本命令
二、用案例來學習使用方法
🚀?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,更改即可。