一般煉丹都在服務(wù)器上,很少有人在本機(jī)跑代碼的。之前自己搗鼓怎么用本地的編輯器配上遠(yuǎn)程服務(wù)器的環(huán)境來(lái)營(yíng)造一個(gè)最舒服的姿勢(shì)。最開(kāi)始用VS Code的SFTP插件,但是用著還是不順手,因?yàn)椴荒苡眠h(yuǎn)程的環(huán)境,最后還是選擇了強(qiáng)大的PyCharm。下面的這個(gè)教程最開(kāi)始只是自己用,后來(lái)寫了一篇博客分享給實(shí)驗(yàn)室的人,沒(méi)想到大家都開(kāi)始用上了。這次專門寫一篇更詳細(xì)的供有緣人使用。
開(kāi)始之前你可以對(duì)比以下條件來(lái)確定自己是否真的需要這樣做:
使用PyCharm作為主力IDE寫Python而不是其他(我非常推薦大家用)
深度學(xué)習(xí)煉丹師(當(dāng)然你可以不是,但如果是,你會(huì)更舒服)
服務(wù)器在遠(yuǎn)程或者局域網(wǎng)(局域網(wǎng)的體驗(yàn)最佳)
使用Docker(能夠熟練使用最佳)
當(dāng)你配置完成之后,你將能在本地PyCharm IDE上使用遠(yuǎn)程服務(wù)器的Python解釋器和環(huán)境進(jìn)行調(diào)試和運(yùn)行,同時(shí)能夠很方便的將代碼在本地和服務(wù)器上進(jìn)行同步。
OK,廢話不多說(shuō),正式開(kāi)始我們的PyCharm+Docker的遠(yuǎn)程環(huán)境配置之旅。
首先你需要滿足以下兩個(gè)必備條件:
使用PyCharm專業(yè)版,記住一定是專業(yè)版(社區(qū)版不提供遠(yuǎn)程服務(wù))
在服務(wù)器上安裝docker和nvidia-docker
1. 新建docker container
首先按照如下命令新建一個(gè)docker容器(關(guān)于docker的使用這里不廢話,建議不熟悉的童鞋先去學(xué)一下如何使用docker,教程很多):
sudo nvidia-docker run -it -p [host_port]:[container_port](do not use 8888) --name:[container_name] [image_name] -v [container_path]:[host_path] /bin/bash
舉個(gè)栗子:
sudo nvidia-docker run -p 5592:5592 -p 5593:5593 -p 8022:22 --name=“l(fā)iuzhen_tf” -v ~/workspace/liuzhen/remote_workspace:/workspace/liuzhen/remote_workspace -it tensorflow/tensorflow:latest-gpu /bin/bash
正確執(zhí)行完之后,現(xiàn)在我們就處在新建的docker容器里了(端口映射,容器名,鏡像和路徑映射這些換成你自己的就行,但是一定要留一個(gè)端口映射到容器22端口,因?yàn)镾FTP默認(rèn)使用22端口)。
2. 配置SSH服務(wù)
接著我們?cè)趧倓傂陆ǖ娜萜骼锱渲肧SH服務(wù),首先安裝openssh-server:
$ apt update$ apt install -y openssh-server
然后建立一個(gè)配置文件夾并進(jìn)行必要的配置:
$ mkdir /var/run/sshd$ echo ‘root:passwd’ | chpasswd# 這里使用你自己想設(shè)置的用戶名和密碼,但是一定要記住!$ sed -i ‘s/PermitRootLogin prohibit-password/PermitRootLogin yes/’ /etc/ssh/sshd_config$ sed ‘s@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g’ -i /etc/pam.d/sshd$ echo “export VISIBLE=now” 》》 /etc/profile
重啟SSH激活配置:
$ service ssh restart
在服務(wù)器(宿主機(jī))上(不是服務(wù)器的docker里)測(cè)試剛剛新建docker容器中哪個(gè)端口轉(zhuǎn)發(fā)到了服務(wù)器的22端口:
$ sudo docker port [your_container_name] 22# 如果前面的配置生效了,你會(huì)看到如下輸出# 0.0.0.0:8022
最后測(cè)試能否用SSH連接到遠(yuǎn)程docker:
$ ssh root@[your_host_ip] -p 8022# 密碼是你前面自己設(shè)置的
到這里說(shuō)明服務(wù)器的docker端已經(jīng)完成配置。
3. 在PyCharm里配置部署環(huán)境
打開(kāi)PyCharmTools 》 Deployment 》 Configuration, 新建一個(gè)SFTP服務(wù)器,名字自己?。?/p>
輸入如下圖配置,注意這里的端口是你剛剛設(shè)置的映射到容器22端口的宿主機(jī)中的端口,我這里使用的是8022,賬號(hào)密碼是你剛剛自己設(shè)置的,這里的Root Path設(shè)置一個(gè)遠(yuǎn)程docker容器里的路徑:
配置完點(diǎn)擊Test SFTP connection,如果成功就恭喜你,可以進(jìn)行下一步了。
最后在Mappings中配置路徑,這里的路徑是你本地存放代碼的路徑,與剛剛配置的Root Path相互映射(意思是Mapping里本機(jī)的路徑映射到遠(yuǎn)程的Root Path),方便以后在本地和遠(yuǎn)程docker中進(jìn)行代碼和其他文件同步。
4. 在PyCharm里配置遠(yuǎn)程解釋器
點(diǎn)擊PyCharm的File 》 Setting 》 Project 》 Project Interpreter右邊的設(shè)置按鈕新建一個(gè)項(xiàng)目的遠(yuǎn)程解釋器:
配置完成以后在項(xiàng)目解釋器界面就會(huì)出現(xiàn)如下圖所示,可以看到此時(shí)已經(jīng)完成遠(yuǎn)程解釋器的本地化:
配置完成以后需要等本地和遠(yuǎn)程的環(huán)境同步一下,到這里,恭喜你,可以用最舒服的姿勢(shì)。。。寫代碼了。
配置完成以后的日常是這樣的:
左邊是本地的文件,修改之后可以隨時(shí)右鍵deployment-》upload到遠(yuǎn)程主機(jī),或者直接在本地調(diào)試運(yùn)行;最右邊是遠(yuǎn)程主機(jī)的文件,假如直接在遠(yuǎn)程修改了文件刷新一下同樣可以右鍵下載到本地,但是我不建議這樣做,因?yàn)檫@樣很容易帶來(lái)沖突(畢竟沒(méi)有很好的版本控制)。目前最好的實(shí)踐是在局域網(wǎng)的服務(wù)器上,時(shí)延低,同步速度快。
-
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84760 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5504瀏覽量
121232
原文標(biāo)題:PyCharm + Docker:打造最舒適的深度學(xué)習(xí)煉丹爐
文章出處:【微信號(hào):TheBigData1024,微信公眾號(hào):人工智能與大數(shù)據(jù)技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論