1. 目的需求
我們通常在 Python 上進行 人工智能算法 開發(fā),但是這通常需要專用的運行環(huán)境、依賴庫和配置文件。為了 人工智能算法 開發(fā)的便利,通常會使用 Docker,因為 Docker 可以將我們的人工智能算法工程打包封裝到一個 Container (容器)中,該 Container (容器)包含了 人工智能算法工程 的代碼、運行環(huán)境、依賴庫、配置文件等必需的資源,通過 Container (容器)就可以實現(xiàn)方便快速并且與平臺解耦的自動化部署方式,無論你部署時的環(huán)境如何,Container (容器)中的 人工智能算法工程 都會運行在同一種環(huán)境下。
然而 Docker Container 下通常是命令行交互,為了使 對應(yīng) Python 的開發(fā)和調(diào)試 更加便捷,我們使用 VS Code(Visual Studio Code)+ Remote Development 插件 來進行本地(local)和遠程(ssh)Docker Container 下的 Python 開發(fā)和調(diào)試。
說明:PyCharm 付費的專業(yè)版有類似功能,但免費的社區(qū)版沒有類似功能,所以這里使用 免費的解決方案
(VS Code + Remote Development 插件)
2. VS Code 簡介
VS Code,全稱Visual Studio Code,是一款由微軟開發(fā)的跨平臺免費源代碼編輯器。它可以在Windows、macOS和Linux等多個操作系統(tǒng)上運行,并且提供了豐富的功能和擴展支持。
VS Code支持語法高亮、代碼自動補全(又稱IntelliSense)、代碼重構(gòu)、查看定義功能,并且內(nèi)置了命令行工具和Git版本控制系統(tǒng)。用戶可以通過更改主題和鍵盤快捷方式實現(xiàn)個性化設(shè)置,也可以通過內(nèi)置的擴展程序商店安裝擴展以拓展軟件功能。VS Code使用Monaco Editor作為其底層的代碼編輯器。
在開發(fā)者社區(qū)中,VS Code因其輕量級、多平臺支持和豐富的插件生態(tài)系統(tǒng)而備受青睞。根據(jù)Stack Overflow組織的開發(fā)者調(diào)查,Visual Studio Code被認為是最受開發(fā)者歡迎的開發(fā)環(huán)境之一。
3. 使用實踐:一個簡單的實例
3.1 準備工作
3.1.1 遠程服務(wù)器
3.1.1.1 ubuntu 20.04 系統(tǒng)
說明:此處以 ubuntu 20.04 為介紹,其他系統(tǒng)可以舉一反三
3.1.1.2 部署 docker 服務(wù)
(1) 安裝 docker
??安裝 docker
(2)編寫 Dockerfile 文件
FROM ubuntu:20.04
MAINTAINER hjw
RUN apt-get update && \
apt-get install -y python3 && \
apt-get install -y vim
CMD ["/bin/bash"]
說明:此處在文件夾 docker_test 下新建 Dockerfile,并編輯內(nèi)容如上所示
(3)通過 Dockerfile 構(gòu)建 docker
docker build -t docker_test:1.0 .
說明:使用當前目錄的 Dockerfile 創(chuàng)建鏡像,標簽為 docker_test:1.0
(4)運行構(gòu)建好的 docker container
docker run -it --name test -p 8022:22 --rm docker_test:"1.0"
說明:使用鏡像 docker_test:1.0 啟動一個容器,并將容器命名為 test,并將容器的 22 端口映射到主機的 8022 端口,-it 確保 docker 后臺交互運行
(5)進入 container 配置 root 密碼
passwd
(6)進入 container 安裝配置軟件
apt-get update
apt-get install -y vim
3.1.1.3 Docker Container 的 SSH 服務(wù)配置
(1)安裝 ssh
apt-get install -y openssh-server
(2)修改 ssh 配置
vi /etc/ssh/sshd_config
添加如下配置:
PubkeyAuthentication yes
PermitRootLogin yes
(3)重啟 ssh 服務(wù)
service ssh restart
3.1.2 本地計算機
3.1.2.1 windows 10 系統(tǒng)
說明:此處以 windows 10 為介紹,其他系統(tǒng)可以舉一反三
3.1.1.2 配置 VS Code 服務(wù)
(1)安裝 VS Code
??VS Code 官方下載鏈接
(2)Extensions 添加 Remote Development
說明:參考下圖,添加并安裝完成 Remote Development,進行 reload 或者 重啟 VS Code
(3)配置 ssh
“Ctrl + Shift + P” ,輸入“Remote-SSH”,選擇“Open SSH Configuration File”,打開“****.ssh\config”,編輯如下
Host alias
HostName 10.78.3.124
Port 8022
User root
說明:參考下面3幅圖,其中 Host 隨便選名字,HostName 是遠程服務(wù)器的 IP 地址,Port 是 遠程服務(wù)器的 docker 映射到服務(wù)器上的端口號(此處需要與 3.1.1.2 (4) 中 docker_test:1.0 的端口號對應(yīng),即8022),User 是登陸賬戶
(4)連接 SSH 主機
“Ctrl + Shift + P” ,輸入“Remote-SSH”,選擇“Connect to Host…”,然后點擊“alias”,接著選“Linux”,“Continue”,最后按提示輸入 3.1.1.2 中 (5)所配置的 root 密碼,在左下角顯示“SSH: alias”,說明已經(jīng)成功連接 docker。
說明:輸入 root 密碼,密碼與 3.1.1.2(5) 中設(shè)置保持一致
說明:連接的過程中,需要下載資源并進行配置,需要耗費一定的時間
說明:在左下角顯示“SSH: alias”,說明已經(jīng)成功連接 docker,并且 TERMINAL 顯示 docker 命令行,此過程中會需要再次輸入 root 密碼,密碼與 3.1.1.2(5) 中設(shè)置保持一致
連接異常處理
出現(xiàn)如下連接異常,主要是 key 驗證失敗,只需要清除原先的 key 即可。
解決方法是,找到對應(yīng) known_hosts 文件,并刪除其中原來的 host key 條目(與前文對應(yīng),其中 [10.78.3.124]:8022 是 遠程服務(wù)器的 IP 和 Port),這里對應(yīng)的是
[10.78.3.124]:8022 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIRamKyTqfJ/t9vkADiZ4DUK9c6HnwZlPydU5zBAf2WU4MQq3KC1ceOEKqKDqR09wAJHXWBTWkQ/mSKNTBzQ7fE=
,將此條目刪除后,重啟 VS Code,重復(fù) (4)連接 SSH 主機 操作即可
連接異常處理,說明:在 ubuntu 系統(tǒng)中,使用命令 ssh-keygen -f “/home/hjw/.ssh/known_hosts” -R “[10.78.3.124]:8022” 刪除其中原來的 host key 條目(與前文對應(yīng),其中 [10.78.3.124]:8022 是 遠程服務(wù)器的 IP 和 Port),將此條目刪除后,重啟 VS Code,重復(fù) 連接 SSH 主機 操作即可
(5)Extensions 添加 Python 插件
說明:此處為 SSH:alias 添加,SSH:alias 添加完成,即安裝在 服務(wù)器 docker 中,最后重啟 VS Code
安裝完成后:
(6)配置 Python 解釋器
“Ctrl + Shift + P” ,輸入“Python:Select Interpreter”,選擇需要的 Python 解釋器
。
3.2 簡單實例
在完成 3.1 準備工作 后
3.2.1 本地(local)- 遠程服務(wù)器
(1)在遠程服務(wù)器安裝 VS Code
(2)在遠程服務(wù)器上的 VS Code 中,Extensions 添加 Remote Development
說明:參考下圖,添加并安裝完成 Remote Development,進行 reload 或者 重啟 VS Code
(3)Remote Explorer 選擇 Dev Containers
說明:參考下圖,選擇 Dev Containers
(4)選擇 docker_test:1.0,Attach in Current Window
(5)在 VS Code 中,點擊 “File”,并選擇 “Open Folder”,打開 遠程服務(wù)器 docker 的 “home” 路徑。
說明:參考下圖,打開 遠程服務(wù)器 docker 的 “home” 路徑,其中左下角顯示當前連接的 Container 為 docker_test:1.0 (docker_test)
(6)在 “home” 下新建文件 “test.py”,內(nèi)容如下:
# -*- coding: utf-8 -*-
# @Last Modified by: hjw
# @Last Modified time: 2024-02-27 16:00
print("hello, world!")
(7)打開 “test.py”,并設(shè)置斷點,進行調(diào)試
3.2.2 遠程(ssh)- 本地計算機
(1)在本地計算機已經(jīng)連接連接遠程服務(wù)器 docker后,在本地計算機 VS Code 中,點擊 “File”,并選擇 “Open Folder”,打開 遠程服務(wù)器 docker 的 “home” 路徑。
(2)在 “home” 下新建文件 “test.py”,內(nèi)容如下:
# -*- coding: utf-8 -*-
# @Last Modified by: hjw
# @Last Modified time: 2024-02-27 16:00
print("hello, world!")
(3)打開 “test.py”,并設(shè)置斷點,進行調(diào)試
文章來源:http://www.zghlxwxcb.cn/news/detail-841648.html
3.2.3 總結(jié)
到此,完成 一個簡單的實例,即 VS Code(Visual Studio Code)本地(local)和遠程(ssh)Docker Container 下的 Python 開發(fā)和調(diào)試,然后可以在此基礎(chǔ)上進行類推進行更復(fù)雜的開發(fā)和調(diào)試。文章來源地址http://www.zghlxwxcb.cn/news/detail-841648.html
到了這里,關(guān)于VS Code(Visual Studio Code)本地(local)和遠程(ssh)Docker Container 下的 Python 開發(fā)和調(diào)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!