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

14

我是Docker的新手。我正在使用Docker和docker-compose,跟随一个Flask教程。所使用的基础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支持才能将辅助程序复制到服务器”。 这是否意味着我需要做些什么?

2个回答

21

我没有使用docker-machine。

问题在于Ubuntu 16.04默认情况下未建立对Docker API的TCP访问。

有建议启用TCP/IP访问的方法。

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

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

这个建议对我的基于Ubuntu 16.04的发行版有效。

这需要进入PyCharm首选项的Docker条目中的Build,Execution,Deployment。

您还可以在设置远程解释器时进行编辑,但只能通过创建新的Docker条目来完成。

TCP/IP 方法

如果您需要TCP/IP访问,则可以使用此方法,但这是一种安全风险。套接字方法更好,这可能是它成为默认方法的原因。

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

Customizing docker

The Docker systemd unit can be customized by overriding the unit that ships with the default CoreOS settings. Common use-cases for doing this are covered below.

Enable the remote API on a new socket

Create a file called /etc/systemd/system/docker-tcp.socket to make Docker available on a TCP socket on port 2375.

[Unit]
Description=Docker Socket for the API

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

[Install]
WantedBy=sockets.target

Then enable this new socket:

systemctl enable docker-tcp.socket
systemctl stop docker
systemctl start docker-tcp.socket
systemctl start docker

Test that it’s working:

docker -H tcp://127.0.0.1:2375 ps

曾经我想搜索Ubuntu 16.04,但是我发现了更简单的解决方案,不过我没有测试过。

例如:

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

Edit the file /lib/systemd/system/docker.service

Modify the line that starts with ExecStart to look like this:

ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375

Where my addition is the “-H tcp://0.0.0.0:2375” part. Save the modified file. Restart the Docker service:

sudo service docker restart

Test that the Docker API is indeed accessible:

curl http://localhost:2375/version

3

I - docker-compose up

我认为PyCharm将运行docker-compose up,你是否尝试在终端中首先运行此命令(从docker-compose.yml所在的位置)?

如果出现错误,您可能会在终端中获得更多信息。

II - pycharm docker配置

否则,可能是由于您在PyCharm中的docker机器配置引起的。

我用来配置我的机器并确保它已正确配置的方法:

1- 在您的shell中运行docker-machine ls

enter image description here

2- 复制并粘贴不带tcp://的URL

3- 转到pycharm首选项-> Build, Execution, Deployement -> Docker -> +以创建新服务器,填写服务器name字段

enter image description here

4- 粘贴以前复制的URL,保留https://

5- 填写您的机器证书文件夹的路径

6- 选中从Docker Machine导入凭据

7- 单击Detect->您的机器应出现在选择列表中

8- 保存此服务器

9- 在配置远程解释器时选择此服务器,从PyCharm首选项-> Project -> Project Interpreter -> wheel -> add remote -> DockerDocker Compose

enter image description here

10- 您应该能够选择服务名称

11- 保存您的新解释器

12- 尝试两次运行测试,有时需要时间来初始化


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接