Как запустить pycharm в контейнере docker?

Я очень новичок в docker. Я хочу создать приложение python в контейнере docker. Когда я создаю приложение, я хочу тестировать / запускать его в Pycharm и в контейнере, который я создаю.

Как подключить Pycharm pro к определенному контейнеру или изображению (python или Anaconda)?

когда я создаю проект, нажмите pure python, а затем добавьте remote, затем нажмите docker, я получаю следующее результат

enter image description here

Я работаю на Mac OS X El Capitan (10.11.6) с Докером версии 1.12.1 и Pycharm Pro 2016.2.3

1 ответов


Docker-for-mac поддерживает только соединения через/var/run / docker.сокет носка, который прослушивает ваш хост OSX.

если вы попытаетесь добавить в pycharm, вы получите следующее сообщение:

Only supported on Linux

" Не удается подключиться: java.ленг.ExceptionInInitializerError, вызванный: java.ленг.IllegalStateException: поддерживается только в Linux"

Итак, PyCharm действительно только хочет подключиться к демону docker через TCP-сокет и поддерживает рекомендуемую защиту TLS этого сокета. По умолчанию в папке сертификаты используется папка сертификата для компьютера docker-machine по умолчанию "default".

можно реализовать обходной путь для предоставления Docker для Mac через TCP-сервер, если у вас установлен socat на вашем компьютере OSX.

в моей системе я установил его через homebrew:

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.носок. Параметры reuseaddr и fork позволяют этой команде обслуживать несколько соединений вместо самого первого.

I можно проверить, что socat работает, выполнив следующую команду:

docker -H tcp://127.0.0.1:2376 ps

если вы успешный docker ps ответьте, тогда вы знаете, что процесс socat выполняет свою работу.

теперь, в окне PyCharm, я могу поставить то же самое tcp://127.0.0.1:2376 на месте. Я должен получить сообщение "соединение успешно":

connection successful

этот обходной путь потребует, чтобы команда socat выполнялась в любое время, когда вы хотите использовать docker из PyCharm.

если вы хотите сделать то же самое, но с TLS, вы можете настроить сертификаты и сделать их доступными для pycharm и socat и использовать socat OPENSSL-LISTEN вместо TCP-LISTEN характеристика. Я не буду вдаваться в подробности об этом для этого ответа.