簡體   English   中英

如何在我的docker容器中運行pycharm?

[英]How do I run pycharm within my docker container?

我對碼頭工人很新。 我想在docker容器中構建我的python應用程序。 當我構建應用程序時,我想在Pycharm和我構建的容器中測試/運行它。

如何將Pycharm pro連接到特定的容器或圖像(python或Anaconda)?

當我創建一個項目時,單擊pure python然后添加遠程,然后單擊docker我得到以下結果

在此輸入圖像描述

我使用Docker 1.12.1和Pycharm Pro 2016.2.3在Mac OS X El Capitan(10.11.6)上運行

Docker-for-mac僅支持在您的OSX主機上偵聽的/var/run/docker.sock套接字上的連接。

如果您嘗試將此添加到pycharm,您將收到以下消息:

僅在Linux上受支持

“無法連接:java.lang.ExceptionInInitializerError,由以下原因引起:java.lang.IllegalStateException:僅在Linux上受支持”

所以PyCharm 實際上只想通過TCP套接字連接到docker守護進程,並且支持該套接字的推薦TLS保護。 Certificates文件夾默認為默認泊塢機機器的證書文件夾,“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則不受保護。

這個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放在適當的位置。 我應該收到一條“連接成功”消息:

連接成功

此解決方法將要求socat命令在您希望使用PyCharm中的docker時運行。

如果你想做同樣的事情,但是使用TLS,你可以設置證書並使它們可用於pycharm和socat,並使用socat的OPENSSL-LISTEN而不是TCP-LISTEN功能。 盡管如此,我不會詳細介紹這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM