山東省建設工程注冊中心網(wǎng)站/114黃頁
pycharm連接遠程服務器的docker容器通常有兩種方法:
第一種:pycharm通過ssh連接已在運行中的docker容器
第二種:pycharm連接docker鏡像,pycharm運行代碼再自動創(chuàng)建容器
第一種方法比較通用簡單,作者比較推崇。
條件:
(1)準備好pycharm專業(yè)版,社區(qū)版沒有連接遠程服務器的功能
(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
這里需要映射主機端口到容器端口,后續(xù)就是通過端口來連通容器的。
-p 8080:22:這里主機端口8080, 容器端口是22
2.進入交互式后修改容器的root密碼
passwd
3. 給容器安裝openssh-server和openssh-client
apt-get install openssh-server
apt-get install openssh-client
安裝ssh服務時如果出現(xiàn)以下錯誤:
?編輯
那就是因為/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:容器內部系統(tǒng)的root賬號,不是服務器的用戶賬號
127.0.0.1:服務器本機ip
-p 端口號:這里的端口就是我們在步驟1 啟動容器時映射的主機端口號8080,不是容器的端口22
在服務器上運行以上命令:
這樣就測試連接成功了,接下來就是到我們本機windows系統(tǒng)的pycharm連接docker容器了。
二、配置pycharm并連接docker容器
1. Configuration配置遠程連接
創(chuàng)建SFTP服務docker_test, 參考以上截圖填寫。
路徑映射:
2. 上傳本地代碼數(shù)據(jù)到docker容器中并運行
上傳完代碼數(shù)據(jù)后, 需要選擇設置python編譯器:
設置好python解釋器就可以run代碼了
這里要注意一下,代碼所要的運行環(huán)境還需要在docker容器安裝配置好,比如我這里需要pytorch環(huán)境以及python代碼運行所需的依賴庫都已經(jīng)在docker容器中通過pip安裝好了。
三、 使用Dockerfile創(chuàng)建可以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?http://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創(chuàng)建鏡像后,并啟動運行一個容器后,要手動去啟動docker容器的ssh:
/etc/init.d/ssh start
note:不管是第一種還是第二種方法,在pycharm連接容器跑代碼,在代碼中所有有關路徑都要寫絕對路徑,要不然會運行代碼時會報錯找不到文件或文件夾。