Mr *_*uid 11 ssh portforwarding pycharm docker
我试图在远程机器上的 docker 容器中使用 python 作为 Pycharm 中的解释器。既然是一口,这里是一张图:
容器中运行着一个 Jupyter Notebook,我可以通过本地浏览器连接到它(尽管这只是为了测试连接)。我用来启动 Docker 容器的命令是
docker run --runtime=nvidia -it --rm --shm-size=2g -v /home/timo/storage:/storage -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group --ulimit memlock=-1 -p 8888:8888 -p 7722:22 --ipc=host latest:latest
Run Code Online (Sandbox Code Playgroud)
我可以转发运行 Jupyter 笔记本的端口 8888,ssh -L 8888:0.0.0.0:8888 BBB.BBB.BBB.BBB
从而在本地机器上使用它。但是我不太喜欢使用 Jupyter 进行开发,并且想在 Pycharm 的 Docker Container 中使用 Python 解释器。
当我在 Pycharm 中选择“添加 Python 解释器”时,我得到以下选项:
Pycharm的文档建议使用“添加 Python 解释器/Docker”工具,如下所示:
然而,如果 Docker 在远程机器上,文档并没有说明如何设置 Docker 容器和连接。
所以我的问题是:我应该使用 Unix 还是 TCP 套接字连接到我的远程 docker?或者我应该以某种方式转发容器中的所有相关端口并使用“SSH Interpreter”选项?如果是这样,我该如何设置这一切?我是否首先正确设置了我的 Docker 容器?
在过去的两天里,我想我已经浏览了每个论坛和在线资源,但还没有更接近于让它发挥作用。我也试图让它在 Spyder 中工作,但也无济于事。所以任何建议都非常感谢!
非常感谢!
小智 2
感谢您在漫画中如此深刻而清晰地描述了这一困境:-)。我和我的同事正在尝试做类似的事情,最终效果很好的是直接为从远程计算机跳转的 Docker 容器创建一个 SSH 配置,然后将其设置为远程 SSH 解释器,这样 pycharm 甚至不会意识到它是一个Docker 容器。它也适用于 vscode。
docker exec -it <container> bash
:为 docker 创建管理员交互式提示apt-get install openssh-server
service ssh start
service ssh status
->* sshd is running
docker inspect -f "{{ .NetworkSettings.IPAddress }}" <container>
获取容器 IPping -c 3 <container_ip>
ssh <container_ip>
:; 应该将您作为您的用户放入容器中;但是,需要正确配置容器(docker run
cmd 有-v /etc/passwd:/etc/passwd:ro \
等)。它可能会要求输入密码。注意:如果您稍后对分配了相同 IP 的不同容器执行此操作,您将收到警告,并且可能需要从 ; 中删除之前的密钥known_hosts
。只需按照警告中的说明进行操作即可。ssh -J <remote_machine> <container_ip>
中所述;如果成功,您应该像从远程计算机上一样放入容器中~/.ssh/config
; 遵循https://wiki.gentoo.org/wiki/SSH_jump_hostProxyJump Example
ssh <container_host_name_defined_in_ssh_config>
;还应该将您放入交互式容器中Preferences -> Project -> Python Interpreter -> Add -> SSH Interpreter -> New server configuration
<container_host_name_defined_in_ssh_config>
22
<username_on_remote_server>
which python
选择解释器,可以使用文件夹图标进行导航,这将引导您浏览泊坞窗内的路径,或者您可以输入容器中的结果 归档时间: |
|
查看次数: |
1252 次 |
最近记录: |