Как запустить pycharm в контейнере docker?
Я очень новичок в docker. Я хочу создать приложение python в контейнере docker. Когда я создаю приложение, я хочу тестировать / запускать его в Pycharm и в контейнере, который я создаю.
Как подключить Pycharm pro к определенному контейнеру или изображению (python или Anaconda)?
когда я создаю проект, нажмите pure python, а затем добавьте remote, затем нажмите docker, я получаю следующее результат
Я работаю на 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, вы получите следующее сообщение:
" Не удается подключиться: 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
на месте. Я должен получить сообщение "соединение успешно":
этот обходной путь потребует, чтобы команда socat выполнялась в любое время, когда вы хотите использовать docker из PyCharm.
если вы хотите сделать то же самое, но с TLS, вы можете настроить сертификаты и сделать их доступными для pycharm и socat и использовать socat OPENSSL-LISTEN
вместо TCP-LISTEN
характеристика. Я не буду вдаваться в подробности об этом для этого ответа.