gpt4 book ai didi

python - 如何在我的 docker 容器中运行 pycharm?

转载 作者:IT老高 更新时间:2023-10-28 21:25:43 28 4
gpt4 key购买 nike

我对 docker 很陌生。我想在 docker 容器中构建我的 python 应用程序。当我构建应用程序时,我想在 Pycharm 和我构建的容器中测试/运行它。

如何将 Pycharm pro 连接到特定容器或图像(python 或 Anaconda)?

我创建项目的时候,点击pure python然后添加remote,然后点击docker我得到如下结果

enter image description here

我在 Mac OS X El Capitan (10.11.6) 上运行 Docker 版本 1.12.1 和 Pycharm Pro 2016.2.3

最佳答案

Docker-for-mac 仅支持通过监听 OSX 主机的/var/run/docker.sock 套接字进行连接。

如果您尝试将此添加到 pycharm,您将收到以下消息:

Only supported on Linux

“无法连接:java.lang.ExceptionInInitializerError,由:java.lang.IllegalStateException:仅Linux支持”

所以 PyCharm 真的 只想通过 TCP 套接字连接到 docker 守护进程,并且支持该套接字的推荐 TLS 保护。 Certificates 文件夹默认为默认 docker-machine 机器的证书文件夹,“default”。

如果您在 OSX 机器上安装了 socat,则可以实现一种解决方法,通过 TCP 服务器公开 Docker for Mac。

在我的系统上,我通过自制软件安装了它:

brew install socat

现在已经安装好了,我可以使用以下参数运行 socat:

socat TCP-LISTEN:2376,reuseaddr,fork,bind=127.0.0.1 UNIX-CLIENT:/var/run/docker.sock

警告:这将使在您的整个 Mac 上以任何用户身份运行的任何进程都可以访问您的 docker-for-mac。 unix 套接字受用户权限保护,而 127.0.0.1 则不 protected 。

这个 socat 命令告诉它监听 127.0.0.1:2376 并将连接传递到/var/run/docker.sock。 reuseaddr 和 fork 选项允许这个命令为多个连接提供服务,而不仅仅是第一个连接。

我可以通过运行以下命令来测试 socat 是否正常工作:

docker -H tcp://127.0.0.1:2376 ps

如果你得到一个成功的 docker ps 响应,那么你就知道 socat 进程正在完成它的工作。

现在,在 PyCharm 窗口中,我可以放置相同的 tcp://127.0.0.1:2376。我应该会收到一条“连接成功”的消息:

connection successful

此解决方法将要求在您想要使用 PyCharm 中的 docker 时随时运行该 socat 命令。

如果你想做同样的事情,但使用 TLS,你可以设置证书并使它们可用于 pycharm 和 socat,并使用 socat 的 OPENSSL-LISTEN 而不是 TCP-LISTEN 功能。不过,对于这个答案,我不会详细说明。

关于python - 如何在我的 docker 容器中运行 pycharm?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40046167/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com