2016-10-14 14 views
5

Docker için çok yeni. Python uygulamamı bir docker kabı içinde oluşturmak istiyorum. Uygulamayı kurarken Pycharm'da ve inşa ettiğim konteynırda test etmek/çalıştırmak istiyorum.Docker kabımın içinde pycharm'ı nasıl çalıştırırım?

nasıl belirli bir konteyner veya görüntü (piton veya Anaconda ya) için pycharm pro bağlarım? Ben bir proje oluşturduğunuzda

, ben Mac OS X El Capitan'daki koşuyorum

enter image description here

aşağıdaki bir sonuç almak uzak, daha sonra tıklayarak liman işçisi ekleyin sonra (10.11.6) saf piton tıklayın ve Docker sürüm 1.12.1 ve Pycharm Pro 2016.2.3

+0

Docker for Mac kullanıyor musunuz, yoksa docker-makine ile kurduğunuz bir makineyi mi kullanıyorsunuz? – programmerq

+0

@programmerq Şu Anda Docker for Mac – kindjacket

+0

Sunucu nasıl kurulur? Dokümantasyon [burada] (https://www.jetbrains.com/help/pycharm/2016/configuring-remote-interpreters-via-docker.html), kullanmadığınız seslere benzeyen docker makinesinden bahseder. Mac'te docker'ı desteklemek için [bu açık konu] (https://youtrack.jetbrains.com/issue/IDEA-159223) de vardır. [Bu olası çözüm] de vardır (https://youtrack.jetbrains.com/issue/IDEA-153973#comment=27-1600630). – R0MANARMY

cevap

4

Docker-for-mac yalnızca OSX sunucunuzda dinleyen /var/run/docker.sock soketinin üzerindeki bağlantıları destekler.

Only supported on Linux

"bağlanamıyor: Eğer pycharm için bu eklemeyi denerseniz

, aşağıdaki iletiyi alırsınız java.lang.IllegalStateException: java.lang.ExceptionInInitializerError, neden sadece Linux'ta "

" ile desteklenir. Yani PyCharm gerçekten sadece bir docker sunucusuna bir TCP soketine bağlanmak ister ve bu soketin tavsiye edilen TLS koruması için desteğe sahiptir. Sertifikalar klasörü, varsayılan varsayılan dolaşık makine makinesi için varsayılan "varsayılan" sertifika klasörüne gider.

SoCat senin OSX makinede yüklü olan bir TCP sunucusu üzerinden Mac için Docker ortaya çıkarmak için bir geçici çözümü mümkündür.

brew install socat 

Şimdi bu yüklü, aşağıdaki parametrelerle SoCat çalıştırabilirsiniz::

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

UYARI: Bu mümkün hale getirecek

benim sistemde

, ben homebrew aracılığıyla yüklemiş Mac için docker'ınıza erişmek için tüm macunuzdaki herhangi bir kullanıcı olarak çalışan herhangi bir işlem. Unix soketi kullanıcı izinleriyle korunur, 127.0.0.1 ise değildir.

Bu SoCat komut 127.0.0.1:2376 dinlemek ve /var/run/docker.sock üzerine bağlantılarını geçmek söyler. Reuseaddr ve fork seçenekleri, bu komutun sadece ilk olan yerine çoklu bağlantılara hizmet etmesine izin verir.

O SoCat aşağıdaki komutu çalıştırarak çalışıyor test edebilirsiniz:

docker -H tcp://127.0.0.1:2376 ps 

geri başarılı docker ps yanıtını alırsanız, o zaman SoCat süreç işini yapma biliyoruz.

Şimdi, pycharm penceresinde, ben yerde aynı tcp://127.0.0.1:2376 koyabilirsiniz.Geri bir "Bağlantı başarılı" mesajı almalısınız:

connection successful

Bu geçici çözüm pycharm gelen liman işçisi kullanmak istediğiniz zaman çalışıyor olması o SoCat komutunu gerektirecektir.

Aynı şeyi yapmak istediğinizde TLS ile sertifikalar oluşturabilir ve bunları hem pycharm hem de socat için kullanılabilir hale getirebilir ve TCP-LISTEN özelliği yerine socat'ın OPENSSL-LISTEN özelliğini kullanabilirsiniz. Yine de bu cevap için bunun ayrıntılarına girmeyeceğim.

İlgili konular