pycharm如何連線遠端伺服器的docker容器進行執行和偵錯程式碼(一)

2020-10-27 11:00:34

pycharm如何連線遠端伺服器的docker容器有兩種方法:

第一種:pycharm通過ssh連線已在執行中的docker容器

第二種:pycharm連線docker映象,pycharm執行程式碼再自動建立容器

本文是第一種方法的教學,第二種請點選以上的連結

條件:

(1)準備好pycharm專業版,社群版沒有連線遠端伺服器的功能

(2)遠端伺服器ubuntu,已安裝好docker

一、設定遠端伺服器的docker容器

1. 啟動並執行互動式容器

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

這裡需要對映主機埠到容器埠,後續就是通過埠來連通容器的。

-p 8080:22:這裡主機埠8080, 容器埠是22

2.進入互動式後修改容器的root密碼

passwd

3. 給容器安裝openssh-server和openssh-client

apt-get install openssh-server
apt-get install openssh-client

安裝ssh服務時如果出現以下錯誤:

那就是因為/etc/apt/source.list中的源比較舊了,需要更新一下。更新命令以下:

apt-get -y update

4. 修改SSH組態檔以下選項

vim /etc/ssh/sshd_config

以上命令開啟sshd_config檔案,在檔案最後面新增以下。


PermitRootLogin yes #允許root使用者使用ssh登入

 

5. 重新啟動ssh服務

/etc/init.d/ssh restart

6. 退出容器,連線測試

注意:以上2-5步驟都是在容器內部操作的。

ssh root@127.0.0.1 -p 8080

root:容器內部系統的root賬號,不是伺服器的使用者賬號

127.0.0.1:伺服器本機ip

-p 埠號:這裡的埠就是我們在步驟1 啟動容器時對映的主機埠號8080,不是容器的埠22

在伺服器上執行以上命令:

這樣就測試連線成功了,接下來就是到我們本機windows系統的pycharm連線docker容器了。

二、設定pycharm並連線docker容器

1. Configuration設定遠端連線

建立SFTP服務docker_test, 參考以上截圖填寫。

路徑對映:

2. 上傳原生程式碼資料到docker容器中並執行

上傳完程式碼資料後, 需要選擇設定python編譯器:

設定好python直譯器就可以run程式碼了

這裡要注意一下,程式碼所要的執行環境還需要在docker容器安裝設定好,比如我這裡需要pytorch環境以及python程式碼執行所需的依賴庫都已經在docker容器中通過pip安裝好了。

三、 使用Dockerfile建立可以ssh啟動的映象

Dockerfile內容:

————————————————————————————————————————

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 mirrors.aliyun.com 

#以下是設定ssh服務

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/

————————————————————————————————————————————————

其實在你原來的Dockerfile中新增以下內容就可以

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是設定步驟2的密碼

這裡注意一下:使用Dockerfile建立映象後,並啟動執行一個容器後,要手動去啟動docker容器的ssh:

/etc/init.d/ssh start

note:不管是第一種還是第二種方法,在pycharm連線容器跑程式碼,在程式碼中所有有關路徑都要寫絕對路徑,要不然會執行程式碼時會報錯找不到檔案或資料夾。

四、Reference

[1] pycharm 遠端連線docker容器偵錯程式