山東省建設(shè)工程注冊(cè)中心網(wǎng)站/114黃頁(yè)
pycharm連接遠(yuǎn)程服務(wù)器的docker容器通常有兩種方法:
第一種:pycharm通過(guò)ssh連接已在運(yùn)行中的docker容器
第二種:pycharm連接docker鏡像,pycharm運(yùn)行代碼再自動(dòng)創(chuàng)建容器
第一種方法比較通用簡(jiǎn)單,作者比較推崇。
條件:
(1)準(zhǔn)備好pycharm專業(yè)版,社區(qū)版沒(méi)有連接遠(yuǎn)程服務(wù)器的功能
(2)遠(yuǎn)程服務(wù)器ubuntu,已安裝好docker
一、配置遠(yuǎn)程服務(wù)器的docker容器
1. 啟動(dòng)并運(yùn)行交互式容器
docker run -it --name pycharm_test -v /home/th/PycharmProjects/qa/:/workspace/qa -p 8080:22 --gpus all pytorch/pytorch:1.4-cuda10.1-cudnn7-runtime /bin/bash
這里需要映射主機(jī)端口到容器端口,后續(xù)就是通過(guò)端口來(lái)連通容器的。
-p 8080:22:這里主機(jī)端口8080, 容器端口是22
2.進(jìn)入交互式后修改容器的root密碼
passwd
3. 給容器安裝openssh-server和openssh-client
apt-get install openssh-server
apt-get install openssh-client
安裝ssh服務(wù)時(shí)如果出現(xiàn)以下錯(cuò)誤:
?編輯
那就是因?yàn)?etc/apt/source.list中的源比較舊了,需要更新一下。更新命令以下:
apt-get -y update
4. 修改SSH配置文件以下選項(xiàng)
vim /etc/ssh/sshd_config
以上命令打開(kāi)sshd_config文件,在文件最后面添加以下。
PermitRootLogin yes #允許root用戶使用ssh登錄
5. 重啟ssh服務(wù)
/etc/init.d/ssh restart
6. 退出容器,連接測(cè)試
注意:以上2-5步驟都是在容器內(nèi)部操作的。
ssh root@127.0.0.1 -p 8080
root:容器內(nèi)部系統(tǒng)的root賬號(hào),不是服務(wù)器的用戶賬號(hào)
127.0.0.1:服務(wù)器本機(jī)ip
-p 端口號(hào):這里的端口就是我們?cè)诓襟E1 啟動(dòng)容器時(shí)映射的主機(jī)端口號(hào)8080,不是容器的端口22
在服務(wù)器上運(yùn)行以上命令:
這樣就測(cè)試連接成功了,接下來(lái)就是到我們本機(jī)windows系統(tǒng)的pycharm連接docker容器了。
二、配置pycharm并連接docker容器
1. Configuration配置遠(yuǎn)程連接
創(chuàng)建SFTP服務(wù)docker_test, 參考以上截圖填寫。
路徑映射:
2. 上傳本地代碼數(shù)據(jù)到docker容器中并運(yùn)行
上傳完代碼數(shù)據(jù)后, 需要選擇設(shè)置python編譯器:
設(shè)置好python解釋器就可以run代碼了
這里要注意一下,代碼所要的運(yùn)行環(huán)境還需要在docker容器安裝配置好,比如我這里需要pytorch環(huán)境以及python代碼運(yùn)行所需的依賴庫(kù)都已經(jīng)在docker容器中通過(guò)pip安裝好了。
三、 使用Dockerfile創(chuàng)建可以ssh啟動(dòng)的鏡像
Dockerfile內(nèi)容:
————————————————————————————————————————
FROM pytorch/pytorch:1.4-cuda10.1-cudnn7-runtime
ADD tools/ /opt/tools/
RUN mkdir ~/.pip/ && cp /opt/tools/pip_sources_aliyun.txt ~/.pip/pip.conf && \
cp /opt/tools/sources.list /etc/apt/ && apt -y update && \
apt install -y vim zip && \
/opt/conda/bin/pip install -r /opt/tools/requirements.txt --trusted-host?http://mirrors.aliyun.com
#以下是設(shè)置ssh服務(wù)
RUN apt-get install -y openssh-server openssh-client && \
echo root:123456 | chpasswd && \
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
ENV LANG C.UTF-8
CMD ["/usr/sbin/sshd", "-D"]
WORKDIR /work/
————————————————————————————————————————————————
其實(shí)在你原來(lái)的Dockerfile中添加以下內(nèi)容就可以
RUN apt-get install -y openssh-server openssh-client && \
echo root:123456 | chpasswd && \
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
其中:
echo root:123456 | chpasswd
123456是設(shè)置步驟2的密碼
這里注意一下:使用Dockerfile創(chuàng)建鏡像后,并啟動(dòng)運(yùn)行一個(gè)容器后,要手動(dòng)去啟動(dòng)docker容器的ssh:
/etc/init.d/ssh start
note:不管是第一種還是第二種方法,在pycharm連接容器跑代碼,在代碼中所有有關(guān)路徑都要寫絕對(duì)路徑,要不然會(huì)運(yùn)行代碼時(shí)會(huì)報(bào)錯(cuò)找不到文件或文件夾。