pycharm无法完成Docker的远程解释器设置

Tim*_*son 9 python pycharm docker

我是Docker的新手.我正在使用Docker和docker-compose,通过一个烧瓶教程.基础docker镜像是python 2.7 slim.它在Linux上运行.docker 1.11.2应用程序运行正常.我想让pycharm pro连接到远程解释器,这是我以前从未做过的事情.

我按照docker-compose的说明进行操作.最初它失败了,因为它无法连接到端口2376.我将此端口添加到docker-compose.yml并且错误消失了.但是,尝试保存配置现在会停止/挂起对话框"获取远程解释器版本".这永远不会完成.另外,我不能退出pycharm.这发生在Pycharm 2016.2和2016.3 EAP(第二版)中.

帮助说"将助手复制到服务器需要SFTP支持".这是否意味着我需要做点什么?

Tim*_*son 15

我没有使用docker-machine问题是默认情况下在ubuntu 16.04下没有建立对docker API的TCP访问.

有建议启用TCP/IP访问.

然而,JetBrains给了我最简单的解决方案:

如果您使用的是Linux,那么Doc​​ker很可能安装了默认设置,并且Docker希望通过UNIX域文件套接字/var/run/docker.sock使用.您应该在API URL字段中指定unix:///var/run/docker.sock.请评论是否有帮助!

这个建议适用于我的Ubuntu 16.04衍生发行版.

这将进入构建,执行,部署下的PyCharm首选项中的Docker条目.

您也可以在设置远程解释器时编辑它,但只能通过创建一个新的Docker条目.

TCP/IP方法

如果您想要TCP/IP访问,此方法有效,但这存在安全风险.套接字方法更好,这可能是它默认的原因.

https://coreos.com/os/docs/latest/customizing-docker.html

定制码头

可以通过覆盖默认CoreOS设置附带的设备来自定义Docker systemd单元.下面介绍了执行此操作的常见用例.

在新套接字上启用远程API

创建一个名为/etc/systemd/system/docker-tcp.socket的文件,以便在端口2375上的TCP套接字上使Docker可用.

[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=2375
BindIPv6Only=both
Service=docker.service

[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)

然后启用这个新套接字:

systemctl enable docker-tcp.socket
systemctl stop docker
systemctl start docker-tcp.socket
systemctl start docker
Run Code Online (Sandbox Code Playgroud)

测试它是否正常工作:

docker -H tcp://127.0.0.1:2375 ps
Run Code Online (Sandbox Code Playgroud)

一旦我想要搜索ubuntu 16.04,我遇到了更简单的解决方案,但我没有测试它们.

例如:

https://www.ivankrizsan.se/2016/05/18/enabling-docker-remote-api-on-ubuntu-16-04/

编辑文件/lib/systemd/system/docker.service

将以ExecStart开头的行修改为如下所示:

ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375
Run Code Online (Sandbox Code Playgroud)

我添加的是"-H tcp://0.0.0.0:2375"部分.保存修改后的文件.重启Docker服务:

sudo service docker restart
Run Code Online (Sandbox Code Playgroud)

测试Docker API确实可访问:

curl http://localhost:2375/version
Run Code Online (Sandbox Code Playgroud)