Existem duas maneiras de como o pycharm se conecta ao contêiner docker do servidor remoto:
O primeiro: pycharm se conecta ao contêiner do docker em execução via ssh
O segundo tipo: pycharm se conecta à imagem do docker, pycharm executa o código e cria automaticamente o contêiner
Este artigo é um tutorial para o primeiro método. Para o segundo método, clique no link acima
doença:
(1) Prepare a versão profissional do pycharm, a versão da comunidade não tem a função de conectar a um servidor remoto
(2) O servidor remoto ubuntu, docker foi instalado
Um, configure o contêiner docker do servidor remoto
1. Inicie e execute o contêiner interativo
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
Aqui, você precisa mapear a porta do host para a porta do contêiner e, em seguida, o contêiner é conectado por meio da porta.
-p 8080: 22: Aqui, a porta do host é 8080 e a porta do contêiner é 22
2. Modifique a senha de root do contêiner após entrar no interativo
passwd
3. Instale o openssh-server e o openssh-client para o contêiner
apt-get install openssh-server
apt-get install openssh-client
Se o seguinte erro ocorrer ao instalar o serviço ssh:
Isso ocorre porque a fonte em /etc/apt/source.list é relativamente antiga e precisa ser atualizada. O comando de atualização é o seguinte:
apt-get -y update
4. Modifique as seguintes opções no arquivo de configuração SSH
vim /etc/ssh/sshd_config
O comando acima abre o arquivo sshd_config e adiciona o seguinte no final do arquivo.
PermitRootLogin sim #Permitir que usuários root façam login usando ssh
5. Reinicie o serviço ssh
/etc/init.d/ssh restart
6. Saia do contêiner e teste a conexão
Nota: As etapas 2-5 acima são operadas dentro do contêiner.
ssh [email protected] -p 8080
root: a conta root do sistema interno do contêiner, não a conta do usuário do servidor
127.0.0.1: ip local do servidor
-p número da porta: a porta aqui é o número da porta do host 8080 mapeado quando iniciamos o contêiner na etapa 1, não a porta 22 do contêiner
Execute o comando acima no servidor:
Dessa forma, a conexão de teste é bem-sucedida e a próxima etapa é conectar-se ao contêiner docker no pycharm de nosso sistema Windows local.
Em segundo lugar, configure o pycharm e conecte-se ao contêiner do docker
1. Configuração configurar conexão remota
Crie um serviço de SFTP docker_test e preencha-o com referência à captura de tela acima.
Mapeamento de caminho:
2. Faça upload dos dados do código local para o contêiner do docker e execute
Depois de fazer upload dos dados do código, você precisa escolher definir o compilador Python:
Configure o interpretador Python para executar o código
Deve-se observar aqui que o ambiente operacional exigido pelo código também precisa ser instalado e configurado no contêiner docker. Por exemplo, eu preciso que o ambiente pytorch e as bibliotecas dependentes necessárias para a execução do código Python tenham sido instaladas no contêiner docker por meio de pip.
Terceiro, use o Dockerfile para criar um espelho que pode ser iniciado por ssh
Conteúdo do Dockerfile:
—————————————————————————————————————————
DE pytorch / pytorch: 1.4-cuda10.1-cudnn7-runtime
ADICIONE ferramentas / / 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
#O seguinte é configurar o serviço ssh
EXECUTE 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 /
—————————————————————————————————————————————————
Na verdade, você pode adicionar o seguinte ao seu Dockerfile original
EXECUTE apt-get install -y openssh-server openssh-client && \
echo root: 123456 | chpasswd && \
echo "PermitRootLogin yes" >> / etc / ssh / sshd_config
entre eles:
echo root: 123456 | chpasswd
123456 é a senha para definir a etapa 2
Observação aqui: depois de criar uma imagem usando o Dockerfile e iniciar e executar um contêiner, você deve iniciar manualmente o ssh do contêiner do docker:
/etc/init.d/ssh start
Nota: Independentemente do primeiro ou do segundo método, no pycharm para se conectar ao contêiner para executar o código, todos os caminhos relevantes no código devem ser escritos em caminhos absolutos, ou então um erro será relatado de que o arquivo ou pasta não pode ser encontrado quando o código é executado.