pycharm如何連線遠端伺服器的docker容器有兩種方法:
第一種:pycharm通過ssh連線已在執行中的docker容器
第二種:pycharm連線docker映象,pycharm執行程式碼再自動建立容器
本文是第一種方法的教學,第二種請點選以上的連結
條件:
(1)準備好pycharm專業版,社群版沒有連線遠端伺服器的功能
(2)遠端伺服器ubuntu,已安裝好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容器了。
1. Configuration設定遠端連線
建立SFTP服務docker_test, 參考以上截圖填寫。
路徑對映:
2. 上傳原生程式碼資料到docker容器中並執行
上傳完程式碼資料後, 需要選擇設定python編譯器:
設定好python直譯器就可以run程式碼了
這裡要注意一下,程式碼所要的執行環境還需要在docker容器安裝設定好,比如我這裡需要pytorch環境以及python程式碼執行所需的依賴庫都已經在docker容器中通過pip安裝好了。
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連線容器跑程式碼,在程式碼中所有有關路徑都要寫絕對路徑,要不然會執行程式碼時會報錯找不到檔案或資料夾。